Unity 之 安卓打包遇到的两个错误

434 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6月更文挑战」的第7天,点击查看活动详情

错误一

问题:没有指定keystore或指定路径不对

产生原因:

没有指定的Keystore,或者更换本地Keystore文件的位置导致。

解决办法:

找到有效的Keystore,在下图指定位置重新指定,并输入正确密码!

在这里插入图片描述

没有指定Keystore,报错原文:

UnityException: Can not sign the application Unable to sign the application; please provide passwords! UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuild (System.String title, System.String message, System.Exception ex) UnityEditor.Android.PostProcessor.CancelPostProcess.AbortBuild (System.String title, System.String message) UnityEditor.Android.PostProcessor.Tasks.CheckPrerequisites.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) UnityEditor.Android.PostProcessAndroidPlayer.PrepareForBuild (BuildOptions options, BuildTarget target) UnityEditor.Android.AndroidBuildPostprocessor.PrepareForBuild (BuildOptions options, BuildTarget target) UnityEditor.PostprocessBuildPlayer.PrepareForBuild (BuildOptions options, BuildTargetGroup targetGroup, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:97) UnityEditor.HostView:OnGUI()


指定位置错误,报错原文

CommandInvokationFailure: Failed to build apk. C:\Program Files\Java\jdk1.8.0_111\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/Public/Nwt/cache/recv/android-sdk\tools" -Dfile.encoding=UTF8 -jar "E:\program files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" - stderr[ Error: No such file or directory 'C:/XYAssect/czhenya.keystore' ] stdout[ ] exit code: 255 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 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()


错误二

问题:无法合并AndroidMainFest。

产生原因:

导入了两个冲突的jar包,里面自定义的AndroidMainFest不能自动合并导致 下文中的【@android:authorities="com.czhenya.test.fileProvider" ----- @android:authorities="com.czy.test.fileProvider"】

解决办法:

找到对应的jar包,将两者统一。我这边是将其他工程使用的jar包误添加到此工程,所以直接删除,就解决问题了。若不确定是否还有其他用处,建议剪切到其他文件下进行备份并再次尝试打包。

报错原文:

CommandInvokationFailure: Unable to merge android manifests. See the Console for more details. C:\Program Files\Java\jdk1.8.0_111\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/Public/Nwt/cache/recv/android-sdk\tools" -Dfile.encoding=UTF8 -jar "E:\program files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" - stderr[ Error: [Temp\StagingArea\AndroidManifest-main.xml, E:\project\XYAssect\Temp\StagingArea\android-libraries\cb_com_xingyou_xyhsmj\AndroidManifest.xml:10] Trying to merge incompatible /manifest/application/provider[@name=android.support.v4.content.FileProvider] element: <provider -- @android:authorities="com.czhenya.test.fileProvider" <provider ++ @android:authorities="com.czy.xyhsmj.fileProvider" ] stdout[ Warning: [Temp\StagingArea\AndroidManifest-main.xml:3, E:\project\XYAssect\Temp\StagingArea\android-libraries\ShareSDK\AndroidManifest.xml:20] Main manifest has <application android:name='com.plugins.pluginsjar.czyApplication'> but library uses name='com.mob.MobApplication'. [Temp\StagingArea\AndroidManifest-main.xml, E:\project\XYAssect\Temp\StagingArea\android-libraries\ShareSDK\AndroidManifest.xml:48] Skipping identical /manifest/application/activity[@name=com.czhenya.test.wxapi.WXEntryActivity] element. [Temp\StagingArea\AndroidManifest-main.xml, E:\project\XYAssect\Temp\StagingArea\android-libraries\ShareSDK\AndroidManifest.xml:52] Skipping identical /manifest/application/activity[@name=com.czhenya.test.apshare.ShareEntryActivity] element. ] exit code: 1 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 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()


产生原因:

AndroidSDK工具损坏或者版本过低

解决办法:

检测AndroidSDK配置或者升级AndroidSDK工具

报错原文:

AndroidSDKToolsException: Unable to merge android manifests. See the Console for more details. UnityEditor.Android.AndroidSDKTools.DetectErrorsAndWarnings (System.String logMessages, 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.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.RunCommand (System.String[] sdkToolCommand, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) UnityEditor.Android.AndroidSDKTools.MergeManifests (System.String target, System.String mainManifest, System.String[] libraryManifests, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit) UnityEditor.Android.PostProcessor.Tasks.GenerateManifest.MergeManifests (UnityEditor.Android.PostProcessor.PostProcessorContext context, System.String targetManifest, System.String mainManifest) UnityEditor.Android.PostProcessor.Tasks.GenerateManifest.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) UnityEditor.HostView:OnGUI()