ルート化されたデバイス用、エミュレーター用、通常のデバイス用、ルート化されたデバイスまたは通常のデバイス用の 4 つのケースがあります。
ルート化されたデバイスでは、次のように機能させることができました。
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 ビルド ツールは、特定のビルド タイプに対してこれを自動的に行うことに注意してください。