我开发Android所用的IDE是Android Studio,而虚拟机是Genymotion,所以在与百度地图API连接的时候遇到了一些问题,大部分问题通过网上查资料得到了解决,所以我想总结一下,免得之后自己再遇到相似的问题(声明一下,这些方法也都是其他大神的方法,我只是总结,搬运而已)
问题1.Genymotion 模拟器安装好虚拟机后,启动时报错:VirtualBox – Error In supR3HardenedWinReSpawn
搜索了下这个问题的解决方案:
因为vboxdrv驱动没有安装或没有成功启动,64位的系统经常这样,找到安装目录下的vboxdrv文件夹,
如D:\Program Files\Oracle\VirtualBox\drivers\vboxdrv,右击VBoxDrv.inf,选安装,然后重启电脑。
正常情况下,vboxdrv应该是RUNNING状态
问题2.百度地图SDK的模版是Eclipse工具下开发的,而我用的是Android Studio,所以在导入百度地图的jar包后,按照模版进行地图展示后(Hello BaiduMap实例http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap),运行程序会出现以下错误:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
...}
报错 用的是studio ,.so文件也配置好了 一直报错
具体报错如下 :
Process: com.example.ai.tabhostdemo, PID: 1287
java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create() (tried Java_com_baidu_platform_comjni_map_commonmemcache_JNICommonMemCache_Create and Java_com_baidu_platform_comjni_map_commonmemcache_JNICommonMemCache_Create__)
at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Method)
at com.baidu.platform.comjni.map.commonmemcache.a.a(Unknown Source)
at com.baidu.platform.comapi.c.c.b(Unknown Source)
at com.baidu.mapapi.a.c(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
at com.example.ai.tabhostdemo.Act1.onCreate(Act1.java:46)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.startActivityNow(ActivityThread.java:2122)
at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:756)
at android.widget.TabHost.setCurrentTab(TabHost.java:420)
at android.widget.TabHost.addTab(TabHost.java:247)
at com.example.ai.tabhostdemo.MainActivity.setupIntent(MainActivity.java:97)
at com.example.ai.tabhostdemo.MainActivity.onCreate(MainActivity.java:43)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
搜索了下这个问题的解决方案:
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/buildproject 一定要注意你所用的开发工具。
问题3.INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法
在Android模拟器上安装apk的时候出现
这个错误提示的解决办法。
是由于使用了native libraries
INSTALL_FAILED_NO_MATCHING_ABIS is when you are trying to install an app that has native libraries and it doesn't have a native library for your cpu architecture. For example if you compiled an app for armv7 and are trying to install it on an emulator that uses the Intel architecture instead it will not work.
现在安卓模拟器的CPU/ABI一般有三种类型,INTEL X86,ARM,MIPS,
如果选择用INTEL X86出现INSTALL_FAILED_NO_MATCHING_ABIS的错误,那就改用ARM的
参考http://blog.csdn.net/wjr2012/article/details/16359113
问题4.如何让genymotion虚拟机联网
前提是必须打开虚拟机的WIFI,然后打开Oracle VM VirtualBox,先关闭你运行的虚拟机,打开设置,选择网络,在网络中,将网卡1的“连接方式”,改成“仅主机(Host-Only)适配器”,然后选择网卡2,将“连接方式”改写成“网络地址转换(NAT)”,并且打开“高级”,将控制芯片,改写成“准虚拟化网络(virtio-net)”,打开虚拟机,应该就好了。
Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败
错误原因: 创建应用时候 安全码 填入有错(签名或者包名字错了),或者说,和项目不对应
我搜索到一个插件可以使用,能够看到自己开发的应用的,基本上都是在API控制台申请AK的时候填写的包名或者SHA1不正确导致的(包名或者SHA1的获取详见官方教程)。可以看一下这个帖子,并且里面的插件,用起来很方便。
参考:http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=106461