【发布时间】:2014-01-11 23:44:13
【问题描述】:
我有一个复杂的 Andriod 应用程序(Java 和本机代码),最初是为 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 shell 和adb 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显示它与“stale reference”错误。
我也将 AndroidManifest.xml 中的 minSdkVersion 和 targetSdkverion 设置为“=8”,但应用程序构建目录中的 project.properties 文件具有条目 target=android-19,因为这是由ant 构建工具。
我是否必须使用 Android-13(“冰淇淋三明治”之前的版本)重新构建所有内容,才能让我的应用按照构建时的方式运行?任何建议都非常感谢。我是 Android 开发的新手,它是多个 Sdk 和 Ndk 的暴风雪。
【问题讨论】:
标签: android android-ndk adb dalvik