Zbuduj pakiet APK dla Androida na Phonegap 3.x CLI

108

Jak mogę lokalnie zbudować aplikację na Androida za pomocą interfejsu wiersza polecenia Phonegap 3.x, gotową do wydania? Sprawdzam folder bin wygenerowany w katalogu platform / android projektu i ma tylko pliki APK .debug.

Nawiasem mówiąc, używam tego polecenia: phonegap local build android

Guillermo Gutiérrez
źródło

Odpowiedzi:

153

To jest dla Phonegap 3.0.x do 3.3.x. W przypadku PhoneGap 3.4.0 i nowszych patrz poniżej .

Część odpowiedzi znalazłem tutaj , w dokumentacji Phonegap. Cały proces wygląda następująco:

  1. Otwórz okno wiersza poleceń i przejdź do / path / to / your / project / platform / android / cordova .

  2. Biegnij build --release. Spowoduje to utworzenie niepodpisanego pakietu APK wersji w folderze / path / to / your / project / platform / android / bin o nazwie YourAppName-release-unsigned.apk.

  3. Podpisz i wyrównaj pakiet APK zgodnie z instrukcjami w oficjalnych dokumentach programistów Androida .

Podziękowania dla @LaurieClark za link ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ) i blogera, który to publikuje, ponieważ umieścił mnie na torze.

Guillermo Gutiérrez
źródło
9
Musiałem ręcznie zmodyfikować mój plik AndroidManifest.xml, gdzie musiałem <application android:debuggable="true"...zmienić na<application android:debuggable="false"
Ian Jamieson
3
Trzeba także zip wyrównać rzeczy, po: zipalign -v 4 your-unaligned.apk your-aligned.apk
Damian
13
Używam Cordova 3.4.1-0.1.0, a plik jest tworzony w/path/to/your/project/platforms/android/ant-build
AlexStack
1
Wydaje się, że biorąc pod uwagę specyfikę, dotyczy to phonegap 3.0.x do 3.3.x, od 3.4.xi później może się to różnić.
Guillermo Gutiérrez
Dziękuję bardzo guillermo. +1
Quick_Silver
112

W PhoneGap 3.4.0 możesz zadzwonić:

cordova build android --release

Jeśli skonfigurowałeś plik „ant.properties” w katalogu „platform / android” w następujący sposób:

key.store=/Path/to/KeyStore/myapp-release-key.keystore
key.alias=myapp

Następnie zostaniesz poproszony o podanie hasła do magazynu kluczy, a plik wyjściowy (myapp-release.apk) trafi do katalogu „platform / android / ant-build” już podpisanego, wyrównanego i gotowego do wdrożenia.

