"Paketdatei wurde nicht richtig signiert" Fehler – erkennt, ob es mit Google Play App apk passieren wird

Ich habe Probleme mit dem Fehler in den folgenden Fragen beschrieben:

Veröffentlicht Android apk gibt Fehler "Paketdatei wurde nicht richtig signiert"
Einige (aber nicht alle) Benutzer erhalten "Paketdatei wurde nicht richtig signiert" beim Herunterladen meiner App von Google Play

  • Symbolleiste, die nicht mit Swipe zum Auffrischen angezeigt wird
  • Wie bekommst du den Code für ein paar Sekunden in android?
  • Erkennung, wann der Benutzer die Softtastatur entlassen hat
  • Konvertieren von String-to-date-Format in Android
  • Mit ADT und SDK-Manager, fügen Sie Android-Quellcode zu Eclipse
  • Android StackView Art von Layout mit horizontalen Swipe
  • Speziell, wenn einige Benutzer versuchen, meine Google Play App herunterzuladen, bekommen sie den Fehler, andere nicht.

    Meine Frage ist: wie man vor der Einreichung feststellt, ob das Problem auftreten wird oder nicht?

    Für was es wert ist, wenn ich laufe

    jarsigner -verify -verbose -certs myapk.apk 

    Ich sehe so etwas wie folgendes:

    86226 So Nov 09 10:34:54 EET 2014 META-INF / MANIFEST.MF X.509, // [persönliches Zeug ausgelassen] [Zertifikat gültig vom 8/20/14 8:04 AM bis 1/5/42 7 : 04 AM] [CertPath nicht validiert: Pfad ketten nicht mit einem der Vertrauensanker] // mehrere hundert Einträge wie oben und dann: jar verifiziert.

    Warnung: Dieses Jar enthält Einträge, deren Zertifikatkette nicht validiert ist. Dieses Glas enthält Signaturen, die keinen Zeitstempel enthält. Ohne einen Zeitstempel können die Benutzer dieses Jar nach dem Ablaufdatum des Unterzeichnerzeugnisses (2042-01-05) oder nach einem späteren Widerrufsdatum nicht bestätigen.

  • Setzen von Inhalten unter AppBarLayout in einem CoordinatorLayout
  • Warum erben die Betrachter den Alpha-Wert aus dem übergeordneten Layout
  • APK mit einem noch nicht gültigen Zertifikat signiert
  • Google Spracherkennung Zeitüberschreitung
  • Android: Wann verwenden Service vs Singleton?
  • IDTech Unimag Card Swiper auf Android
  • 6 Solutions collect form web for “"Paketdatei wurde nicht richtig signiert" Fehler – erkennt, ob es mit Google Play App apk passieren wird”

    Eigentlich ist dies ein häufiges Problem und ich denke, Sie müssen Java 7 oder höher verwenden.

    Lösung

    Run Jarsigner:

     jarsigner -verbose -verify -keystore ${KEYSTORE_PATH} ${YOU_JAR_FILE} 

    Schau mal hier

    Nicht wirklich ein Test, um zu sehen, ob die apk unterschrieben ist, aber ich fühle, dass dies nützlich ist:

    Ich habe dieses Problem vor einer Weile bekommen, meine Lösung: Zeichen von Hand.
    Hier ist das Drehbuch:

     #!/bin/bash storepass="your store pass" keypass="your key pass" alias="alias" if [ $# -lt 1 ]; then echo "$0 <apk file>" exit 1; fi filename=$(basename "$1") extension="${filename##*.}" filename="${filename%.*}" if [ $extension != "apk" ]; then echo "Inputfile is no apk!" exit 1; fi cp $filename.apk $filename-tmp.apk zip -d $filename-tmp.apk "META-INF*" rm -rf $filename-signed.apk jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $keystore -storepass $storepass -keypass $keypass $filename-tmp.apk $alias /Developer/android-sdk-macosx/build-tools/20.0.0/zipalign -f -v 4 $filename-tmp.apk $filename-signed.apk rm -rf $filename-tmp.apk 

    Möglicherweise müssen Sie für Ihre Einstellungen aktualisieren. Ich habe es mit mehreren Geräten getestet (Galaxy Note 10.5, Samsung Galaxy S3, S5, Nexus 4, Lenovo Tab)
    Scheint so weit zu arbeiten.

    (Unter Mac OSX signiert)

    Cordova bauen android –release

    Bevor Sie sicherstellen, es zu konfigurieren: Erstellen Sie eine Ant.properties-Datei in Plattformen / Android / mit einem Keystore-Pfad und Alias-Namen:

    Key.store = / path / to / keystore / release_key_name.keystore key.alias = alias_name

    Sie werden das Passwort vergessen.

    Die APK wird auf Plattformen / android / ant-build / app_name-release.apk erstellt.

    Quelle http://ilee.de/Sign-Releases-with-Cordova-Android/

    Wie man vor der Einreichung feststellt, ob das Problem auftritt oder nicht

    Wenn du jarsigner -verify -verbose -certs myapk.apk bevor du deinen Build einreichst und du keine Warnungen bekommst wie du siehst, dann wird das Problem nicht passieren.

    Für was es sich lohnt, auf OSX Ich vermeide dieses Problem durch vorübergehend Umstellung auf Java 6 nur für die Release-Build:

     sudo cp -R /System/Library/Java/JavaVirtualMachines/1.6.0.jdk /Library/Java/JavaVirtualMachines/1.6.0.jdk sudo mv /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk ~/Desktop/jdk1.8.0_31.jdk java -version // shows java version "1.6.0_65" yay!! 

    Mache ich ohne das Zertifikat und Zeitstempel Fehler. Und kehr zurück zu Java 8:

     sudo mv ~/Desktop/jdk1.8.0_31.jdk /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk 

    Bitte verwenden Sie Eclipse Proguard für diese Angelegenheit und ersetzen Sie Ihre proguard.cfg Inhalt mit dem: (beachten Sie, dass, wenn Sie mit Android-Studio können Sie das Projekt zu Eclipse mit Import importieren)

     -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify -dontshrink -verbose -injars bin/classes -injars libs -outjars bin/classes-processed.jar -dontwarn org.apache.** -dontwarn org.slf4j.** -dontwarn org.json.* -dontwarn org.mortbay.** -dontwarn org.apache.log4j.** -dontwarn org.apache.commons.logging.** -dontwarn org.apache.commons.logging.** -dontwarn org.apache.commons.codec.binary.** -dontwarn javax.xml.** -dontwarn javax.management.** -dontwarn java.lang.management.** -dontwarn android.support.** -dontwarn com.google.code.** -dontwarn oauth.signpost.** -dontwarn twitter4j.** -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keep public class com.google.code.linkedinapi.** -keep class javax.** { *; } -keep class org.** { *; } -keep class java.lang.management.** { *; } # use the keep command in that format for your third party libraries -keepclassmembers public class com.google.code.linkedinapi.client.impl.LinkedInApiXppClient { public <init>(java.lang.String, java.lang.String); } -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } 

    Dies ist ein JAVA-Tooling-Problem. Dies geschieht häufig beim Mischen von JDK- und JRE-Tools auf dem System. Sie verwenden die Werkzeuge nicht aus Java 7. Verwenden Sie nur die Werkzeuge von JDK 6.

    Optional können wir aufhören, mehr Zeit zu verlieren, indem wir die Ausgabe von folgendem einfügen, so dass wir beide das Gefühl haben, etwas getan zu haben:

     which jar signer jarsigner -verify -verbose -certs yourJar.jar 

    Bitte gehen Sie hier für weitere Details

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.