5

有人可以告诉我我是否在这里遗漏了什么?我正在 shell 中尝试以下命令。

$ ./adb shell stop
$ ./adb shell setprop dalvik.vm.checkjni true
$ ./adb shell start

但是当我将 apk 安装到设备上时,Logcat 总是显示“CheckJNI 已关闭”。
我需要在 Eclipse 中做些什么来启用 XCheck:Jni 标志吗?

感谢您的帮助

4

3 回答 3

7

有四种不同的情况,一种用于 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 构建工具会为某些构建类型自动执行此操作。

于 2012-09-21T09:27:02.987 回答
3

有关所有替代方案,请参见http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html

于 2010-01-11T16:37:02.690 回答
0

这里也有一个关于如何使用 checkJNI 的部分:

http://www.netmite.com/android/mydroid/dalvik/docs/embedded-vm-control.html

于 2011-11-09T00:45:57.783 回答