【この本の躓いたとこ解決⇒】Unityの教科書 Unity 2017完全対応版 2D&3Dスマートフォンゲーム入門講座

アプリを作ってみよーと思って、「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および、スマホの再起動で解決(英語サイトの情報によると、まれにこの障害が発生することがあるらしい。)

 

本記事は作成中記事です。随時更新していきます。

 

コメント欄は自由に使ってね!ほどよく返信もします!

メールアドレスが公開されることはありません。