Bangun apk rilis android di Phonegap 3.x CLI

108

Bagaimana saya dapat membangun aplikasi android secara lokal menggunakan Phonegap 3.x CLI, siap untuk dirilis? Saya memeriksa folder bin yang dihasilkan di dalam direktori platforms / android dari proyek, dan hanya memiliki APK .debug.

Ngomong-ngomong, saya menggunakan perintah ini: phonegap local build android

Guillermo Gutiérrez
sumber

Jawaban:

153

Ini untuk Phonegap 3.0.x hingga 3.3.x. Untuk PhoneGap 3.4.0 dan yang lebih tinggi, lihat di bawah .

Temukan sebagian jawabannya di sini , di dokumentasi Phonegap. Proses lengkapnya adalah sebagai berikut:

  1. Buka jendela baris perintah, dan buka / path / ke / your / project / platforms / android / cordova .

  2. Lari build --release. Tindakan ini membuat APK rilis tidak bertanda tangan di / path / to / your / project / platforms / android / bin folder, yang disebut YourAppName-release-unsigned.apk.

  3. Tanda tangani dan sejajarkan APK menggunakan petunjuk di dokumen resmi pengembang Android .

Terima kasih kepada @LaurieClark untuk tautannya ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ), dan blogger yang mempostingnya, karena itu menempatkan saya di jalur yang benar.

Guillermo Gutiérrez
sumber
9
Saya harus memodifikasi file AndroidManifest.xml saya secara manual di mana saya harus <application android:debuggable="true"...mengubah ke<application android:debuggable="false"
Ian Jamieson
3
Anda juga harus meratakan zip setelah: zipalign -v 4 your-unaligned.apk your-aligned.apk
Damian
13
Saya menjalankan Cordova 3.4.1-0.1.0 dan file dibuat di/path/to/your/project/platforms/android/ant-build
AlexStack
1
Tampaknya, secara spesifik, ini untuk phonegap 3.0.x hingga 3.3.x, dari 3.4.x dan selanjutnya ini mungkin berbeda.
Guillermo Gutiérrez
Terima kasih banyak guillermo. +1
Quick_Silver
112

Di PhoneGap 3.4.0 Anda dapat menghubungi:

cordova build android --release

Jika Anda telah menyiapkan file 'ant.properties' di direktori 'platforms / android' seperti berikut:

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

Kemudian Anda akan dimintai kata sandi keystore dan file output (myapp-release.apk) berakhir di direktori 'platforms / android / ant-build' yang sudah ditandatangani dan disejajarkan serta siap untuk diterapkan.

