在 Android 应用开发过程中无论是调试还是测试都要用到 Android 系统,有模拟器(虚拟机)和真机两种选择。

ABI

ABI(Applicaton Binary Interface),主要是 CPU 指令集和内存分页这两个最重要的硬件配置,现在已经运行在7个ABI:armeabi,armeabi-v7a (armeabi-v7a-hard),arm64-v8a,x86,x86_64,mips 和 mips64。

真机

真机在购买时已经选定了硬件ABI,ROM 的更新取决于 ROM 提供商, 就算解决了科学上网问题,Play Service 是否能正常运行也是个问题(国内 ROM 不会主动去通过 CTS 测试)。但做为 Andorid 开发者,真机还是必不可少的装备,Google Nexus系是首选,不必是最新的机型(除非做最新硬件适配),旧的硬件配置上应用性能没问题的话,更新的硬件应用性能自然更好。

模拟器

Android SDK

Android官方模拟器,基于 qemu,在 Android SDK 以 system image 展现。


特点:

  • 更新快
  • 有 Preview Channel
  • Googel APIs 原生支持 play service
    缺点:
    基于 qemu 的虚拟机,慢!
    Tips
    使用 x86 的 System Images,省去 arm虚拟机到 x86物理机的指令转换开销。

    Genymotion

    https://www.genymotion.com
    基于 VirtualBox 的模拟器,专注于模拟器产品,还提供更多功能的商业支持。
    安装后运行:

特点:

  • 基于不断更新的 VirtualBox,快!
  • 更好用的模拟器控制(右边栏)。

缺点:

  • 原生不支持 play service
  • Android 版本支持慢
    安装 play service
    下载 play service 相关 APK,注意选 x86,virtualbox 是 x86架构。
    http://opengapps.org/
    把下载的 zip 直接拖到运行的 genymotion 模拟器中就行了。

后记

真机/官方模拟器/Genymotion 配合使用,各取所长。

如果引入了第三方库,导致应用不能正常安装或运行,检查引入第三方库的 ABI 支持。例如国内很多 SDK 没有x86的支持,在开发时就只能使用 arm ABI。