在 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。