Untiy 2017.2.0f3:cant build android apk错误:CommandInvokationFailure:无法签署APK包

问题描述:

我正在尝试为我的应用程序构建测试。当我构建应用程序我碰到下面的错误Untiy 2017.2.0f3:cant build android apk错误:CommandInvokationFailure:无法签署APK包

CommandInvokationFailure: Failed to sign APK package. 
C:\Program Files (x86)\Android\android-sdk\build-tools\26.0.2\apksigner.bat sign --ks "D:/Programming/UnityProjects/MobileProject-resortTycoon/user.keystore" --ks-pass stdin --ks-key-alias "test123" --key-pass stdin "D:\Programming\UnityProjects\MobileProject-resortTycoon\Temp/StagingArea/Package.apk" 

stderr[ 
Error: keywords 'java|openjdk version' not found in 'picked up java_tool_options: -df' 
Error: keywords 'java|openjdk version' not found in 'picked up java_tool_options: -df' 
Failed to load signer "signer #1" 
java.io.IOException: Invalid keystore format 
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658) 
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56) 
    at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224) 
    at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70) 
    at java.security.KeyStore.load(KeyStore.java:1445) 
    at com.android.apksigner.ApkSignerTool$SignerParams.loadKeyStoreFromFile(ApkSignerTool.java:829) 
    at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCertsFromKeyStore(ApkSignerTool.java:719) 
    at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCerts(ApkSignerTool.java:659) 
    at com.android.apksigner.ApkSignerTool$SignerParams.access$500(ApkSignerTool.java:611) 
    at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:266) 
    at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89) 
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 
] 
stdout[ 
Keystore password for signer #1: 
] 
exit code: 2 
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) 
UnityEditor.Android.Command.RunWithStdin (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg, System.String[] input) 
UnityEditor.Android.PostProcessor.Tasks.TasksCommon.Exec (System.String command, System.String args, System.String workingdir, System.String errorMsg, System.String[] stdin) 
UnityEditor.Android.PostProcessor.Tasks.BuildAPK.SignPackage (UnityEditor.Android.PostProcessor.PostProcessorContext context) 
UnityEditor.Android.PostProcessor.Tasks.BuildAPK.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) 
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) 
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) 

我已经尝试重新安装Android SDK和其更新到最新版本,下载不同的Android版本,使用新的gradle这个,而不是内部。没有工作。寻找解决方案2天后,我仍然不知道如何解决这个问题。有人能帮我吗?非常感谢!

+0

没人?不能任何人帮助我? –

我不知道为什么,但我能解决我的问题。当我安装Java JDK时,它安装了2个文件夹。 Unity自动选择一个名为“jdk-9”的文件夹。当我将其更改为“jdk1.8.0_131”时,我能够构建我的应用程序。

如果有任何知道为什么这个作品这样我会很高兴知道!

您的密钥库似乎存在问题,而不是sdk。我不知道你是否知道密钥库是什么,所以在这里你去:

一个密钥库是一个文件,就像你的应用程序的“密码”一样。例如,Google Play不会让您更新您的应用,除非您的应用使用相同的密钥存储库进行了更新。无论您做什么,在发布您的应用程序后都不要丢失密钥库。

如果您还没有喷气产生的为您的应用密钥库您可以生成一个团结:https://forum.unity.com/threads/android-signing.62137/

如果你已经拥有了它最有可能得到某种方式破坏一个密钥。如果您已经在某处发布了您的应用程序,我希望您有备份。如果不是只生成一个新的密钥库

+0

感谢您的回复。我做了一个新的密钥存储。并填补了一切。我试图在此之后构建apk,但它仍然给了我错误。如果密钥库不在资产文件夹中,是否存在问题? –