Próbuję podpisać plik APK. Nie wiem, jak to zrobić. Nie mogę znaleźć dobrych szczegółowych wskazówek. Mam bardzo małe doświadczenie w programowaniu, więc każda pomoc będzie mile widziana.
Jeśli używasz Eclipse z wtyczką ADT, możesz użyć Kreatora eksportu, aby wyeksportować podpisany plik .apk (a nawet utworzyć nowy magazyn kluczy, jeśli to konieczne). Kreator eksportu wykonuje za Ciebie całą interakcję z Keytool i Jarsigner, co pozwala na podpisanie pakietu za pomocą GUI zamiast wykonywania ręcznych procedur kompilacji, podpisywania i wyrównywania, jak omówiono powyżej. Gdy kreator skompiluje i podpisze pakiet, wykona również wyrównywanie pakietów z wyrównywaniem zip. Ponieważ Kreator eksportu używa zarówno narzędzia Keytool, jak i Jarsigner, należy upewnić się, że są one dostępne na komputerze, jak opisano powyżej w sekcji Podstawowa konfiguracja podpisywania.
Aby utworzyć podpisany i wyrównany plik .apk w Eclipse:
Wybierz projekt w Eksploratorze pakietów i wybierz Plik> Eksportuj.
Otwórz folder Android, wybierz Eksportuj aplikację dla systemu Android i kliknij Dalej.
Zostanie uruchomiony kreator eksportu aplikacji dla systemu Android, który poprowadzi Cię przez proces podpisywania aplikacji, w tym kroki wyboru klucza prywatnego do podpisania .apk (lub tworzenia nowego magazynu kluczy i klucza prywatnego).
Wypełnij Kreatora eksportu, a Twoja aplikacja zostanie skompilowana, podpisana, wyrównana i gotowa do dystrybucji.
Nie rozumiem, jak zacząć. Używam wersji eclipse: Helios Service Release 1
chriss
2
ale proszę przeczytaj CAŁĄ rzecz. na koniec jest też kilka wskazówek dotyczących zaćmienia
Nanne
1
w tworzeniu klucza co muszę wpisać dla aliasu?
chriss
9
Czy przeczytałeś instrukcję? -alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.To tylko alias. Imię, jeśli chcesz. proponuję "firstkey" :-)
Nanne
1
Przepraszam, nadal nie rozumiem. Jak użyłbym tego aliasu. Jaki jest jej cel?
user462990
37
Oto przewodnik dotyczący ręcznego podpisywania pliku APK. Zawiera informacje o nowościach apk-signerwprowadzonych w build-tools 24.0.3(10/2016)
Zautomatyzowany proces:
Użyj tego narzędzia (używa nowego apksignera od Google):
Uwaga: w przypadku korzystania ze starego jarsignernależy wykonać zipalign PO podpisaniu. Korzystając z nowej apksignermetody 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ą
zipalign -c 4my-aligned.apk
Krok 3: Podpisz i zweryfikuj
Korzystanie z narzędzi do kompilacji 24.0.2 i starszych
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 Google zaimplementował własny sygnatariusz apk o nazwieapksigner (duh!) Plik skryptu można znaleźć w %ANDROID_HOME%/sdk/build-tools/24.0.3/( plik .jar znajduje się w /libpodfolderze). Użyj tego w ten sposób
Dla użytkowników IntelliJ IDEA lub Android Studio wykonaj następujące kroki:
* Z menu Build/Generate signed APK
* Musisz utworzyć ścieżkę do magazynu kluczy. W oknie dialogowym kliknij Create new. Utworzysz plik jks zawierający klucze. Wybierz folder, zdefiniuj hasło. Więc twój magazyn kluczy jest w porządku.
* Utwórz nowy klucz dla swojej aplikacji, używając aliasu, hasła klucza, swojej nazwy itp.
* Kliknij dalej.
* W oknie dialogowym wybierz Proguard lub nie.
Nie martw się ...! Wykonaj poniższe czynności, a otrzymasz podpisany plik .apk. Też się o to martwiłem, ale ten krok odstraszał mnie od frustracji. Kroki do podpisania wniosku:
Wyeksportuj niepodpisany pakiet:
Kliknij prawym przyciskiem myszy projekt w Eclipse -> Android Tools -> Export Unsigned Application Package (tak jak tutaj eksportujemy naszą GoogleDriveApp.apk do Desktop)
Podpisz aplikację za pomocą magazynu kluczy i narzędzia jarsigner (wykonaj poniższe czynności):
Otwórz cmd -> zmień katalog, w którym znajduje się twój "jarsigner.exe" (tak jak tutaj, w moim systemie, istnieje w "C: \ Program Files \ Java \ jdk1.6.0_17 \ bin"
Jeśli używasz eclipse z ADT, możesz łatwo skompilować, podpisać, wyrównać i przygotować plik do dystrybucji. Co musisz zrobić, wykonaj następujące kroki.
Plik> Eksportuj.
Eksportuj aplikację na Androida
Przeglądaj -> wybierz swój projekt
Dalej -> Dalej
Te kroki pozwolą skompilować, podpisać i skompilować swój projekt. Teraz jesteś gotowy do dystrybucji lub przesłania projektu do sklepu Google Play.
Właśnie tego potrzebowałem, korzystałem z nowego narzędzia do budowania online i musiałem używać mojego poprzedniego magazynu kluczy, a nie nowo wygenerowanego. Jedyne, czego mi brakowało, to ZIP wyrównywanie apk, więc jeśli ktoś ma ten sam problem, przejdź tutaj stackoverflow.com/a/22682132/826194
Larzan
5
Proces podpisywania APK
Aby ręcznie podpisać plik APK systemu Android, uruchom te trzy polecenia:
D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
-aliasMySignedApp-keyalg RSA -keysize 2048-validity 10000Enter keystore password:Re-enter new password:Whatis your first andlast name?[Unknown]:MySignedAppSampleWhatis the name of your organizational unit?[Unknown]:InformationTechnologyWhatis the name of your organization?[Unknown]:MySignedAppDemoWhatis the name of your CityorLocality?[Unknown]:MumbaiWhatis the name of your StateorProvince?[Unknown]:MaharashtraWhatis the two-letter country code forthis unit?[Unknown]: IN
Is CN=MySignedAppDemo, OU=InformationTechnology, O=MySignedAppDemo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?[no]: y
Generating2,048 bit RSA key pair andself-signed certificate (SHA256withRSA)with a validity of10,000 days
for: CN=MySignedAppDemo, OU=InformationTechnology, O=MySignedAppDemo, L=Mumbai, ST=Maharashtra,
C=IN
Enter key password for<MySignedApp>(RETURN if same as keystore password):Re-enter new password:[Storing id.keystore]
D:\ru\SignedBuilds\MySignedApp>
KROK 2
Sign your app with your private keystore using jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id
CMD O / P
D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
EnterPassphrasefor keystore:
adding: META-INF/MANIFEST.MF
adding: META-INF/---.SF
adding: META-INF/---.RSA
signing:AndroidManifest.xml
.....
signing: classes.dex
signing: lib/commons-codec-1.6.jar
signing: lib/armeabi/libkonyjsvm.so
jar signed.Warning:No-tsa or-tsacert is provided andthis jar isnot timestamped.Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.
D:\ru\SignedBuilds\MySignedApp>
D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
jar verified.Warning:This jar contains entries whose certificate chain isnot validated.This jar contains signatures that does not include a timestamp.Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
future revocation date.
D:\ru\SignedBuilds\MySignedApp>
Napotkałem ten problem i został rozwiązany, sprawdzając wersję min sdk w manifeście. Był ustawiony na 15 (ICS), ale mój telefon działał 10 (Gingerbread)
Odpowiedzi:
Podręcznik jest wystarczająco jasny. Proszę określić, z jaką częścią utkniesz po pracy, proponuję:
https://developer.android.com/studio/publish/app-signing.html
Okay, mały przegląd bez odniesienia lub zaćmienia wokół, więc zostaw trochę miejsca na błędy, ale działa tak
Również z linku:
źródło
-alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.
To tylko alias. Imię, jeśli chcesz. proponuję "firstkey" :-)Oto przewodnik dotyczący ręcznego podpisywania pliku APK. Zawiera informacje o nowościach
apk-signer
wprowadzonych wbuild-tools 24.0.3
(10/2016)Zautomatyzowany 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 Google zaimplementował własny sygnatariusz 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
Dla użytkowników IntelliJ IDEA lub Android Studio wykonaj następujące kroki:
* Z menu
Build/Generate signed APK
* Musisz utworzyć ścieżkę do magazynu kluczy. W oknie dialogowym kliknij
Create new
. Utworzysz plik jks zawierający klucze. Wybierz folder, zdefiniuj hasło. Więc twój magazyn kluczy jest w porządku.* Utwórz nowy klucz dla swojej aplikacji, używając aliasu, hasła klucza, swojej nazwy itp.
* Kliknij dalej.
* W oknie dialogowym wybierz Proguard lub nie.
Twój podpisany plik APK jest gotowy.
Plik pomocy: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html
źródło
Nie martw się ...! Wykonaj poniższe czynności, a otrzymasz podpisany plik .apk. Też się o to martwiłem, ale ten krok odstraszał mnie od frustracji. Kroki do podpisania wniosku:
Kliknij prawym przyciskiem myszy projekt w Eclipse -> Android Tools -> Export Unsigned Application Package (tak jak tutaj eksportujemy naszą GoogleDriveApp.apk do Desktop)
Podpisz aplikację za pomocą magazynu kluczy i narzędzia jarsigner (wykonaj poniższe czynności):
Otwórz cmd -> zmień katalog, w którym znajduje się twój "jarsigner.exe" (tak jak tutaj, w moim systemie, istnieje w "C: \ Program Files \ Java \ jdk1.6.0_17 \ bin"
Teraz wpisz polecenie belwo w cmd:
Poprosi Cię o podanie hasła: Wprowadź hasło do magazynu kluczy: podpisze twój apk. Aby sprawdzić, czy podpisanie się powiodło, możesz uruchomić:
Powinien wrócić z: zweryfikowanym słoikiem.
Metoda 2
Jeśli używasz eclipse z ADT, możesz łatwo skompilować, podpisać, wyrównać i przygotować plik do dystrybucji. Co musisz zrobić, wykonaj następujące kroki.
Te kroki pozwolą skompilować, podpisać i skompilować swój projekt. Teraz jesteś gotowy do dystrybucji lub przesłania projektu do sklepu Google Play.
źródło
Proces podpisywania APK
Aby ręcznie podpisać plik APK systemu Android, uruchom te trzy polecenia:
Wygeneruj plik Keystore
Podpisz swój plik APK za pomocą
jarsigner
Wyrównaj podpisany plik APK za pomocą narzędzia zipalign
KROK 1
Generate Keystore file
Przykład:
kluczy hasło: yourApp @ 123 klucz hasło: yourApp @ 123
CMD O / P
KROK 2
Sign your app with your private keystore using jarsigner
Przykład
CMD O / P
Verify that your APK is signed
Przykład
CMD O / P
KROK 3
Wyrównaj ostateczny pakiet APK za pomocą zipalign
Przykład
CMD O / P
Verify that your APK is Aligned successfully
Przykład
CMD O / P
Uwaga:
Polecenie weryfikacji służy tylko do sprawdzenia, czy plik APK jest poprawnie zbudowany i podpisany!
Bibliografia
Mam nadzieję, że to pomoże wszystkim :)
źródło
Napotkałem ten problem i został rozwiązany, sprawdzając wersję min sdk w manifeście. Był ustawiony na 15 (ICS), ale mój telefon działał 10 (Gingerbread)
źródło