2009-11-30 10 views
5

Czy ktoś może mi powiedzieć, czy coś tu brakuje? Próbuję następujące polecenia w powłoce.Android - Jak włączyć CheckJni dla rozwoju NDK?

$ ./adb shell zatrzymać $ ./adb shell setprop dalvik.vm.checkjni prawda $ ./adb shell rozpocząć

Ale Logcat zawsze pokazuje "CheckJNI jest OFF", kiedy zainstalować apk na urządzenie .. Czy jest coś innego w zaćmieniu, które muszę zrobić, aby włączyć flagę XCheck: Jni?

Dzięki za wszelką pomoc BD

+0

plz wspomnieć, jak kiedykolwiek rozwiązałeś swój problem. To będzie bardzo pomocne ... dzięki – aProgrammer

Odpowiedz

7

Nie ma cztery różne przypadki, jeden dla urządzenia ukorzenionych, jeden dla emulatora, jeden dla regularnego urządzenia i jeden dla ukorzenione lub regularne urządzenie.


na urządzeniu ukorzenionych udało mi się dostać to działa tak:

W adb:

adb shell 

W uruchomiony po tej powłoki:

su 
stop 
setprop dalvik.vm.checkjni true 
start 

po tym urządzenie zostało zrestartowane i podczas rozruchu widzę komunikat dziennika:

CheckJNI is ON 



W innych przypadkach zobaczyć jakąś teorię od official docs:

Istnieje kilka sposobów umożliwiających CheckJNI.

Jeśli korzystasz z emulatora, funkcja CheckJNI jest domyślnie włączona.

Jeśli masz zakorzenione urządzenie, można użyć następującej sekwencji poleceń, aby ponownie uruchomić moduł wykonawczy z CheckJNI włączona:

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

W każdym z tych przypadków, zobaczysz coś takiego w swoim LogCat wyjście gdy środowisko wykonawcze rozpoczyna:

D AndroidRuntime: CheckJNI is ON 

Jeśli masz regularne urządzenia, można użyć następującego polecenia:

adb shell setprop debug.checkjni 1 

Nie wpłynie to na aplikacje już uruchomione, ale każda uruchomiona od tego momentu aplikacja będzie miała włączony CheckJNI. (Zmień właściwość na inną wartość lub po prostu uruchom ponownie, spowoduje ponowne wyłączenie funkcji CheckJNI.) W tym przypadku, zobaczysz coś takiego w swoim wyjściu logcat następnym razem aplikacja uruchamia:

D Late-enabling CheckJNI 

Można również ustawić android: debuggable atrybut manifestu Twojej aplikacji, aby włączyć CheckJNI tylko dla Twojej aplikacji. Zauważ, że narzędzia do budowania Androida zrobią to automatycznie dla pewnych typów kompilacji.

Powiązane problemy