【发布时间】:2018-09-08 10:42:01
【问题描述】:
这是一个第 3 方库,我无权访问它的源代码 - 要求他们为 ARM64 构建到目前为止没有任何效果,尽管他们声称 Android 8.0(仅限 ARM64)将得到“支持”。
以下 Java 代码在 armv7l 上运行,但在 aarch64 上运行失败:
static {
switch(System.getProperty("os.arch")){
case "aarch64":
case "armv7l":
try {
System.loadLibrary("somelibrary");
} catch(UnsatisfiedLinkError e) {
Log.e(LOG_TAG, e.getMessage());
}
break;
}
}
dlopen 失败:“/data/app/ ... /base.apk!/lib/arm64-v8a/somelibrary.so”是 32 位而不是 64 位。
似乎AArch32 执行将是“可选的”(甚至可能不可用) - 因为(很可能)必须将 CPU 从AArch64 切换到AArch32 执行。例如。此幻灯片涵盖了该主题:Linux on AArch64 ARM 64-bit Architecture。
问:有没有办法在 64 位 Android 设备上使用 32 位库?
事实证明,Google Play 不接受这 - 需要提供 ARM64 本机程序集。
【问题讨论】:
-
“尽管他们声称 Android 8.0(仅限 ARM64)”:是什么让您认为 Android 8.x 只有 64 位?
-
@Marged 因为没有 32 位 QEMU 映像(API 级别 25 是最后一个); Nexus 6 也没有 Oreo 更新,它是 Snapdragon 805(但只有 Nexus 6 P,它是 Snapdragon 810)......任何运行 Oreo 的
armv7l设备示例(自定义 ROM 除外,类似 SIX )? -
好的,但 Android 8.x 也可以在(物理)32 位设备上运行
-
SIX ROM 确实证明,这是可能的,但谷歌停止支持它。
标签: android native android-8.0-oreo arm64