Odkodowałem plik APK za pomocą apktool (ponieważ oryginalny kod źródłowy został utracony), więc mogłem naprawić niektóre problemy z plikami XML układu. Następnie odbudowałem go z powrotem za pomocą apktool i kiedy próbowałem go zainstalować na moim urządzeniu (używając adb: adb install appname.apk), dał mi ten błąd:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
oryginalny plik APK został jednak podpisany przez magazyn kluczy (w środowisku Eclipse IDE), a ten nie jest, jak mogę go poprawnie podpisać za pomocą oryginalnego pliku klucza poza Eclipse !?
android
android-install-apk
apk
svarog
źródło
źródło
Odpowiedzi:
utwórz klucz za pomocą
następnie podpisz apk za pomocą:
sprawdź tutaj, aby uzyskać więcej informacji
źródło
jarsigner
aapksigner
? Jeden wymaga podpisania, a następnie zipaligning, a drugi zipaligning, a następnie podpisaniaZautomatyzowany proces:
Użyj tego narzędzia (używa nowego apksignera od Google):
https://github.com/patrickfav/uber-apk-signer
Zastrzeżenie: jestem programistą :)
Proces ręczny:
Krok 1: Wygeneruj magazyn kluczy (tylko raz)
Musisz raz wygenerować magazyn kluczy i użyć go do podpisania swojego
unsigned
apk. Skorzystaj z dostarczonego przez JDK wkeytool
%JAVA_HOME%/bin/
Krok 2 lub 4: Zipalign
zipalign
które jest narzędziem dostarczanym przez Android SDK znaleziony np.%ANDROID_HOME%/sdk/build-tools/24.0.2/
jest obowiązkowym krokiem optymalizacji, jeśli chcesz przesłać apk do Sklepu Play.Uwaga: w przypadku korzystania ze starego
jarsigner
należy wykonać zipalign PO podpisaniu. Korzystając z nowejapksigner
metody robisz to PRZED podpisaniem (mylące, wiem). Wywołanie zipalign przed apksigner działa dobrze, ponieważ apksigner zachowuje wyrównanie i kompresję APK (w przeciwieństwie do jarsigner).Możesz sprawdzić wyrównanie za pomocą
Krok 3: Podpisz i zweryfikuj
Korzystanie z narzędzi do kompilacji 24.0.2 i starszych
Użyj
jarsigner
które, podobnie jak keytool, jest dostarczane z dystrybucją JDK znalezioną w%JAVA_HOME%/bin/
i używaj go w następujący sposób:i można je zweryfikować za pomocą
Korzystanie z narzędzi do kompilacji 24.0.3 i nowszych
Android 7.0 wprowadza APK Signature Scheme v2, nowy schemat podpisywania aplikacji, który zapewnia krótszy czas instalacji aplikacji i lepszą ochronę przed nieautoryzowanymi zmianami w plikach APK (zobacz tutaj i tutaj, aby uzyskać więcej informacji). Dlatego firma Google zaimplementowała własnego sygnatariusza apk o nazwie
apksigner
(duh!). Plik skryptu można znaleźć w%ANDROID_HOME%/sdk/build-tools/24.0.3/
( plik .jar znajduje się w/lib
podfolderze). Użyj tego w ten sposóbi można je zweryfikować za pomocą
Oficjalną dokumentację można znaleźć tutaj.
źródło
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
). Weryfikacja z uber-apk-signer dała mi więcej informacjisignature VERIFY FAILED
[...]ERROR: JAR signer CERT.RSA: JAR signature META-INF/CERT.RSA uses digest algorithm 2.16.840.1.101.3.4.2.1 and signature algorithm 1.2.840.113549.1.1.1 which is not supported on API Levels [[15, 17]]
. Tak, nie ma Androida 4.2.2, SHA256? pomysły?najszybszym sposobem jest podpisanie za pomocą magazynu kluczy debugowania:
lub w systemie Windows:
źródło
Używasz jarsigner do podpisywania plików APK. Nie musisz podpisywać się przy użyciu oryginalnego magazynu kluczy, po prostu wygeneruj nowy. Przeczytaj szczegóły: http://developer.android.com/guide/publishing/app-signing.html
źródło
Dla tych z Was, którzy nie chcą tworzyć pliku bat do edycji dla każdego projektu lub nie chcą zapamiętywać wszystkich poleceń związanych z programami keytools i jarsigner i chcą tylko zrobić to w jednym procesie, użyj tego programu:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
Zbudowałem go, ponieważ miałem dość długiego procesu wpisywania wszystkich lokalizacji plików za każdym razem.
Ten program może zapisać konfigurację, więc następnym razem, gdy go uruchomisz, wystarczy nacisnąć przycisk Generuj, a zajmie się tym za Ciebie. Otóż to.
Nie jest wymagana instalacja, jest całkowicie przenośna i zapisuje swoje konfiguracje w pliku CSV w tym samym folderze.
źródło
Zaktualizowana odpowiedź
Sprawdź https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
Stara odpowiedź
sprawdź apk-signer to dobry sposób na podpisanie aplikacji
źródło