Android - Как включить CheckJni для разработки NDK? - PullRequest
5 голосов
/ 30 ноября 2009

Может кто-нибудь сказать мне, если я что-то здесь упускаю? Я пытаюсь следующие команды в оболочке.

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

Но Logcat всегда показывает "CheckJNI выключен", когда я устанавливаю APK на устройство.
Есть ли что-то еще в затмении, что мне нужно сделать, чтобы включить флаг XCheck: Jni?

Спасибо за любую помощь BD

Ответы [ 3 ]

7 голосов
/ 21 сентября 2012

Существует четыре различных случая: один для корневого устройства, один для эмулятора, один для обычного устройства и один для корневого или обычного устройства.


На рутированном устройстве я смог заставить его работать так:

В adb:

adb shell

В запущен после этой оболочки:

su
stop
setprop dalvik.vm.checkjni true
start

После того, как это устройство было перезагружено и при загрузке я вижу сообщение журнала:

CheckJNI is ON



Для других случаев см. Некоторую теорию из официальных документов :

Существует несколько способов включить CheckJNI.

Если вы используете эмулятор, CheckJNI включен по умолчанию.

Если у вас есть рутированное устройство, вы можете использовать следующую последовательность команд для перезапуска среды выполнения с включенным 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 будут делать это автоматически для определенных типов сборки.

3 голосов
/ 11 января 2010
0 голосов
/ 09 ноября 2011

Здесь также есть раздел о том, как использовать checkJNI:

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

...