Eltöltöttem egy kis időt a checkjni mód vizsgálatával egy Android emulátor segítségével az alkalmazásommal. Bár meg van írva (a http://android-developers.blogspot.com/2011/11/jni-local-reference-changes-in-ics.html), hogy a CheckJNI alapértelmezés szerint be van kapcsolva, ha a debuggable="true" & targetSdkVersion legalább Ice Cream Szendvics (az AndroidManifest.xml fájlban) – A CheckJNI hibakeresési kimeneti kiíratása (figyelmeztetés és hibák) továbbra is kinyomtatásra kerül a DDMS-ben, még akkor is, ha Gingerbread értékeket használok, és Gingerbread emulátorra telepítem.
Az egyetlen különbség, amit találtam, az az, hogy az Ice Cream Sandwich emulátoron lévő CheckJNI figyelmeztetések (függetlenül attól, hogy mik voltak az értékek az AndroidManifest.xml fájlban) az alkalmazás összeomlását okozzák a tiszteletben tartott figyelmeztetéssel – miközben csak egy Gingerbread emulátor (teszteltem egy DeleteGlobalRef-et, amelyet helyi hivatkozáson használnak a figyelmeztetés előidézésére).
Két nem információs napló van kinyomtatva az AndroidManifest.xml-nek megfelelően – a CheckJNI mód naplóit azonban ez nem érinti.
Itt vannak a naplók -
#Az ICS-emulátoron Az alkalmazás telepítése után:
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)
Hibakódnál (összeomlás):
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)
#Mézeskalácson:
Az alkalmazás telepítése után:
01-19 08:43:01.491: D/AndroidRuntime(32): CheckJNI is ON
Loading the app:
Nincsenek fontos naplók
Hibakódnál (nincs összeomlás):
01-19 08:45:20.079: W/dalvikvm(304): JNI: DeleteGlobalRef(0x40608718) failed to find entry (valid=1)
Tehát a kérdésem az, hogy hogyan kapcsoljam be/ki – és hogyan befolyásolja másképp az alkalmazást (vagy a naplókat), amikor be van kapcsolva?
Kösz.