有人可以告诉我我是否在这里遗漏了什么?我正在 shell 中尝试以下命令。
$ ./adb shell stop
$ ./adb shell setprop dalvik.vm.checkjni true
$ ./adb shell start
但是当我将 apk 安装到设备上时,Logcat 总是显示“CheckJNI 已关闭”。
我需要在 Eclipse 中做些什么来启用 XCheck:Jni 标志吗?
感谢您的帮助
有人可以告诉我我是否在这里遗漏了什么?我正在 shell 中尝试以下命令。
$ ./adb shell stop
$ ./adb shell setprop dalvik.vm.checkjni true
$ ./adb shell start
但是当我将 apk 安装到设备上时,Logcat 总是显示“CheckJNI 已关闭”。
我需要在 Eclipse 中做些什么来启用 XCheck:Jni 标志吗?
感谢您的帮助
有四种不同的情况,一种用于 root 设备,一种用于仿真器,一种用于常规设备,一种用于 root 或常规设备。
在有根设备上,我能够让它工作:
在亚行:
adb shell
在这个 shell 之后启动:
su
stop
setprop dalvik.vm.checkjni true
start
重新启动此设备后,在启动时我看到日志消息:
CheckJNI is ON
对于其他情况,请参阅官方文档中的一些理论:
有几种方法可以启用 CheckJNI。
如果您使用的是模拟器,CheckJNI 默认是打开的。
如果您有 root 设备,则可以使用以下命令序列在启用 CheckJNI 的情况下重新启动运行时:
adb shell stop adb shell setprop dalvik.vm.checkjni true adb shell start
在任何一种情况下,当运行时启动时,您都会在 logcat 输出中看到类似的内容:
D AndroidRuntime: CheckJNI is ON
如果您有普通设备,则可以使用以下命令:
adb shell setprop debug.checkjni 1
这不会影响已经运行的应用程序,但是从那时起启动的任何应用程序都将启用 CheckJNI。(将属性更改为任何其他值或简单地重新启动将再次禁用 CheckJNI。)在这种情况下,下次启动应用程序时,您将在 logcat 输出中看到类似的内容:
D Late-enabling CheckJNI
您还可以在应用程序的清单中设置android:debuggable属性以仅为您的应用程序打开 CheckJNI。请注意,Android 构建工具会为某些构建类型自动执行此操作。
有关所有替代方案,请参见http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html。
这里也有一个关于如何使用 checkJNI 的部分:
http://www.netmite.com/android/mydroid/dalvik/docs/embedded-vm-control.html