2017-10-13 4 views
0

Je suis en train de construire un test pour mon application. Quand je construis l'application je reçois l'erreur suivanteUntiy 2017.2.0f3: ne peut pas construire android erreur apk: CommandInvokationFailure: Impossible de signer le paquet 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) 

J'ai déjà essayé de réinstaller le SDK Android et sa mise à jour à la dernière version, le téléchargement de différentes versions Android, en utilisant la nouvelle gradle au lieu de interne. Rien n'a fonctionné. Après 2 jours de recherche d'une solution, je ne sais toujours pas comment résoudre ce problème. Est-ce que quelqu'un peut m'aider? Merci beaucoup!

+0

Personne ?! Quelqu'un peut-il m'aider? –

Répondre

0

Je ne sais pas pourquoi mais j'ai été en mesure de résoudre mon problème. Quand j'ai installé Java JDK, il a installé 2 dossiers. Unity a automatiquement sélectionné 1 dossier appelé "jdk-9". Quand je l'ai changé en "jdk1.8.0_131" j'ai pu construire mon application.

si tout savoir pourquoi cela fonctionne de cette façon, je serai heureux de savoir!

0

Il semble y avoir un problème avec votre magasin de clés et non avec le sdk. Je ne sais pas si vous savez ce qu'est un keystore, alors voilà:

Un keystore est un fichier qui agit comme un "mot de passe" pour votre application. Par exemple, Google Play ne vous permet pas de mettre à jour votre application à moins que la mise à jour ne soit signée avec le même fichier de clés que votre application. Quoi que vous fassiez, ne perdez pas le fichier de clés après la publication de votre application.

Si vous n'êtes pas un jet généré keystore pour votre application, vous pouvez générer un dans l'unité: https://forum.unity.com/threads/android-signing.62137/

Si vous avez déjà un keystore il est fort probable a été corrompu en quelque sorte. Si vous avez déjà publié votre application quelque part, j'espère que vous avez une sauvegarde. Si non seulement générer un nouveau keystore

+0

Merci pour votre réponse. J'ai fait un nouveau keystore. et rempli tout. J'ai essayé de construire l'apk après cela et ça m'a quand même donné l'erreur. Est-ce un problème si le magasin de clés n'est pas dans le dossier des actifs? –