android - 为 x86 构建具有 ARM 兼容性的 Android 11
问题描述
今年早些时候,谷歌发布了与 ARM 兼容的新 Android 11 x86 系统映像。
根据本文所写,这些新的兼容 ARM 的 Android 11 系统映像允许整个系统原生运行 x86,而需要 ARM 二进制文件的应用程序将在进程上下文中专门翻译为 ARM,这自然会导致比使用全 ARM 系统映像。
我的问题是——我想从 x86 的源代码编译我定制的 Android 11。有没有办法使用这些 ABI 构建映像,这些 ABI 介于基于 ARM 的应用程序和类似于 Google 发布的系统映像的操作系统之间?
解决方案
这是在以前的版本中也使用来自 intel 的 libhoudini 实现的,这也是带有 arm Native 的应用程序可以在 x86 设备上运行的原因。Android-11 仿真器具有 Arm 提供的仿真(Arm 到 x-86)库。任何此类解决方案都可以通过称为 NativeBridge 的 Android 运行时接口连接。来自应用程序本机库的所有 android 本机调用都将路由到在仿真环境中加载和运行的 arm 库。
例如,NativeBridge 将加载 Main Emulation Library 以创建 Emulation Environment,并且将有关联的 arm 库用于 android 随附的 main emulation library。因此,来自 android 应用程序的 Native Arm 库的任何调用都将转到 Main Emulation 库,后者将加载相关的 android Arm Native 库、emulate(arm to x86) 并执行本机 android 代码。
绝对不是您问题的完整答案。
推荐阅读
- memory - 为什么页面局部性会提高二级缓存命中率?
- javascript - msal.js 与移动浏览器有关
- android - Firebase:如何检查用户身份验证是否被另一个提供商覆盖?
- vba - VBA IsMissing 函数如何在幕后工作?
- commodore - 如何重新定位 65816 上的零页面
- haskell - Haskell - 列表理解中嵌套生成器的意外结果
- python - 如何在新终端中运行导入的模块 [Python]
- firebase - 任务':app:checkDebugDuplicateClasses'执行失败。,执行com.android.build.gradle.internal.tasks.CheckDuplica时发生故障
- kotlin - 可以是字符串或字符串数组的字段的 Kotlin 序列化
- android - 未解决的参考:它