Phonegap 3.x CLI'de android sürüm apk oluşturun


108

Phonegap 3.x CLI'yi kullanarak yerel olarak bir Android uygulamasını nasıl yayınlayabilirim? Projenin platformlar / android dizini içinde oluşturulan bin klasörünü kontrol ediyorum ve sadece .debug APK'ları var.

Bu arada, şu komutu kullanıyorum: phonegap local build android

Yanıtlar:


153

Bu Phonegap 3.0.x - 3.3.x içindir. PhoneGap 3.4.0 ve üstü için aşağıya bakın .

Phonegap belgelerinde cevabın bir kısmını burada bulabilirsiniz . Tam süreç şu şekildedir:

  1. Bir komut satırı penceresi açın ve / yol / yol / sizin / proje / platformlar / android / cordova konumuna gidin .

  2. Çalıştır build --release. Bu, YourAppName-release-unsigned.apk adında / yol / / proje / platformlar / android / bin klasöründe imzasız bir yayın APK oluşturur .

  3. Android geliştirici resmi belgelerindeki talimatları kullanarak APK'yi imzalayın ve hizalayın .

Bağlantı için @LaurieClark'a teşekkürler ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ) ve onu gönderen blogcu, çünkü beni yola çıkardı.


9
Değiştirmem <application android:debuggable="true"...gereken yerde AndroidManifest.xml dosyamı manuel olarak değiştirmem gerekiyordu<application android:debuggable="false"
Ian Jamieson

3
Zipalign -v 4 senin-unaligned.apk your-aligned.apk: Ayrıca fermuar fazla uyum sağlamaya şey sonra var
Damian

13
Cordova 3.4.1-0.1.0'ı çalıştırıyorum ve dosya oluşturuluyor/path/to/your/project/platforms/android/ant-build
AlexStack

1
Görünüşe göre, bu, telefon aralığı 3.0.x ila 3.3.x, 3.4.x ve ilerisi için bu değişebilir.
Guillermo Gutiérrez

Çok teşekkür ederim guillermo. +1
Quick_Silver

112

PhoneGap 3.4.0'da şunları arayabilirsiniz:

cordova build android --release

'Ant.properties' dosyasını 'platformlar / android' dizininde aşağıdaki gibi kurduysanız:

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

Ardından, anahtar deposu şifreniz istenir ve çıktı dosyası (myapp-release.apk), zaten imzalanmış ve hizalanmış ve dağıtıma hazır 'platformlar / android / ant-build' dizininde son bulur.


1
Cordova'nın mevcut 3.4.0 sürümü, bir 'karınca-özellikler' dosyası içermiyor.
SteAp

8
Düzenlendi ant.propertiesiçinde platforms/androidve bunun içine bu iki özelliği düştü sadece. Mükemmel çalışıyor, teşekkürler!
Adam Tuttle

6
Anahtar deposu / takma addan veya bunların nasıl oluşturulacağından emin değilseniz, tüm ayrıntılar developer.android.com/tools/publishing/app-signing.html
Shai

6
Ayrıca, bu dosyada key.store.password ve key.alias.password özelliklerini belirtebileceğinizi, böylece sürümü her oluşturduğunuzda bunu girmek zorunda kalmayacağınızı unutmayın. Elbette dikkatli olun ve bu dosyayı sürüm sistemine kaydetmeyin.
vbezhenar

