Android - 如何启用CheckJni进行NDK开发?

时间:2009-11-30 07:58:12

标签: debugging java-native-interface android-ndk native-methods

有人可以告诉我,如果我在这里遗失了什么吗? 我在shell中尝试以下命令。

$ ./adb shell stop $ ./adb shell setprop dalvik.vm.checkjni是的 $ ./adb shell start

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

感谢您的帮助 BD

3 个答案:

答案 0 :(得分:7)

有四种不同的情况,一种用于root设备,一种用于仿真器,一种用于常规设备,一种用于root或常规设备。


在root设备上我能够正常工作:

在adb:

adb shell

在此shell之后启动:

su
stop
setprop dalvik.vm.checkjni true
start

重新启动此设备后,我会看到日志消息:

CheckJNI is ON



对于其他案例,请参阅official docs中的一些理论:

  

有几种方法可以启用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构建工具会自动为某些构建类型执行此操作。

答案 1 :(得分:3)

答案 2 :(得分:0)

此处还有一节介绍如何使用checkJNI:

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