从资产存档和预构建的二进制文件统一构建目标包

Posted

技术标签:

【中文标题】从资产存档和预构建的二进制文件统一构建目标包【英文标题】:building target package from assets archive and pre-built binaries unity 【发布时间】:2019-01-27 06:32:43 【问题描述】:

我想发布我统一创建的 android 游戏,但在构建过程中,我收到了这个错误((从资产存档和预构建的二进制文件构建目标包))。控制台显示:

(( CommandInvokationFailure: 无法构建 apk。C:\Program 文件\Java\jdk-11.0.2\bin\java.exe -Xmx2048M

-Dcom.android.sdkmanager.toolsdir="C:/Android SDK\tools" -Dfile.encoding=UTF8 -jar "D:\Unity\Nasb\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools .jar"

stderr[ 线程“main”中的异常 java.lang.reflect.InvocationTargetException 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 SDKMain.main(SDKMain.java:129) 原因: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder at com.android.sdklib.internal.build.SignedJarBuilder.(SignedJarBuilder.java:177) 在 com.android.sdklib.build.ApkBuilder.init(ApkBuilder.java:446) 在 com.android.sdklib.build.ApkBuilder.(ApkBuilder.java:422) 在 com.android.sdklib.build.ApkBuilder.(ApkBuilder.java:362) 在 UnityApkBuilder.(UnityApkBuilder.java:214) 在 UnityApkBuilder.main(UnityApkBuilder.java:34) ... 5 更多原因: java.lang.ClassNotFoundException: sun.misc.BASE64Encoder at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 11 更多] 标准输出 [

] 退出代码:1 UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String 错误消息) UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String 错误消息) 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()))

我该怎么办??

【问题讨论】:

【参考方案1】:

经过几个小时的斗争,我终于找到了答案。问题是由我的 JDK 版本引起的。我用的是JDK 11,问题就出现了。然后,我安装了 JDK 8 并解决了问题。

【讨论】:

以上是关于从资产存档和预构建的二进制文件统一构建目标包的主要内容,如果未能解决你的问题,请参考以下文章

Fortify SCA 在可执行文件或 .o 文件上构建

Xcode 方案构建目标中的构建顺序

MSBuild:从 Visual Studio 中构建解决方案后运行目标

验证存档时二进制的无效架构

使用Ant构建当前构建目标的依赖关系

CMake基础教程(30)CMake构建系统概览