gpt4 book ai didi

Android APK 拒绝在某些设备上将其 native .so 安装到/data 中

转载 作者:太空狗 更新时间:2023-10-29 13:35:32 24 4
gpt4 key购买 nike

我成功地从 Android NDK 编译并打包了 NativeActivity 示例。它在 Android 模拟器中运行良好,甚至在 TI OMAP3621 设备(Nook Color)上运行良好。但是,它在 Tegra 2 设备上崩溃。我还注意到 APK 中包含的 .so 被复制到 Nook 上的/dev/dev/com.example.native_activity/lib/libnative-activity.so,但不是在 Tegra 2 手机上。/data/data/com.example.native_activity/lib 目录确实创建了,但是应该在里面的 .so 不见了!我什至尝试手动复制其中的 .so,但当我尝试启动它时应用程序仍然崩溃。

为什么安装程序会允许安装 APK,但拒绝复制 .so?

模拟器运行的是Android 2.3.3Nook Color 正在运行 Android 4.0.4Tegra 2 手机运行 Android 2.3.7

更新:

事实证明,如果我手动将 .so 复制到/data,应用程序确实运行。所以现在的问题似乎是由于 aapt 的打包,因为当手机安装应用程序时,它不会复制 .so。我从命令行(不是通过 Eclipse)使用 aapt,所以在包含共享库时我可能没有使用正确的选项。有人可以解释 aapt 如何打包包含 native 共享库的 APK 吗?

另一个更新:

嗯,这很奇怪。我刚刚发现,如果我安装 APK,然后立即获取有关已安装应用程序的应用程序信息和“移动到 SD 卡”,它会起作用! .so 按预期复制到/data/data/com.example/native-activity。如果我随后选择“转移到手机”,它也能正常工作!

我在 Tegra 2 设备上运行 Cyanogenmod 7。为什么在移动/安装到 SD 卡而不是手机时这会起作用?

最佳答案

Library file not loading in 2.3 but loading in 4.0

Rebuild for all possible CPU/ABI combinations. Android 4 often tries to load armeabi-v7a while Android 2.x is happy with armeabi.

To do that, create/open Application.mk in the jni folder, and place the following:

APP_ABI := armeabi x86 armeabi-v7a mips

MIPS only if you've got NDK r8.

关于Android APK 拒绝在某些设备上将其 native .so 安装到/data 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com