gpt4 book ai didi

android - 在 Android 4.x 设备(无根)上,是否可以从应用程序中禁用 checkJNI?

转载 作者:行者123 更新时间:2023-11-30 03:10:31 26 4
gpt4 key购买 nike

我有一个复杂的 Andriod 应用程序(Java 和 native 代码)最初是为 Android 2.x 系列设备构建的。我已经在 Android 4.3 版本的模拟器上工作了,但我不得不使用 adb shell stop/adb shell setprop dalvik.vm.checkjni false/adb shell start 技巧来关闭checkJNI 错误检查。代码使用非全局指针,但运行良好,没有明显的错误或问题。

我已经配置了我的 Linux 机器,所以 adb 可以正确地看到一个“Digital2”的低成本 Android 平板电脑,我现在可以将 .apk 文件加载到设备上。但该设备运行的是 Android 4.1.1,内核版本 3.0.8,并且似乎已将 checkjni 设置为 true。

我已经尝试了几种方法来禁用设备上的 checkjni,但都没有用,而且设备没有 root。我可以使用 adb shelladb push,但不能使用 /data 目录。尝试 su 或运行 adb root 失败,因此推送 local.prop 文件不起作用。

我已经使用最新的(2013 年 12 月 27 日)开发环境(Android 4.3、android-ndk-r9c)构建了代码,并且该应用程序在模拟器上运行良好,checkJNI 设置为 0。我有什么办法可以告诉 4.x Android 设备 - 在应用程序代码中,并使用 NDK-r9c - 不要在 dalvik VM 上使用 checkJNI? (注意:我试过adb shell setprop debug.checkjni 0,没有效果。)我可以成功安装和卸载应用程序,但是adb logcat显示它与“过时的引用”错误有关。

我还在 AndroidManifest.xml 中将 minSdkVersiontargetSdkverion 设置为“=8”,但是 project.properties 文件在应用构建目录包含条目 target=android-19,因为这是由 ant 构建工具自动创建的。

我是否必须使用 Android-13(“Ice Cream Sandwich”之前的版本)重建所有内容才能使我的应用按照构建时的方式运行?任何建议都非常感谢。我是 Android 开发的新手,它是多个 Sdk 和 Ndk 的暴风雪。

最佳答案

不,一旦您的应用程序运行,您就无法更改 CheckJNI 设置,也无法针对每个应用程序进行设置。

但是...我不知道 CheckJNI 误报的任何情况。如果它标记了一个问题,那么确实存在一个问题,如果您不修复它,您的应用将来可能会崩溃,即使它现在看起来工作正常。

如果您需要帮助追踪它,请使用显示故障报告和故障点代码的 logcat 输出发布问题。您应该有一个来自 native 中止的完整回溯,您可以从中获取行号(有关 addr2line 的更多信息,请参见例如 this postthis post)。

关于android - 在 Android 4.x 设备(无根)上,是否可以从应用程序中禁用 checkJNI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069360/

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