首先,如果你的APP可以正常安装包括第三方或者自己编译的,那么就用x86,因为这个架构的虚拟机很快;如果像我一样,编译出的apk中的so都是ARM的,那么就需要ARM架构的虚拟机,否则就会报下面的错误。x86兼容性不够 , 很多app装不上 或者装上了不能玩。市面上的模拟器大多是x86的,因此如果安装不上的话,可以考虑是否是不支持x86架构的原因。用的谷歌官方的模拟器, intel x86 系统镜像 ,开了 kvm 加速 ,结果装了几个应用都失败,如 qq 各种版本、京东客户端、触宝输入法等。提示信息是 Failure [INSTALL_FAILED_NO_MATCHING_ABIS],应该是这些应用没适配 x86 的设备。百度外卖、 x-plore 安装成功。

今天使用模拟器安装应用软件运行后,发现报错如下:

MissingLibraryException: lib/x86/libgnustl_shared.so 

02-07 02:53:39.122 7607-7639/com.gala.video E/AndroidRuntime: FATAL EXCEPTION: JobManager-5-12
    Process: com.gala.video, PID: 7607
    com.getkeepsafe.relinker.MissingLibraryException: lib/x86/libgnustl_shared.so
        at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:85)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:180)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:92)

我这边的模拟器是在创建时Android studio默认的配置,是x86架构的模拟器。系统为什么默认是这个架构的模拟器呢?原来windows安装虚拟机之前我们都必须打开BIOS里面的虚拟设备开关:在 Intel CPU 的主机上为了加速AVD模拟器的运行速度,需要启用 HAXM。

  • 第一步:先进入 BIOS 启用 VT(Virtualization Technology)虚拟技术选项;
  • 第二步:到Android studio的SDK Manager中下载Intel x86 Emulator Accelerator(HAXM install)

然后我们创建一个模拟器后,默认的配置就是x86架构的,优点就是速度很快,但是他有很大的缺点就是兼容性不够,导致很多编译出来是ARM架构的应用程序无法安装,或者安装后启动报错。上面的报错的意思就是,你开启的模拟器是x86的,所以你APP里面相关的so库也要是x86的,但是在你打包好的APP中只找到了ARM的这个so库,所以就报错了。那么我们要做的就是创建一个ARM架构的虚拟机:

我们配置一个ARM处理器架构的虚拟机如下图:

           

 选择ARM虚拟机时,右下角会提示,这个要比x86的慢十倍以上,亲测,可能慢不止十倍。

当然你可以把虚拟机内存提高一些:

上面完成之后,启动我们的ARM虚拟机,尝试安装下apk即可

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