2017-10-27 22 views
3

私は "tanks!"チュートリアルと今、私はAndroid上でゲームを移植しようとしています。これはユニティで初めてのことです.APKを作成すると「APKをビルドできませんでした」と表示され、その後エラーが発生します。エラーは私がそれが致命的だと思う、何が間違っているのか教えてください。Unityがapkを作成できませんでした。Android

CommandInvokationFailure: Failed to build apk. 
C:/Program Files/Java/jdk-9.0.1\bin\java.exe -Xmx2048M -D com.android.sdkmanager.toolsdir="C:/Android_SDK\tools" -D file.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 more 
    Caused 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: 1 
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) 
UnityEditor.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 emoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) 
UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 emoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) 

答えて

6

、あなたのアプリケーションにjdepsを実行する場合は、sun.misc.BASE64Encoderは廃止されており、JDK 1.8以降がありjava.util.Base64と交換することができることを確認することができるだろう。

migration guideも同様にこれを読み取ります

sun.* APIは、注目すべきはJDK 9に削除されている、 sun.misc.BASE64Encode rとsun.misc.BASE64Decoderは削除されました。あなた自身がこれを解決していない第三者(アンドロイドsdktools)に依存しているので、 は代わりに、あなたのケースでは のJava SE 8


で追加されたサポートjava.util.Base64クラスを使用します。私はあなたが1.8を守らなければならないのではないかと心配しています。その一方で、彼らはアーティファクトを移行する計画を立てるとトラッカーに報告することができます。

もちろん、これはまた、ある時点で、のJava 9互換バージョンのjarをリリース予定の場合にアップグレードする必要があることを意味します。

更新:これは更なるアップデートのUnity#956425で追跡することができます。

+2

誰かがこの依存関係を修正するためにAndroid SDKにバグを提出する必要があります。それ以外の場合、新しいJDKでは実行されません。 –

+0

@AlanBatemanよろしくお願いします。そのようなバグが既に存在するかどうかをもっと調べてみましょう。それ以外の場合は、ファイルを作成して回答を更新します。 – nullpointer

+0

私はjdkコードを使用していない、おそらく私はjdk 8をダウンロードする必要がありますか?私はそれが団結によってサポートされていないと思うので... –

関連する問題