Zrobiłem przykładową aplikację o nazwie checkStatus
. Teraz chcę utworzyć podpisany plik APK. Więc mogę zainstalować go na różnych urządzeniach do moich testów.
W tym celu wyszukałem w Google i znalazłem tę dokumentację .
Zgodnie z dokumentem przełączyłem się do katalogu mojego projektu i uruchomiłem następujące polecenie:
keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000
Po uruchomieniu powyższego polecenia otrzymałem plik o nazwie key-name.keystore
pod adresem projectRoot/key-name.keystore
.
A potem skopiowałem i wkleiłem ten plik do projectRoot/platforms/android/key-name.keystore
.
Następnie utworzyłem plik o nazwie ant.properties
i zapisałem go w projectRoot/platforms/android
.
Napisałem następujący kod w pliku:
key.store=projectRoot/key-name.keystore
key.alias=myApp
Następnie uruchomiłem następujące polecenie, aby zwolnić
Cordova builds android --release
Zgłasza następujący błąd:
/home/projectRoot/platforms/android/cordova/node_modules/q/q.js:126
throw e;
^
Error code 1 for command: ant with args: release,-f,/home/projectRoot/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen
Error: /home/projectRoot/platforms/android/cordova/build: Command failed with exit code 8
at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:753:16)
at Process.ChildProcess._handle.onexit (child_process.js:820:5)
Więc tym razem zmodyfikowałem key.store
wartość w ant.properties
pliku w następujący sposób.
key.store=/home/projectRoot/platforms/android/key-name.keystore
Ponownie uruchomiłem cordova build android --release
polecenie. Wyrzuca ten sam błąd.
Czy ktoś może mi powiedzieć, co zrobiłem źle?
Odpowiedzi:
Krok 1:
dodaj,
--save
aby usunąć wtyczkę zconfig.xml
pliku.Krok 2:
Aby wygenerować kompilację wydania dla Androida, musimy najpierw dokonać niewielkiej zmiany w
AndroidManifest.xml
pliku znalezionym w platformach / android. Edytuj plik i zmień linię:i zmień
android:debuggable
nafalse
:Od wersji Cordova 6.2.0 całkowicie usuń tag android: debuggable. Oto wyjaśnienie z Cordova:
Jeśli z drugiej strony określisz określoną wartość w pliku manifestu, narzędzia zawsze będą jej używać. Może to doprowadzić do przypadkowego opublikowania aplikacji z informacjami debugowania.
Krok 3:
Teraz możemy powiedzieć Cordova, aby wygenerował naszą kompilację wydania:
Następnie możemy znaleźć nasz niepodpisany plik APK w formacie
platforms/android/ant-build
. W naszym przykładzie był to plikplatforms/android/ant-build/Example-release-unsigned.apk
Krok 4:
Uwaga: nasz magazyn kluczy znajduje się
keystoreNAME-mobileapps.keystore
w tym repozytorium Git, jeśli chcesz utworzyć inny, wykonaj następujące czynności.Generowanie klucza:
Składnia:
Egs:
Następnie został wygenerowany magazyn kluczy o nazwie NAME-mobileapps.keystore
Krok 5:
Umieść wygenerowany magazyn kluczy w
stara wersja cordova
Nowa wersja cordova
Aby podpisać niepodpisany plik APK, uruchom narzędzie jarsigner, które jest również zawarte w JDK:
Składnia:
Egs:
LUB
To oznacza, że apk jest na miejscu.
Krok 6:
Na koniec musimy uruchomić narzędzie do wyrównywania zip, aby zoptymalizować plik APK:
LUB
LUB
Teraz mamy nasz ostateczny plik binarny o nazwie example.apk i możemy go opublikować w sklepie Google Play.
źródło
-tsa timestamp.digicert.com
rzucił dla mnie wyjątek NullPointerException.-tsa http://timestamp.digicert.com
wydaje się, że to naprawiaAktualizacja @malcubierre dla Cordova 4 (i nowszych) -
Utwórz plik o nazwie
release-signing.properties
i umieść go wAPPFOLDER\platforms\android
folderzeZawartość pliku: edytuj po = dla wszystkich z wyjątkiem drugiej linii
Następnie to polecenie powinno zbudować wersję wydania:
źródło
build-extras.gradle
pliku. Odpowiedni dokument cordova tutaj .W aktualnej dokumentacji możemy określić plik build.json z magazynem kluczy:
Następnie wykonaj polecenie z argumentem --buildConfig, w ten sposób:
źródło
Krok 1:
Idź do
cordova\platforms\android
i stwórzant.properties
plik o nazwie file z informacjami o pliku kluczy (ten magazyn kluczy można wygenerować z twojego ulubionego Android SDK, studio ...):Krok 2:
Idź do ścieżki cordova i wykonaj:
Uwaga: zostanie wyświetlony monit z pytaniem o magazyn kluczy i hasło klucza
Plik YourApp-release.apk pojawi się w
\cordova\platforms\android\ant-build
źródło
W cordova 6.2.0 ma łatwy sposób tworzenia kompilacji wydania. zobacz inne kroki tutaj Kroki 1, 2 i 4
źródło
The system cannot find the file specified
używania Cordova 6.2.0cordova build android --release -- --keystore="C:\release.keystore" --storePassword=****** --alias=mr5
"
(podwójny cudzysłów) zaczęło działać. Myślę, że Cordova ma problem z analizowaniem znaków specjalnych.Na komputerze Mac (osx) wygenerowałem dwa pliki .sh, jeden dla pierwszej publikacji i drugi do aktualizacji:
Aby zaktualizować aplikację:
Zakładając, że jesteś w folderze domowym lub folderze znajdującym się na górze folderów aplikacji. Upewnij się, że ustawiłeś poprawnie chmod, aby użyć tego skryptu. Następnie :
Twój podpisany plik APK będzie w folderze Twojej aplikacji / platform / android / build / output / apk / as SignedApk.apk Upewnij się, że używasz prawidłowego aliasu klucza i hasła zdefiniowanego w pierwszym skrypcie
źródło
Zbuduj plik APK wydania Cordova w cmd.
ŚCIEŻKA PLIKU SKLEPU KLUCZY: ścieżka do pliku magazynu kluczy (F: /cordova/myApp/xxxxx.jks)
HASŁO SKLEPU KLUCZOWEGO : xxxxx
ALIASY SKLEPÓW KLUCZOWYCH : xxxxx
HASŁO ALIASU SKLEPU KLUCZOWEGO : xxxxx
ŚCIEŻKA Zipalign.exe : ścieżka do pliku zipalign.exe (C: \ Users \ xxxx \ AppData \ Local \ Android \ sdk \ build-tools \ 25.0.2 \ zipalign)
ANDROID UNSIGNED NAZWA APK : android-release-unsigned.apk
NAZWA APLIKACJI ANDROID RELEASE : android-release.apk
Uruchom poniższe kroki w cmd (uruchom jako administrator)
źródło
źródło
Najpierw sprawdź kod wersji i nazwę wersji, jeśli aktualizujesz aplikację. I upewnij się, że masz poprzedni magazyn kluczy.
Jeśli aktualizujesz aplikację, wykonaj kroki 1, 3, 4.
Krok 1:
Przejdź do swojego projektu cordova, aby wygenerować naszą kompilację wydania:
Następnie możemy znaleźć nasz niepodpisany plik APK w platformach / android / ant-build. W naszym przykładzie był to plik
jeśli używasz ant-build
LUB
jeśli używasz gradle-build
Krok 2:
Generowanie klucza:
Składnia:
jeśli polecenie keytool nie rozpoznaje, wykonaj ten krok
Sprawdź, czy katalog, w którym znajduje się plik wykonywalny keytool, znajduje się na ścieżce. (Na przykład na moim komputerze z systemem Windows 7 znajduje się w C: \ Program Files (x86) \ Java \ jre6 \ bin.)
Przykład:
Następnie został wygenerowany magazyn kluczy o nazwie NAME-mobileapps.keystore
Krok 3:
Umieść wygenerowany magazyn kluczy w D: \ projects \ Phonegap \ Example \ platform \ android \ ant-build
Aby podpisać niepodpisany plik APK, uruchom narzędzie jarsigner, które jest również zawarte w JDK:
Składnia:
Jeśli to się nie powtórzy, wykonaj te czynności
(1) Kliknij prawym przyciskiem myszy „Ten komputer”> kliknij prawym przyciskiem myszy Właściwości> Zaawansowane ustawienia systemu> Zmienne środowiskowe> wybierz ŚCIEŻKA, a następnie EDYTUJ.
(2) Dodaj ścieżkę folderu jdk bin do zmiennych środowiskowych, powinna wyglądać następująco:
„C: \ Program Files \ Java \ jdk1.8.0_40 \ bin”.
Przykład:
To oznacza, że apk jest na miejscu.
Krok 4:
Na koniec musimy uruchomić narzędzie do wyrównywania zip, aby zoptymalizować plik APK:
jeśli zipalign nie rozpozna wtedy
(1) przejdź do ścieżki sdk systemu Android i znajdź plik zipalign. Zwykle jest to plik android-sdk \ build-tools \ 23.0.3
(2) Skopiuj wklej plik zipalign do generowanego folderu apk wydania, zwykle w poniższej ścieżce
yourproject / platform / android / ant-build / Example-release-unsigned.apk
LUB
Teraz mamy nasz ostateczny plik binarny o nazwie example.apk i możemy go opublikować w sklepie Google Play.
źródło
Dla Windows utworzyłem
build.cmd
plik:(zamień ścieżkę i alias do magazynu kluczy)
Cordova:
A dla Ionic:
Zapisz go w katalogu ptoject, możesz kliknąć dwukrotnie lub otworzyć go za pomocą cmd.
źródło