最近在做google maps的开发,当应用安装到测试机上时报出了Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY的错误,导致应用无法安装到手机上,通过一阵google之后,才发现之所以会产生这个错误,原来是测试机缺少了com.google.android.maps.jar包,木有办法,很多厂商为了打造自己的“OS”,将Android改的面目全非,尤其是国内厂商的手机,更是将google的服务阉割的一干二净。
至于解决方法嘛,网上不少网友采用的是将这个缺失的jar包手动copy到sysmem/framework目录下,具体怎么做,这里就不在详细叙述了,感兴趣的童鞋可自行google。在此,韬哥只想说一句,这种方式在自己测试时或许还可行,但当一款应用真正发出去的话,你是很难将这个jar包copy到sysmem/framework目录下的,除非用户的手机是已经Root过的,而且你的应用还获取了Root权限。可以说遇到这种情况,基本上无解,也就是google map无法集成了,这可能也是google帝国为了保证自家服务不被轻易移除的一种考虑吧。但是由于报出Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY这个错误时,会导致应用无法安装到手机上,怎么来避免这个问题呢?具体的作法是在user-library标签里,设置android:required="false" ,这样就可以让应用安装上去了。
真相在图中:
应用安装到手机上后,下一步就是采取Plan B来代替google map无法使用的问题,如果逻辑简单的话,可以直接使用WebView加载google map,这就需要在代码中判断只有缺失com.google.android.maps.jar这个包的手机,才使用webview,具体可以使用取巧的方式,就是加一个try...catch...
韬哥就在这写伪代码了,相信各位童鞋是能看得懂的:
try {
startActivty(new Intent(this, MapViewActivity.class));
} catch (Exception e) {
e.printStackTrace();
startActivity(new Intent(this, WebViewActivity.class));
}
MapViewActivity假设就是集成了google map的界面,剩下的工作就自己去处理吧,韬哥只能帮你们到这了。。。
Just enjoy yourself!