Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 503|回复: 0

android手机安装时缺少google map api 的解决方法

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-5-2 01:51:21 | 显示全部楼层 |阅读模式
    android手机安装时缺少google map api 的解决方法

    2012-03-05 10:32






    有些android手机,机器里没有com.google.android.maps.jar这个包。

    所以当开发使用了google
    map
    api
    的程序时,即使在模拟器上没有问题,但是在真机上无法安装,安装时报INSTALL_FAILED_MISSING_SHARED_LIBRARY错误。

    解决办法可以手动将缺少的文件传输到手机里,但是无法批量处理。
    http://www.slatedroid.com/topic/25334-fixing-the-install-failed-missing-shared-library-error/

    另一种解决方法,可以根本不使用google
    map
    api

    设置AndroidManifest.xml文件


    Java代码



    1. <uses-library android:name="com.google.android.maps" android:required="false"/>     

    <uses-library android:name="com.google.android.maps"
    android:required="false"/>   




    在代码中,来判断是否可用google map
    api


    Java代码



    1. try{  
    2.     Class.forName("com.google.android.maps.MapActivity");  
    3.    }catch(Exception e)  
    4.    {  
    5.    } 

    try{


        Class.forName("com.google.android.maps.MapActivity");


       }catch(Exception e)


       {


       }




    这种解决办法,可以使程序正常安装,正常运行。
    不过有可能缺少功能。
    缺少的功能可以通过另外的方法实现。

     

     

     

     

    Android真机没有google_add-on之后

    2012-05-19

    Preview
    本文能解决的问题:
    1. INSTALL_FAILED_MISSING_SHARED_LIBRARY
    2. 向没有Google APIs的手机内核注入谷歌服务
    3. 在真机上调试Google Maps程序

        由于有关部门与谷歌的冷战关系,不仅导致google一系列网路服务在国内举步维艰,甚至戕害得google的手机服务必须阉割。基于Android手机的一些列google add-on服务在国行手机上都不会出现。
        笔者在折腾Android软件开发的时候由于用到了Google APIs Level 10里面的com.google.android.maps.jar包,学习一个小demo,在模拟器上能够运行,在华为的破手机上能运行,在魅族的手机上能运行,在小米的手机上能运行,好吧,重点来了,在Google自己的Moto手机Atrix2上不能运行。

    以下是在Atrix2上debug程序时Console与Logcat出错记录

    ?
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    Console错误信息
    WARNING: Application doe not specify an API level requirement!
    Device API version is 10 (Android 2.3.6)
    Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
    Please check logcat output for more details
    Lanch canceled!
    Logcat错误信息
    Tag: Package
    Text: Package 我的包名 requires unavailable shared library com.google.android.maps;failing!

      
        在百度与谷歌上和膝盖已经中过箭的前辈们惺惺相惜了一会儿才知道,Moto、三星国行基本都阉割了Google APIs,(魅族和小米却没有)。解决方法大致有两个方向:
    方向一从自己的软件代码着手,方法有两个:[1]
        1)维护两条代码分支:
        一条分支是针对于内置有Google Map add-on的Android真机,另一条分支是没有内置有Google Map add-on的Android真机。 但是这样做会增加维护成本,而且粗心的用户可能会在自己的机器上安装了不匹配的分支,从而降低了软件的友好度。
        2)仍然只保留一条代码分支:
        国外一位大牛指出:在<uses-library>标签中还包含了一个没有公布的属性"android:required",你可以将com.google.android.maps库的这个属性设置为false,即:

    ?
    1
    2
    <!-- The "android:required" attribute was added in API level 5 (Android 2.0) -->
    < uses-library android:name = "com.google.android.maps" android:required = "false" />

        这代表如果在目标机器上内置了Google Map add-on,则可以正常使用应用;如果目标机器没有内置Google Map add-on,也可以成功安装应用。但是开发人员需要在代码中自行判断Google Map add-on是否可用,举例如下:

    ?
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    try {
        Class.forName( "com.google.android.maps.MapActivity" );
    } catch (Exception e) {
        Toast.makeText(MainActivity. this , "Oop! google地图不可用" , Toast.LENGTH_SHORT).show();
        return ;
    }
    Intent intent = new Intent();
    intent.setClass(MainActivity. this , MyMapActivity. class );
    startActivity(intent);

    方向二、从该死的太监手机入手,方法也有两个:
        1)刷机:
        不带Google Add-On的国行就刷成带Google Add-On的亚太、港行、欧美版本,国内不知名的山寨机,试试MIUI吧。
        2)注入:
        假如你也像笔者一样有正版控,那么就用注入的方法,将手机中缺少的google add-on服务注入到内核之中。之后的所有篇幅将只介绍注入的方法,以笔者的Moto Atrix2为例。
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=分=-=
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-隔-=-
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=墙=-=
      1. 先获得手机的root权限。腾讯的应用助手已经可以一键获取大多数手机的Root权限了,但是由于笔者的Atrix2最近官方更新至2.3.6,屏蔽了一般root,应用助手无法推倒,想要root摩托刀锋系列的,可以传送至此http://jween.com/root_atrix2

    2. 先将附件的压缩包Add_on.zip[2]中的3个文件拷贝的手机的Sdcard上, 用RE管理器[3],将这3个文件移动到相应目录,目录和相应的文件见下:
    /system/framework/com.google.android.maps.jar;
    /system/etc/permissions/com.google.android.maps.xml;
    /data/apps/NetworkLocation.apk

    3. 修改这三个文件的权限如下图

    4. 重启手机,焕然一新。

    以下为注入add-on之后,成功调用了Google Maps的罪证

    附件与引用:
    [1].http://www.cnblogs.com/gansc23/archive/2011/02/28/1967207.html
    [2].下载Add_on.zip
    [3].下载RE管理器v2.16超级权限汉化版

    分类:技术 | 标签: add onAndroidGoogle地图 |
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-12 09:51 , Processed in 0.058604 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表