Ich erstelle eine Software, die den Benutzer durch ein paar Schritte führt, um eine Android-Anwendung (APK-Datei) zu veröffentlichen.
Wie ich das tue, ist die APK-Datei bereits kompiliert, und ich muss lediglich eine XML-Datei im Paket ersetzen, und das wird das Verhalten der Anwendung ändern. Mein großes Problem jetzt ist, dass das Entpacken der apk-Datei, und das Ausführen einer winzigen Textbearbeitung, und dann erneut packen, bricht die Signatur und verhindert, dass die Anwendung auf jedem Gerät ausgeführt wird, mit einer Nachricht, dass die Signatur falsch ist.
>Wie kann ich das lösen? Ich möchte das APK sicher öffnen, etwas in eine Textdatei schreiben und es wieder schließen. Beachten Sie, dass diese Operation auf dem Computer des Benutzers ausgeführt wird (nachdem er unsere Anwendung gekauft hat), also suchen wir nach einem Befehlszeilentool ohne spezielle Anforderungen wie JDK.
Irgendwelche Hilfe?
Ok, ich habe die beste "getestete" Lösung erreicht - ich poste sie hier, um anderen Entwicklern stundenlanges Googeln zu ersparen. Der einzige Nachteil ist, dass ich vom Kunden verlangen muss, JDK leider auf seiner Maschine zu installieren. Der Grund ist, weil ich kein apk-signing-Tool gefunden habe, das rein auf Windows funktioniert, ohne auf JDK angewiesen zu sein.
Ich habe meine Android-Anwendung mit Air erstellt, das macht es für mich einfach - alle Luftdateien werden als Ressourcen-Assets behandelt. Stellen Sie Ihre APK-Archivdatei bereit.
Sobald Sie Ihre Änderungen fertig haben, legen Sie sie in einen temporären Ordner namens "Assets". Du benutzt das 7-zip Befehlszeilenwerkzeug (kostenlos: Ссылка ), um den Inhalt deiner apk zu aktualisieren. Um es mit Ihrer apk arbeiten zu können müssen Sie die Erweiterung Ihrer apk in zip umbenennen - keine Sorge, Sie werden es später wieder ändern.
Jetzt rufen Sie aus einer .bat-Datei (oder direkt in der Eingabeaufforderung) aus dem Verzeichnis, das sowohl Ihre apk-Datei (zip extensioned) als auch Ihren Assets-Ordner enthält: 7za u APK-file.zip assets
Jetzt ist Ihre apk-Datei aktualisiert. Benennen Sie es in die Erweiterung .apk um.
Jetzt verwenden Sie das Profil signAPK-Tool und beachten Sie, dass dies der einzige Schritt ist, für den JDK installiert sein muss . Es setzt außerdem voraus, dass Sie Ihre Schlüsseldateien bereit haben (ersetzen Sie die im Paket enthaltenen Dummy-Dateien). Extrahieren Sie den Dateiinhalt und rufen Sie: java -jar signapk.jar key.x509.pem key.pk8 [android_app] .apk [signed_android_app] .apk
Ganz am Ende kann es sein, dass sich die Größe Ihrer signierten apk-Datei dramatisch erhöht. Also müssen Sie das Android-Tool zipAlign verwenden: (verdammt, kann den Link nicht veröffentlichen, da neue Benutzer nur maximal zwei Hyperlinks veröffentlichen können) Sie werden den Befehl aufrufen: zipAlign -c 4 [signed_android_app] .apk
Und voila! Das ist die Route, die ich nehme.
Wenn jemand eine Möglichkeit findet, den Signiervorgang ohne JDK auszuführen (vorausgesetzt, die Schlüsseldateien sind bereit), teilen Sie sie bitte.
Wie kann ich das lösen?
Sie nicht. Wenn Sie eine APK-Datei auf irgendeine Weise ändern, muss sie erneut signiert werden.
Android APK-Dateien müssen signiert sein. Diese Unterschrift beweist, dass der Inhalt der apk nicht von dem, was ursprünglich veröffentlicht wurde, VERÄNDERT wurde. (Was genau du tust.) Die Unterschrift gleichzeitig beweist auch, wer der Autor ist.
Also in einer normalen apk-Datei:
Dies ist eine wichtige Sicherheitsmaßnahme, die in Android integriert ist, aus gutem Grund und nicht zu überwinden ist. Es verhindert, dass Dinge wie Viren in unschuldige apk-Dateien eingebettet werden.