有些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的罪证

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

  1. 刷机命令android手机刷机后,wifi无法使用的解决方法

    刷机命令android手机刷机后,wifi无法使用的解决方法 https://blog.csdn.net/wxz1179503422/article/details/83031909

  2. 关于 Chrome插件安装时程序包无效:CRX_HEADER_INVALID 的解决方法

    关于 Chrome插件安装时程序包无效:"CRX_HEADER_INVALID" 的解决方法 打开chorme的扩展程序(设置-->更多工具-->扩展程序)chrome ...

  3. Android手机中“本地号码”显示为“未知”的解决方法

    在android手机开发中有时要获取手机号,在较老的SIM卡中移动运营商会把号码默认写入到SIM卡中,但新的SIM卡往往空着.要想获取手机号必须手动设置到SIM卡中.智能手机android系统中&qu ...

  4. mysql安装时卡在starting server的解决方法

    mySql安装一直停留在starting Server主要由两方面原因造成: 第一:主要是安装mySql时需要生成日志与错误文件,安装时不勾选show Advanced Options,则安装过程中会 ...

  5. cad安装日志文件发生错误_CAD安装时发生错误1603的详细解决方法

    我在帮客户安装2007时遇见过同样问题,通过以下几中方式,问题解决. 1.在运行PC连接软件, 如:PC Anywhere 或者 GotoMyPC. 2.通过"Windows 更新" ...

  6. AntiARP安装时出现windows installer package错误解决方法

    今天给服务器安装,ARP防火墙(AntiARP)V4.2 破解版,快结束的时候,弹出错误:there is a problem with this windows installer package. ...

  7. 3dsmax2013安装时提示visual2005c++库问题的解决方法

    使用DirectX工具对C++库进行修复 ,网上百度下载即可,不再多说: 安装包的解压缩目录以及软件的安装目录不能含有中文!! 这样就可以正常安装了.

  8. Cocos2d-js Android手机上微信内置浏览器黑屏解决方法

    1.在Cocos2d-js开发过程中 通常会遇到很多问题.本次解决在安卓手机上的微信内置浏览器黑屏问题. 2.微信的内置浏览器和其它专业的浏览器不同.微信内置浏览器用x5内核.在一些方面比其它专业的浏 ...

  9. SQL Server安装时COM+目录要求问题的解决方法

    转载自:http://www.laoy8.cn/Html/?1378.html 很早就不用SQLServer 2005了,今天突然接到个项目,说非用SQLServer不可,没办法,只好把久违的老朋友装 ...

最新文章

  1. DDD助力平台能力复用
  2. java 底层运行_从表面到底层丨Java和JVM的运行原理,现在带给你
  3. python3.6 在 windows10 下使用pycrypto
  4. Python学习笔记:I/O编程
  5. Project Chameleon Work In Progress 11
  6. 9277用计算机,关于计算机常用进制以及进制之间的转换笔记
  7. 【服务器实战搭建】centos7下使用yum安装mysql
  8. 高程3总结#第20章JSON
  9. 2017北京理工大学上机(二):二分查找
  10. 国家统计局指标数据深入分析
  11. [电路笔记]正弦稳态电路分析
  12. 行为树 --- [3] BehaviorTree.CPP在Windows下的使用(基于VSCode)
  13. 前端移动端开发(基础)
  14. 如何写数据分析岗位简历?看完瞬间秒懂
  15. JS—— 常用图片后缀正则校验
  16. 怎样设置linux权限,Linux 权限设置chmod
  17. 在 M1/M2 芯片的Mac上安装最新原生 ruby 的超简单方法(无需rvm)
  18. html 隐藏表格某一行,layui怎么隐藏表格行?
  19. 用python在excel中做批量计算(包括单元格为空值时的处理情况)
  20. 优秀计算机基础微课案例,大学计算机基础——大学微课实用案例教学

热门文章

  1. android app 补丁,app检查补丁更新接口在android O系统报错
  2. 镍铬镍氢充电电池激活办法
  3. python画图零基础入门教程_Python画图学习入门教程
  4. html 关闭当前页面,js关闭当前页面/关闭当前窗口(兼容所有浏览器)
  5. 免费PDF转Word?有这几个网站就够了
  6. python统计文件行数与字数_Python实现统计文本文件字数的方法
  7. js 禁止修改地址栏参数获取数据
  8. git命令自动填充用户名与密码
  9. GPOS - Glyph定位表
  10. 使用Fiddler进行抓包(Android)