【Unity】【Android】 UnityでAndroidアプリを書き出す時の忘備録
エラーが出たとこの箇条書き
・新しめのAndroidSDKはNG、sdk-toolsの内容がUnityの期待する構成とは異なるものになっている
クソAndroidStudioのクソ改変のせいらしい。出るのは以下のエラー。
色々入ってる、古めの方が正解。新しくしちゃった場合は以下から落とせる。
http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip
・JDK9はNG、ライブラリの内容がAndroidの期待する構成とは異なるものになっている
CommandInvokationFailure: Failed to build apk.
BASE64Encorderがないよっつってエラーが起きていた。
Caused by: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder
at com.android.sdklib.internal.build.SignedJarBuilder.<init>(SignedJarBuilder.java:177)
SignedJarBuilder.java:177は以下
>> mBase64Encoder = new BASE64Encoder();
使っていたJDKは9なんだけど、これにBASE64Encoderが無いらしい。こいつが搭載されているJDK8に切り替えてみる。
出来た(^w^)
よくよく調べてみると、JDK1.6以降のBASE64Encoderは利用時に以下の警告が出ていたらしい。
>>警告:sun.misc.BASE64Encoder は Sun が所有する API であり、今後のリ リースで削除される可能性があります。
で、JDK9で見事削除されたということか。SignedJarBuilderが新API(java.util.Base64ってやつらしい)に対応するまではJDK1.8を使い続けるしかないってことやね。
どちらの問題も、それぞれのバージョンの違いによる吸収できない差異によって発生していた。こういうのは確かにハマるだろうなぁ。ネットでちょっと調べても
「CommandInvokationFailureが発生してビルドが出来ません!助けて!」
とか、そういうのばかりだし。仕事でもよく言われるSOSだけど、これもう君はエラーログを1行目から最後まで全部見たかい? そしてそれを理解して、その解決策を探ったかい?って説教したくなるよね。俺はめんどくさいからコピペしてググるけど、若い人こそちゃんとログは見た方がいい。