实验室有工作需要修改安卓系统,然后在上面跑从安卓市场爬下来的大批量应用。
现在存在的问题是,从安卓市场里爬下来的应用都是 ARM 架构的,在编译好的安卓系统里安装时会报错
使用的安卓源码版本是android-9.0.0_r36
编译命令为
export OUT_DIR_COMMON_BASE=/out
source ./build/envsetup.sh
lunch sdk_phone_x86-userdebug
make -j20
# 编译完成后运行模拟器
emulator
之后用 adb 安装某新闻应用com.ss.android.article.news_8.3.3.apk
会报错
Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
推测是 apk 用到了 arm 架构的二进制文件,没办法在 x86 架构上跑。在网上搜索了一下,发现 x86 好像也是能运行 arm 模拟器的,但是运行效率会很低。于是换了一个目标文件夹自己尝试了一下编译了一个新版本 ( lunch 使用第一个默认选项 aosp_arm-eng )
make clobber
export OUT_DIR_COMMON_BASE=~/out-arm
source ./build/envsetup.sh
lunch aosp_arm-eng
make -j20
# 编译完成后运行模拟器
emulator
但是此时模拟器长时间黑屏,无法启动。不清楚是什么原因
之后搜索了一下,发现在 Android 文档中提到了运行 ARM 的方法
Android 9 和 11 系统映像对 ARM 二进制文件的支持
如果您之前因为应用依赖 ARM 二进制文件而无法使用 Android 模拟器,那么现在您可以使用 Android 9 x86 系统映像或任何 Android 11 系统映像来运行应用,而无需再下载特定的系统映像来运行 ARM 二进制文件。这些 Android 9 和 Android 11 系统映像默认支持 ARM,而且与采用完全 ARM 模拟的系统映像相比,它们提供显著提升的性能。
做了以下尝试:
com.ss.android.article.news_8.3.3.apk
的安装。(说明从 AS 获取的系统映像支持 ARM 架构的 apk )com.ss.android.article.news_8.3.3.apk
无法得到响应(输入命令后长时间内命令行无反馈)。对于低版本的 x86 模拟器的模拟器( Pixel2 XL,android7.1.1 x86 ),则会报错Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
(架构错误会报错,但架构正确也不一定能安装)现在我的主要问题是以下两个:
谢谢各位
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.