【问题标题】:Android - How to enable CheckJni for NDK development?Android - 如何为 NDK 开发启用 CheckJni?
【发布时间】:2026-01-03 16:00:01
【问题描述】:

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

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

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

感谢您的帮助 BD

【问题讨论】:

  • 请提及您是如何解决您的问题的。这将很有帮助...谢谢

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


【解决方案1】:
【解决方案2】:

这里也有一节介绍如何使用 checkJNI:

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

【讨论】:

    【解决方案3】:

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


    在有根设备上我能够让它工作:

    在亚行中:

    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 构建工具会针对某些构建类型自动执行此操作。

    【讨论】:

      最近更新 更多