Steven Anderson
sumber
1
Rilis 3.4.0 Cordova saat ini tidak menyertakan file 'ant-properties'.
SteAp
8
Dibuat ant.propertiesdi platforms/androiddan hanya menjatuhkan dua sifat ini ke dalamnya. Bekerja dengan sempurna, terima kasih!
Adam Tuttle
6
Jika Anda tidak yakin tentang keystore / alias atau cara membuatnya, detail lengkap ada di developer.android.com/tools/publishing/app-signing.html
Shai
6
Perhatikan juga bahwa Anda bisa menentukan properti key.store.password dan key.alias.password dalam file ini, jadi Anda tidak perlu memasukkannya setiap kali membuat rilis. Tentu saja berhati-hati dan jangan memasukkan file ini ke dalam sistem versi.
vbezhenar
5
Untuk cordova 5.0.0 dan yang lebih baru, buat build.json di root proyek Anda dan isi dengan {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ":" youalias "}}} alih-alih file ant.properties. FYI cordova.apache.org/docs/en/edge/…
artberri
19

Di 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

Jawaban sebelumnya:

Menurut cordova 5.0.0

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

dan jalankan ./build --release --buildConfig build.jsondari direktoriplatforms/android/cordova/

Lokasi file keystore relatif terhadap platforms/android/cordova/, jadi di .keystorefile konfigurasi di atas dan build.jsonberada di direktori yang sama.

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

KrIsHnA
sumber
15

Menindaklanjuti @ steven-anderson Anda juga dapat mengkonfigurasi kata sandi di dalam ant.properties, sehingga prosesnya dapat sepenuhnya otomatis

jadi jika Anda meletakkan di platform \ android \ ant.properties berikut ini

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
Simone Avogadro
sumber
1
Pada Windows Anda harus keluar dari garis miring ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac
4

hanya bertanya-tanya banyak karena saya mendapat masalah yang sama tetapi dalam instalasi saya perintah "cordova" tidak pernah tersedia dan "phone gap build android --release" hanya mengabaikan platform / android / ant.properties.

jadi melihat ke dalam filter platform saya, saya menemukan folder bernama "cordova" dan di dalamnya ada biner "build" yang menerima argumen --release, itu meminta saya untuk gantungan kunci dan saya mengakhirinya dengan ditandatangani dan siap untuk produksi APK.

ini tidak pernah didokumentasikan di bagian mana pun dari situs celah telepon dan terus terang sekarang saya agak benci phonegap :( itu seharusnya membuat segalanya lebih mudah tetapi semuanya hanya rumit :(

Freaktor
sumber
2

Membangun aplikasi Android PhoneGap untuk diterapkan ke Google Play Store

Langkah-langkah ini dapat digunakan untuk Cordova, PhoneGap atau Ionic. Satu-satunya perbedaan adalah, di mana pun panggilan ke cordovaditempatkan, ganti dengan phonegapatauionic , untuk skenario khusus Anda.

Setelah Anda selesai dengan pengembangan dan siap untuk menyebarkan, ikuti langkah-langkah berikut:

  1. Buka jendela baris perintah (Terminal di macOS dan Linux ATAU Prompt Perintah di Windows).

  2. Pergi ke / path / ke / your / project /, yang akan kami sebut sebagai Project Root.

  3. Saat berada di root proyek, hapus plugin "Konsol" dari kumpulan plugin Anda.

    Perintahnya adalah:cordova plugin rm cordova-plugin-console

  4. Saat masih di root project, gunakan perintah build cordova untuk membuat APK untuk distribusi rilis.

    Perintahnya adalah:cordova build --release android

  5. Proses di atas membuat file yang disebut android-release-unsigned.apkdi folderProjectRoot/platforms/android/build/outputs/apk/

  6. Menandatangani dan menyelaraskan APK menggunakan petunjuk di https://developer.android.com/studio/publish/app-signing.html#signing-manually

    Di akhir langkah ini, APK yang Anda dapatkan dapat diunggah ke Play Store .

Catatan: Sebagai pemula atau pemula, langkah terakhir mungkin agak membingungkan bagi saya. Seseorang mungkin mengalami beberapa masalah dan mungkin memiliki beberapa pertanyaan tentang apa perintah ini dan di mana menemukannya.

P1. Apa itu jarsigner dan keytool ?
Jawab: Petunjuk Penandatanganan Aplikasi Android memberi tahu Anda secara spesifik tentang apa itu jarsigner dan keytool TETAPI tidak memberi tahu Anda di mana menemukannya jika Anda mengalami 'perintah tidak ditemukan kesalahan' pada jendela baris perintah.

Jadi, jika Anda memiliki Java Development Kit (JDK) yang ditambahkan ke variabel PATH Anda , cukup menjalankan perintah seperti di Panduan akan berfungsi. NAMUN, jika Anda tidak memilikinya di PATH, Anda selalu dapat mengaksesnya dari folder bin instalasi JDK Anda.

Q2. Dimana zipalign ?
Jawab: Ada kemungkinan besar untuk tidak menemukan perintah zipalign dan menerima 'kesalahan perintah tidak ditemukan'. Anda mungkin akan googling zipalign dan di mana menemukannya?

The zipalign utilitas hadir dalam folder instalasi Android SDK. Di macOS, lokasi default berada di user-name/Library/Android/sdk/,. Jika Anda kepala ke folder yang Anda akan menemukan sekelompok folder lain seperti docs, platform-tools, build-tools, tools, add-ons...

Buka build-toolsfolder. cd build-tools. Di sini, akan ada sejumlah folder yang diversi sesuai dengan build tool-chain yang Anda gunakan di Android SDK Manager. ZipAligntersedia di masing-masing folder ini. Saya pribadi mencari folder dengan versi terbaru di atasnya. Buka Any.

Di macOS atau Linux, Anda mungkin harus menggunakan ./zipaligndaripada hanya mengetik zipalignseperti yang disebutkan dalam dokumentasi. Di Windows, zipalignsudah cukup bagus.

tidak tercemar
sumber
1

Saya mendapatkan ini untuk bekerja dengan menyalin menempelkan aplikasi yang ditandatangani di direktori yang sama dengan zipalign. Tampaknya aapt.exe tidak dapat menemukan file sumber bahkan ketika diberi jalur. yaitu ini tidak berfungsi zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk itu mencapai aapt.exeCordovaApp-release-unsigned.apk, membeku dan setelah menekan kembali 'aapt.exeCordovaApp-release-unsigned.apk' tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dioperasikan, atau file batch. Dan ini melakukan zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk

robert deveau
sumber
Terima kasih atas tipnya. Anda juga dapat menyertakan jalur ke folder zipalign di variabel lingkungan PATH.
Guillermo Gutiérrez
0

Saya tahu pertanyaan ini menanyakan tentang Phonegap 3.X secara khusus, tetapi hanya untuk referensi, versi Phonegap di atas 4.0.0 menggunakan Gradle, bukan Ant untuk membangun secara default. Untuk menggunakan Ant, bukan Gradle, Anda dapat menambahkan ini ke config.xml:

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

Saat menggunakan Gradle, informasi penandatanganan keystore sekarang harus pergi ke lokasi baru ( seperti yang diuraikan dalam posting ini ). Buat file baru bernama ' release-signing.properties ' di folder yang sama dengan file "build.gradle" dan letakkan di dalam konten berikut:

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
Julian
sumber
-7

Anda dapat mencoba perintah ini, itu harus membangun dan menjalankan aplikasi (jadi .apk harus dibuat):

phonegap local run android

Laurie Clark
sumber
3
Itu masih membuat hanya APK debug.
Guillermo Gutiérrez
2
Tidak, ini hanya membuat APK bertanda debug, bukan APK rilis.
Guillermo Gutiérrez
1
Temukan
Laurie Clark