Steven Anderson
źródło
1
Bieżąca wersja 3.4.0 Cordova nie zawiera pliku „ant-properties”.
SteAp
8
Utworzony ant.propertiesw platforms/androidi właśnie te dwie właściwości spadła do niego. Działa idealnie, dzięki!
Adam Tuttle
6
Jeśli nie masz pewności co do magazynu kluczy / aliasu lub sposobu ich utworzenia, pełne szczegóły znajdują się na stronie developer.android.com/tools/publishing/app-signing.html
Shai
6
Zauważ również, że możesz określić właściwości key.store.password i key.alias.password w tym pliku, więc nie będziesz musiał ich wprowadzać za każdym razem, gdy budujesz wydanie. Oczywiście bądź ostrożny i nie wysyłaj tego pliku do systemu wersji.
vbezhenar
5
W przypadku cordova 5.0.0 i nowszych utwórz plik build.json w katalogu głównym projektu i wypełnij go {"android": {"release": {"keystore": "/path/to/your.keystore", "alias „:„ youalias ”}}} zamiast pliku ant.properties. FYI cordova.apache.org/docs/en/edge/…
artberri
19

In cordova 6.2.0

cd cordova/ #change to root cordova folder
platforms/android/cordova/clean #clean if you want
cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any

Poprzednia odpowiedź:

Według Cordova 5.0.0

{
     "android": {
         "release": {
             "keystore": "app-release-key.keystore",
             "alias": "alias_name"
         }
     }
 }

i uruchom ./build --release --buildConfig build.jsonz kataloguplatforms/android/cordova/

Lokalizacja pliku kluczy jest względna platforms/android/cordova/, więc w powyższym .keystorepliku konfiguracyjnym i build.jsonznajdują się w tym samym katalogu.

keytool -genkey -v -keystore app-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

KrIsHnA
źródło
15

Kontynuując do @ steven-anderson, możesz również skonfigurować hasła wewnątrz ant.properties, dzięki czemu proces może być w pełni zautomatyzowany

więc jeśli umieścisz platform \ android \ ant.properties, co następuje

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
Simone Avogadro
źródło
1
W systemie Windows musisz pominąć ukośniki ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac
4

po prostu dużo się zastanawiałem, ponieważ mam ten sam problem, ale w mojej instalacji polecenie „cordova” nigdy nie było dostępne, a „phone gap build android --release” po prostu ignorowało platformę / android / ant.properties.

więc zaglądając do mojego filtra platformy znalazłem folder o nazwie "cordova", aw nim był plik binarny "build", który zaakceptował argument --release, poprosił mnie o breloczki i zakończyłem podpisanym i gotowym do produkcji APK.

to nigdy nie zostało udokumentowane w żadnej części strony z lukami telefonicznymi i szczerze mówiąc teraz trochę nienawidzę telefonowania :( miało to ułatwić, ale wszystko było po prostu skomplikowane :(

Freaktor
źródło
2

Tworzenie aplikacji PhoneGap na Androida do wdrożenia w sklepie Google Play

Te kroki będą działać w przypadku Cordova, PhoneGap lub Ionic. Jedyna różnica polegałaby na tym, że gdziekolwiek zostanie wykonane połączenie cordova, zamień je na phonegaplub ionic, dla swojego konkretnego scenariusza.

Gdy zakończysz tworzenie i będziesz gotowy do wdrożenia, wykonaj następujące kroki:

  1. Otwórz okno wiersza poleceń (Terminal w systemie macOS i Linux LUB Wiersz polecenia w systemie Windows).

  2. Udaj się do / path / to / your / project /, który nazywamy katalogiem głównym projektu.

  3. Będąc w katalogu głównym projektu, usuń wtyczkę „Console” z zestawu wtyczek.

    Polecenie to:cordova plugin rm cordova-plugin-console

  4. Będąc nadal w katalogu głównym projektu, użyj polecenia build cordova, aby utworzyć pakiet APK do dystrybucji wydania.

    Polecenie to:cordova build --release android

  5. Powyższy proces tworzy plik o nazwie android-release-unsigned.apkw folderzeProjectRoot/platforms/android/build/outputs/apk/

  6. Podpisz i wyrównaj APK, korzystając z instrukcji podanych na https://developer.android.com/studio/publish/app-signing.html#signing-manually

    Na końcu tego kroku plik APK, który otrzymasz, można przesłać do Sklepu Play .

Uwaga: jako nowicjusza lub początkującego ostatni krok może być nieco zagmatwany, tak jak dla mnie. Można napotkać kilka problemów i mieć pytania dotyczące tego, czym są te polecenia i gdzie je znaleźć.

Q1. Co to jest jarsigner i keytool ?
Odp: Instrukcje podpisywania aplikacji na Androida mówią dokładnie, o co chodzi w jarsigner i keytool, ALE nie mówi ci, gdzie je znaleźć, jeśli napotkasz ` ` błąd nie znaleziono polecenia '' w oknie wiersza poleceń.

Tak więc, jeśli masz Java Development Kit (JDK) dodany do zmiennej PATH , po prostu uruchom polecenia tak, jak w Przewodniku. ALE, jeśli nie masz go w swojej PATH, zawsze możesz uzyskać do nich dostęp z folderu bin instalacji JDK.

Q2. Gdzie jest zipalign ?
Odp: Istnieje duże prawdopodobieństwo, że polecenie zipalign nie zostanie znalezione i nie zostanie wyświetlony komunikat „Nie znaleziono polecenia”. Prawdopodobnie szukałbyś w Google zipalign i gdzie go znaleźć?

Narzędzie zipalign znajduje się w folderze instalacyjnym Android SDK. Na MacOS, domyślna lokalizacja jest, user-name/Library/Android/sdk/. Jeśli udać się do folderu, można znaleźć kilka innych folderów, takich jak docs, platform-tools, build-tools, tools, add-ons...

Otwórz w build-toolsfolderze. cd build-tools. W tym miejscu byłoby kilka folderów, które są wersjonowane zgodnie z łańcuchem narzędzi do kompilacji, którego używasz w Menedżerze Android SDK. ZipAlignjest dostępny w każdym z tych folderów. Osobiście sięgam po folder z najnowszą wersją. Otwórz dowolne.

W systemie MacOS lub Linux może być konieczne użycie ./zipalignzamiast zwykłego wpisywania, zipalignjak wspomniano w dokumentacji. W systemie Windows zipalignjest wystarczająco dobry.

incorelabs
źródło
1

Mam to do pracy, kopiując, wklejając podpisaną aplikację w tym samym katalogu, co zipalign. Wygląda na to, że aapt.exe nie mógł znaleźć pliku źródłowego, nawet jeśli podano mu ścieżkę. tzn. to nie zadziałało. zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk osiągnął aapt.exeCordovaApp-release-unsigned.apk, zamarł i po naciśnięciu powrotu „aapt.exeCordovaApp-release-unsigned.apk” nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy. I to zrobiło zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk

robert deveau
źródło
Dzięki za wskazówkę. Możesz również dołączyć ścieżkę do folderu zipalign w zmiennej środowiskowej PATH.
Guillermo Gutiérrez
0

Wiem, że to pytanie dotyczy konkretnie Phonegap 3.X, ale dla odniesienia każda wersja Phonegap powyżej 4.0.0 domyślnie używa Gradle zamiast Ant do kompilacji. Aby użyć Ant zamiast Gradle, możesz dodać to do pliku config.xml:

<preference name="android-build-tool" value="ant" />

Podczas korzystania z Gradle informacje dotyczące podpisywania magazynu kluczy muszą teraz zostać przeniesione do nowej lokalizacji ( jak opisano w tym poście ). Utwórz nowy plik o nazwie „ release-signing.properties ” w tym samym folderze co plik „build.gradle” i umieść w nim następującą zawartość:

storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
juliański
źródło
-7

Możesz wypróbować to polecenie, powinno zbudować i uruchomić aplikację (więc powinno zostać utworzone .apk):

phonegap local run android

Laurie Clark
źródło
3
Nadal tworzy tylko pakiety APK do debugowania.
Guillermo Gutiérrez,
2
Nie, po prostu tworzy pliki APK z podpisem debugowania, a nie udostępnia pakiety APK.
Guillermo Gutiérrez,
1
Znalazłem rozwiązanie tutaj (3/4 drogi w dół: „Finalizuj apk do przesyłania w Google Play”): iphonedevlog.wordpress.com/2013/08/16/...
Laurie Clark,