最初のCordovaプロジェクトをセットアップし、OneSignal Push通知をインストールしました。これはすべて期待どおりに機能していますが、Android Developer Toolsはコンソールにこれを表示しています:
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
I/art: WaitForGcToComplete blocked for 6.202ms for cause Background
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
このメッセージは、アプリの実行中に常に出力されます。
それは何を意味し、どのような問題がある場合でもどのように解決できますか?
エントリはOneSignal
とは関係ありません。次のスレッドから、これはWebView
のバグのように見え、Host GPU
の使用中に列挙子でより頻繁に発生する可能性がありますisoff。これについては、以下のスレッドを参照してください。
問題は このChromiumバグ に関連しているようです。バグレポートの引用:
CheckJNIを有効にした最近のバージョンのARTでは、明らかにパラメーターが削除されることはないため、「JNI以外のローカル参照を削除しようとしてスレッドをダンプしています」というログキャットにスパム警告が出力されます。 native-> Java JNI呼び出しからローカル参照として返されるオブジェクト。この場合、ランタイムは何もしないので(警告を出力する以外)、これは実際には問題ではありませんが、checkjniを有効にして開発ビルドを実行したいWebViewを使用するアプリケーションにとってはスパムです。
これは、ホストGPUエミュレーションの問題とは異なります。ホストGPUエミュレーションの問題は、スパムの警告を出して実行するのではなく、アプリをクラッシュさせます。
私はかなり見てきましたが、ARTでCheckJNIを無効にする方法を見つけることができませんでした(Dalvikでも可能です)。私の現在の回避策は、logcatをフィルタリングすることです。これを行うには、logcatウィンドウでAndroid Studioの警告のテキストを選択し、右クリックして[Fold lines like this
。
開発者が自分のアプリでこのメッセージを受け取っている場合は、JNIメソッドのパラメーターとして指定されたローカル参照を誤って削除しないようにしてください。
つまり、これをしないでください:
JNIEXPORT void JNICALL Java_my_app_MyClass_myMethod
(JNIEnv* env, jobject self, jobject someParam) {
env->DeleteLocalRef(someParam);
}