Unityでアプリ開発中。Androidエミュレータで動作確認をしていると異常終了するので、原因を探るためにmonitorでログを見ようとしたところ、まさかの起動しない。
エラーログらしきものを出力して終了してしまいます。
Android Stadioでプロジェクトを作っていると、Android Stadioのメニューバーからmonitorを起動できるみたいですが、今回はそうじゃないのでコンソールから直接monitorを起動。
/Users/(ユーザ名)/Library/Android/sdk/tools/monitor
ログを確認してくれといわれるので、表示されている場所のログを確認。中身はこんな感じ。
画像は切り取ってありますが、かなり長いエラーログです…。
読むのが面倒で、しかも読んでも解決に繋がらなくて色々振り回されたのですが、最終的に注目すべきは上部のjavaの記述。
「java.version=9.0.4」って書いてあるんですよね。確かに、うちのMacにはjava9がインストールされています。
しかし、Android Stadioはjava9に非対応…。
ということで、”JAVA_HOME”にjdk1.8のパスを記述して起動を試みたのですが…失敗します。
先ほどの場所に出力されるログを確認すると、まだjava9を参照しているんです。
“JAVA_HOME”を参照してるわけじゃないんですね。
じゃあ、起動オプションで設定できないかと、monitorの中身を確認。
どうやらとある場所のmonitorを起動していて、同じ階層にiniファイルがあった。
場所は以下。
/Users/(ユーザ名)/Library/Android/sdk/tools/lib/monitor-x86_64/monitor.app/Contents/MacOS/monitor.ini
iniファイルの書き方を検索し、javaバージョンを指定できるオプションがないかなと検索。
eclipse.iniの情報がたくさん出てきてとても参考になった。
そして以下の場所にオプションを追加。
※jdkの参照先は各々で変更してください。
ちなみに、eclipseだとWindows環境での情報が多いので、「〜/java」ではなく「〜/javaw」の指定ばかり見かけました。
2つの違いは、実行時にコンソールなどの画面起動するかどうかです。
javaは起動するし、javawは起動しません。
しかしjavawはWindowsにしかないので、Macユーザはjavaでいいのです。
iniファイルにオプションを追加し再び起動すると、無事成功。
以上です。ここまで読んでいただきありがとうございました。