まさかAndroid Profilerのせいだとは思いもしなかった。
Android Profilerのタブに触れたが最後、強制終了するapkが生成されるようになります。
環境
Android Studio 3.1.2 (3.1.1でも報告がある)
Android 8.0.0
compileSdkVersion 27 buildToolsVersion '27.0.3'
再現手順
fragmentManager.beginTransaction() fragmentManager.popBackStack()
重要なのはAndroid Profilerを開いた後に行うことです。デプロイした後にAndroid Profilerを開いてもその時は問題ありません。次に生成したときが問題なのです。
回避方法
Android Studioを再起動しAndroid Profilerを起動しないようにしましょう。
原因考察
Android Profilerを開いた後に生成したapkのAndroid Profilerの画面です。
「あ」と入力しました。
こんな感じで入力された文字が反映されています。途中から開いた場合はこの表示はありません。なんでAndroid Profilerって思いましたがこんなことをやっているんですね。
エラー文
closeConnectionしようとしたけど既にFragmentが破棄されていてnullで落ちたって感じなんでしょうか。ここらへんは詳しくないのでなんとも言えません…
android.view.inputmethod.InputConnectionって文字入力を横取りしてたりするんですかね?
Android Profiler起動後に生成したapkって重いんですよね。文字入力のその処理が重いから(他にもそういう処理がある?)Android Profilerが起動してなければその処理を埋め込んでいないapkが生成されるのかなと思いました。
Fatal Exception: java.lang.NullPointerException Attempt to invoke interface method 'void android.view.inputmethod.InputConnection.closeConnection()' on a null object reference android.view.inputmethod.InputConnectionWrapper.closeConnection (InputConnectionWrapper.java:270) com.android.internal.view.IInputConnectionWrapper.executeMessage (IInputConnectionWrapper.java:541) com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage (IInputConnectionWrapper.java:85) android.os.Handler.dispatchMessage (Handler.java:105) android.os.Looper.loop (Looper.java:251) android.app.ActivityThread.main (ActivityThread.java:6589) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767) ........
おわりに
最近OSのバグも踏んだし今回開発に関するバグを踏んだしなんなんだと言いたい。