5
Cordova 5.0.0 ve üstü için, projenizin kök dizininde bir build.json oluşturun ve bunu {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ile doldurun ant.properties dosyası yerine ":" youalias "}}}. Bilginize cordova.apache.org/docs/en/edge/…
artberri

19

Cordova 6.2.0'da

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

Önceki cevap:

Cordova 5.0.0'a göre

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

ve çalıştırma ./build --release --buildConfig build.jsondizindenplatforms/android/cordova/

anahtar deposu dosyasının konumu platforms/android/cordova/, bu nedenle yukarıdaki yapılandırma .keystoredosyasında ve build.jsonaynı dizinde bulunur.

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


15

@ Steven-anderson'ı takip ederek, ant.properties içindeki şifreleri de yapılandırabilirsiniz, böylece süreç tamamen otomatik hale getirilebilir

yani platform \ android \ ant.properties'e aşağıdakileri koyarsanız

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword

1
Windows'ta eğik çizgilerden kaçmalısınız ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac

4

aynı sorunu yaşadığım için çok merak ettim ama kurulumumda "cordova" komutu hiçbir zaman mevcut değildi ve "phone gap build android --release" platformu / android / ant.properties'i görmezden geldi.

bu yüzden platform filtremin içine baktığımda "cordova" adlı bir klasör buldum ve içinde --release argümanını kabul eden bir "yapı" ikili dosyası vardı, benden anahtar zincirlerini istedi ve imzalı ve üretime hazır bir şekilde bitirdim APK.

Bu, telefon açığı sitesinin herhangi bir bölümünde hiçbir zaman belgelenmedi ve açıkçası şimdi telefon açıklığından nefret ediyorum :( her şeyi kolaylaştırması gerekiyordu ama her şey karmaşıktı :(


2

Google Play Store'a dağıtılmak üzere PhoneGap Android uygulaması oluşturma

Bu adımlar Cordova, PhoneGap veya Ionic için işe yarayacaktır. Tek fark, bir arama nerede yapılırsa cordovayapılsın, kendi senaryonuz için onu phonegapveya ile değiştirmektir ionic.

Geliştirmeyi tamamladıktan ve dağıtmaya hazır olduğunuzda şu adımları izleyin:

  1. Bir komut satırı penceresi açın (macOS ve Linux'ta Terminal VEYA Windows'ta Komut İstemi).

  2. Proje Kökü olarak adlandıracağımız / yol / yol / sizin / projenize / gidin.

  3. Proje kök dizinindeyken, eklenti grubunuzdan "Konsol" eklentisini kaldırın.

    Komut şudur:cordova plugin rm cordova-plugin-console

  4. Hala proje kökündeyken, sürüm dağıtımı için bir APK oluşturmak üzere cordova build komutunu kullanın.

    Komut şudur:cordova build --release android

  5. Yukarıdaki işlem android-release-unsigned.apkklasörde çağrılan bir dosya oluştururProjectRoot/platforms/android/build/outputs/apk/

  6. APK'yi https://developer.android.com/studio/publish/app-signing.html#signing-manually adresindeki talimatları kullanarak imzalayın ve hizalayın

    Bu adımın sonunda, edindiğiniz APK Play Store'a yüklenebilir .

Not: Bir acemi ya da yeni başlayan biri olarak, son adım benim için olduğu gibi biraz kafa karıştırıcı olabilir. Kişi birkaç sorunla karşılaşabilir ve bu komutların ne olduğu ve nerede bulunacağıyla ilgili bazı soruları olabilir.

S1. Nelerdir jarsigner ve keytool ?
Cevap: Android Uygulama İmzalama talimatları size özellikle hangi jarsigner ve keytool ile ilgili olduğunu söyler ANCAK komut satırı penceresinde bir 'komut bulunamadı hatası' ile karşılaşırsanız bunları nerede bulacağınızı söylemez.

Bu nedenle, PATH değişkeninize Java Geliştirme Kiti (JDK) eklenmişse , yalnızca Kılavuzdaki gibi komutları çalıştırmak işe yarar . ANCAK, PATH'nizde yoksa, bunlara her zaman JDK kurulumunuzun bin klasöründen erişebilirsiniz .

S2. Zipalign nerede ?
Cevap: Zipalign komutunu bulamama ve 'komut bulunamadı hatası' alma olasılığı yüksek . Muhtemelen Google'da zipalign kullanıyor olacaksınız ve nerede bulacaksınız? Zipalign yarar Android SDK yükleme klasörü içinde bulunur. MacOS'ta varsayılan konum, adresindedir . Eğer klasöre sından Eğer gibi diğer klasörlerin bir demet bulacağını , , , , ... Açık klasöründe. . Burada, Android SDK Yöneticisinde kullandığınız derleme araç zincirine göre sürümleri belirlenmiş birkaç klasör olacaktır. zipalign

user-name/Library/Android/sdk/docsplatform-toolsbuild-toolstoolsadd-ons

build-toolscd build-toolsbu klasörlerin her birinde mevcuttur. Kişisel olarak en son sürümün bulunduğu klasöre gidiyorum. Herhangi birini açın.

MacOS veya Linux'ta kullanmanız gerekebilir./zipalignzipalignbelgelerde bahsedildiği gibi yazmak yerine . Windows'ta zipalignyeterince iyidir.


1

İmzalı uygulamayı zipalign ile aynı dizine yapıştırarak kopyalayarak bunu çalıştırdım. Aapt.exe, yol verildiğinde bile kaynak dosyayı bulamadı. yani bu zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk çalışmadı, aapt.exeCordovaApp-release-unsigned.apk'a ulaştı, dondu ve dönüşe basıldığında 'aapt.exeCordovaApp-release-unsigned.apk' dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmaz. Ve bu zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk yaptı


Bahşiş için teşekkürler. Ayrıca zipalign klasörünün yolunu PATH ortam değişkenine dahil edebilirsiniz.
Guillermo Gutiérrez

0

Bu sorunun özellikle Phonegap 3.X hakkında sorulduğunu biliyorum, ancak yalnızca 4.0.0'ın üzerindeki herhangi bir Phonegap sürümüne başvurmak için varsayılan olarak oluşturmak için Ant yerine Gradle kullanıyor . Gradle yerine Ant kullanmak için bunu config.xml dosyanıza ekleyebilirsiniz:

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

Gradle'ı kullanırken, anahtar deposu imzalama bilgilerinin artık yeni bir konuma gitmesi gerekiyor ( bu yazıda belirtildiği gibi ). 'Adı verilen yeni bir dosya oluşturun release-signing.properties aşağıdaki içeriği içinde "build.gradle" dosyası ve koymak aynı klasörde':

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.