アプリを作ってみよーと思って、「Unityの教科書 Unity 2017完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)」を購入しました!
でも、実際やってみると、Android用にビルド出来ない!など多数問題が発生(;゚Д゚)
せっかくなので、自分のメモ代わりとしても躓いたところを記載しておきます。
【Android端末でのアプリ確認Q&A】
Q.Android Studioインストール時、Select Compornents to installに「Android SDK」のチェックボックスがない。」(教科書P29)
A.現在公開されているAndroid Studioのバージョンは同梱されていないため、気にせずにインストールしてOK
Q.「File」⇒「Built Setting」で「Android」を選択したときに、「Build」が選択できない。(教科書P140)
A.「File」⇒「Built Setting」で「Android」を選択したあと、「Open load page」を選択する。ダウンロードページにて、「UnitySetup-Android-Support-for-Editor-2017.1.1f1.exe」をダウンロード/インストールする。
Q.「Unable to list target platforms. Please make sure the android sdk path is correct. ...」のエラー発生
A.「UnityのAndroidビルドができなくなった時の対処法」を参考にしてtoolsフォルダを上書き。(上書き前に念のため、現在のtoolsフォルダのバックアップをとっておくこと。)
Q.ビルド時に以下エラーが発生
CommandInvokationFailure: Failed to build apk.CommandInvokationFailure: Failed to build apk.C:\Program Files\Java\jdk-9.0.1\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/y-kosaka/AppData/Local/Android/Sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -
stderr[Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at SDKMain.main(SDKMain.java:130)Caused by: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder at com.android.sdklib.internal.build.SignedJarBuilder.<init>(SignedJarBuilder.java:177) at com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:446) at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:422) at com.android.sdklib.build.ApkBuilder.<init>(ApkBuilder.java:362) at UnityApkBuilder.<init>(UnityApkBuilder.java:214) at UnityApkBuilder.main(UnityApkBuilder.java:34) ... 5 moreCaused by: java.lang.ClassNotFoundException: sun.misc.BASE64Encoder at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ... 11 more]stdout[
]exit code: 1UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)UnityEditor.HostView:OnGUI()
UnityEditor.BuildPlayerWindow+BuildMethodException: Build failed with errors. at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x001b9] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:162 at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00050] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:83 UnityEditor.HostView:OnGUI()
A.JDKを「Java SE Development Kit 8u152」にダウングレードする。(ダウンロードページはこちら)
詳しい解説はYahoo知恵袋「今、大学の演習でUnityでアンドロイドアプリ…」に記載されている。AndroidStudio自体にもJDKが同梱されていて、OracleJDKのバージョンと互換性が取れていないと発生する模様。(今後アプリを開発するうえで、バグを埋め込む原因になりそうなので、互換性確認は必須となりそう。)
Q.ビルド時に以下エラーが発生
CommandInvokationFailure: Unable to install APK to device. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.
C:/Users/y-kosaka/AppData/Local/Android/Sdk\platform-tools\adb.exe -s "YT911A7G8U" install -r "D:\Unityデータ\UnityNoKyokasyo_sample\サンプルゲームPC版\chapter3\Roulette\aa.apk"
stderr[
]
stdout[
[ 0%] /data/local/tmp/./.
[ 0%] /data/local/tmp/./.
[ 0%] /data/local/tmp/./.
[ 1%] /data/local/tmp/./.
[ 1%] /data/local/tmp/./.
[ 1%] /data/local/tmp/./.
[ 2%] /data/local/tmp/./.
[ 2%] /data/local/tmp/./.
[ 2%] /data/local/tmp/./.
[ 2%] /data/local/tmp/./.
[ 3%] /data/local/tmp/./.
[ 3%] /data/local/tmp/./.
[ 3%] /data/local/tmp/./.
adb: error: failed to copy 'D:\Unityデータ\UnityNoKyokasyo_sample\サンプルゲームPC版\chapter3\Roulette\aa.apk' to '/data/local/tmp/./.': remote Is a directory
D:\Unityデータ\UnityNoKyokasyo_sample\サンプルゲームPC版\chapter3\Roulette\aa.apk: 0 files pushed. 198.8 MB/s (917392 bytes in 0.004s)
rm: /data/local/tmp/.: Is a directory
]
exit code: -1
A.ネットで色々調べたが、解決せず。ほぼ同じ構成のプロジェクトのソースコードをフォルダごと差分を取っても特におかしなところなし。結局、PCおよび、スマホの再起動で解決(英語サイトの情報によると、まれにこの障害が発生することがあるらしい。)
本記事は作成中記事です。随時更新していきます。