2017-10-13 265 views
0

我正在嘗試爲我的應用程序構建測試。當我構建應用程序我碰到下面的錯誤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

沒人?不能任何人幫助我? –

回答

0

我不知道爲什麼,但我能解決我的問題。當我安裝Java JDK時,它安裝了2個文件夾。 Unity自動選擇一個名爲「jdk-9」的文件夾。當我將其更改爲「jdk1.8.0_131」時,我能夠構建我的應用程序。

如果有任何知道爲什麼這個作品這樣我會很高興知道!

0

您的密鑰庫似乎存在問題,而不是sdk。我不知道你是否知道密鑰庫是什麼,所以在這裏你去:

一個密鑰庫是一個文件,就像你的應用程序的「密碼」一樣。例如,Google Play不會讓您更新您的應用,除非您的應用使用相同的密鑰存儲庫進行了更新。無論您做什麼,在發佈您的應用程序後都不要丟失密鑰庫。

如果您還沒有噴氣產生的爲您的應用密鑰庫您可以生成一個團結:https://forum.unity.com/threads/android-signing.62137/

如果你已經擁有了它最有可能得到某種方式破壞一個密鑰。如果您已經在某處發佈了您的應用程序,我希望您有備份。如果不是隻生成一個新的密鑰庫

+0

感謝您的回覆。我做了一個新的密鑰存儲。並填補了一切。我試圖在此之後構建apk,但它仍然給了我錯誤。如果密鑰庫不在資產文件夾中,是否存在問題? –