2016-05-04 12 views
1

Ich habe die Anweisungen hier und an anderer Stelle beim Erstellen einer signierten JAR-Datei befolgt und ich erhalte immer noch INSTALL_PARSE_FAILED_NO_CERTIFICATES, wenn ich versuche, die signierte .apk auf meinem LG-D415 zu installieren. Wie bereits erwähnt, die Signieralgorithmus scheint mit Java besser zu arbeiten 6. So deinstallierte ich alle Versionen von Java andere als das und stellte sicher, dass keytool und jarsigner Java verwendet wurden 6.INSTALL_PARSE_FAILED_NO_CERTIFICATES von adb install; Verwenden von Java 6, Android 5.0.2

keytool -genkey -v -keystore debug.keystore -alias TabletClient -keyalg RSA -keysize 2048 -validity 20000 
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore Release\TabletClient.apk TabletClient 
zipalign -v 4 Release\TabletClient.apk Release\TabletClientZ.apk 
adb install Release\TabletClientZ.apk 

adb logcat zeigt:

W/PackageManager( 957): android.content.pm.PackageParser$PackageParserException: Failed to collect certificates from /data/app/vmdl272628750.tmp/base.apk 
W/PackageManager( 957):  at android.content.pm.PackageParser.collectCertificates(PackageParser.java:1108) 
W/PackageManager( 957):  at android.content.pm.PackageParser.collectCertificates(PackageParser.java:1035) 
W/PackageManager( 957):  at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:11848) 
W/PackageManager( 957):  at com.android.server.pm.PackageManagerService.access$2500(PackageManagerService.java:273) 
W/PackageManager( 957):  at com.android.server.pm.PackageManagerService$7.run(PackageManagerService.java:9770) 
W/PackageManager( 957):  at android.os.Handler.handleCallback(Handler.java:739) 
W/PackageManager( 957):  at android.os.Handler.dispatchMessage(Handler.java:95) 
W/PackageManager( 957):  at android.os.Looper.loop(Looper.java:135) 
W/PackageManager( 957):  at android.os.HandlerThread.run(HandlerThread.java:61) 
W/PackageManager( 957):  at com.android.server.ServiceThread.run(ServiceThread.java:46) 
W/PackageManager( 957): Caused by: java.lang.SecurityException: Can not recognize a critical extension 
W/PackageManager( 957):  at org.apache.harmony.security.utils.JarUtils.verifySignature(JarUtils.java:120) 
W/PackageManager( 957):  at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:346) 
W/PackageManager( 957):  at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:320) 
W/PackageManager( 957):  at java.util.jar.StrictJarFile.<init>(StrictJarFile.java:68) 
W/PackageManager( 957):  at android.content.pm.PackageParser.collectCertificates(PackageParser.java:1050) 

Irgendwelche Ideen? Jede Hilfe wird geschätzt.

Antwort

0

Ich fand die Antwort. Die .apk wurde als Teil des Build-Adt signiert, aber mit einem Schlüssel, der nicht funktionierte. Aus irgendeinem Grund hat der Jarsigner-Schritt die alte Signatur nicht vollständig ersetzt oder einen Fehler angezeigt. Als das .apk auf dem Android-Gerät installiert wurde, hatte es ein Problem mit dem schlechten Schlüssel. Der Trick, dies zu finden, bestand darin, die .apk-Datei als zip-Datei zu öffnen, bevor Sie jarsigner ausführen, und dann das Verzeichnis META-INF zu löschen. jarsigner hat es dann korrekt erstellt, mit dem Schlüssel, den Android im .android-Verzeichnis erstellt. Sobald ich das erkannte, war ich in der Lage, das Problem zu beheben, indem Sie den Befehl adt den Android-Schlüssel verwenden.

+0

Könnten Sie den adt-Befehl einfügen, der das Problem behoben hat? – Tormod

+0

Es war mir egal, meine Lösung war, _signingConfig signingConfigs.release_ zu meinem Build-Release-Buildtyp hinzuzufügen. – Tormod

Verwandte Themen