CheckJNI в Android: как отключить/включить (на эмуляторе)? Документация, похоже, неисправна

Я потратил некоторое время на изучение режима checkjni, используя эмулятор Android с моим приложением. Несмотря на то, что написано (в http://android-developers.blogspot.com/2011/11/jni-local-reference-changes-in-ics.html), что CheckJNI включен по умолчанию, если debuggable="true" & targetSdkVersion не ниже Ice Cream Sandwich (в файле AndroidManifest.xml) - дамп отладочного вывода CheckJNI (предупреждения и ошибки) все еще печатается в DDMS, даже если я использую Gingerbread значения и устанавливаю его на Gingerbread эмулятор.

Единственное различие, которое я обнаружил, это то, что предупреждения CheckJNI на эмуляторе Ice Cream Sandwich (независимо от того, какие значения были в моем файле AndroidManifest.xml) приведут к аварийному завершению работы приложения с соответствующим предупреждением - в то время как они будут выведены только на эмуляторе Gingerbread (я тестировал DeleteGlobalRef, используемый на локальной ссылке, чтобы вызвать это предупреждение).

Есть два неинформативных журнала, которые печатаются в соответствии с AndroidManifest.xml - Но на журналы режима CheckJNI это не влияет.

Вот журналы -

#На эмуляторе ICS После установки приложения:

 01-19 08:43:01.491: D/AndroidRuntime(32): CheckJNI is ON

Loading the app:
01-19 08:32:26.617: D/dalvikvm(590): Not late-enabling CheckJNI (already on)

(The last line is printed only when debuggable="true")

01-19 08:32:27.066: I/dalvikvm(590): Turning on JNI app bug workarounds for target SDK version 10...

(The last line is printed only when targetSdkVersion=10)

Код ошибки (крах):

01-19 08:37:56.176: W/dalvikvm(651): JNI WARNING: DeleteGlobalRef on non-global 0x41339550 (type=1)

...

01-19 08:37:56.187: E/dalvikvm(651): VM aborting

01-19 08:37:56.187: A/libc(651): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)

#На Gingerbread:

После установки приложения:

01-19 08:43:01.491: D/AndroidRuntime(32): CheckJNI is ON

Loading the app:

Нет важных журналов

Код ошибки (без краха):

01-19 08:45:20.079: W/dalvikvm(304): JNI: DeleteGlobalRef(0x40608718) failed to find entry (valid=1)

Итак, мой вопрос в том, как я должен включить/выключить его - и как он должен влиять на приложение (или журналы) по-другому, когда включен?

Спасибо.

7
задан kmonsoor 22 January 2013 в 12:16
поделиться