สร้าง android ปล่อย apk บน Phonegap 3.x CLI


108

ฉันจะสร้างแอป Android ในเครื่องโดยใช้ Phonegap 3.x CLI พร้อมเผยแพร่ได้อย่างไร ฉันตรวจสอบโฟลเดอร์ bin ที่สร้างขึ้นภายในไดเร็กทอรี platform / android ของโปรเจ็กต์และมีเฉพาะ. debug APK เท่านั้น

อย่างไรก็ตามฉันใช้คำสั่งนี้: phonegap local build android

คำตอบ:


153

สำหรับ Phonegap 3.0.x ถึง 3.3.x สำหรับ PhoneGap 3.4.0 และสูงกว่าเห็นด้านล่าง

พบส่วนหนึ่งของคำตอบที่นี่ในเอกสาร Phonegap กระบวนการทั้งหมดมีดังต่อไปนี้:

  1. เปิดหน้าต่างบรรทัดคำสั่งและไป / เส้นทาง / เพื่อ / โครงการ / คุณ / / แพลตฟอร์ม

  2. build --releaseวิ่ง สิ่งนี้จะสร้าง APK รุ่นที่ไม่ได้ลงชื่อที่โฟลเดอร์ / path / to / your / project / platforms / android / binเรียกว่า YourAppName-release-unsigned.apk

  3. เข้าสู่ระบบและจัดเอพีเคโดยใช้คำแนะนำที่นักพัฒนาหุ่นยนต์เอกสารอย่างเป็นทางการ

ขอบคุณ @LaurieClark สำหรับลิงค์ ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ) และบล็อกเกอร์ที่โพสต์เพราะมันทำให้ฉันติดตาม


9
ฉันต้องแก้ไขไฟล์ AndroidManifest.xml ด้วยตนเองซึ่ง<application android:debuggable="true"...ฉันต้องเปลี่ยนเป็นไฟล์<application android:debuggable="false"
Ian Jamieson

3
คุณต้องจัดเรียงสิ่งที่อยู่หลัง: zipalign -v 4 your-unaligned.apk your-aligned.apk
Damian

13
ฉันใช้ Cordova 3.4.1-0.1.0 และไฟล์ถูกสร้างใน/path/to/your/project/platforms/android/ant-build
AlexStack

1
ดูเหมือนว่าเฉพาะสำหรับ phonegap 3.0.x ถึง 3.3.x จาก 3.4.x และข้างหน้าซึ่งอาจแตกต่างกันไป
Guillermo Gutiérrez

ขอบคุณมาก guillermo +1
Quick_Silver

112

ใน PhoneGap 3.4.0 คุณสามารถโทร:

cordova build android --release

หากคุณตั้งค่าไฟล์ 'ant.properties' ในไดเร็กทอรี 'platform / android' ดังต่อไปนี้:

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

จากนั้นคุณจะได้รับแจ้งให้ใส่รหัสผ่านที่เก็บคีย์ของคุณและไฟล์ผลลัพธ์ (myapp-release.apk) จะลงเอยในไดเร็กทอรี 'platform / android / ant-build' ที่ลงชื่อและจัดตำแหน่งไว้แล้วและพร้อมที่จะปรับใช้


1
Cordova รุ่น 3.4.0 ในปัจจุบันไม่มีไฟล์ 'ant-properties'
SteAp

8
ที่สร้างant.propertiesในplatforms/androidและเพียงแค่ปรับตัวลดลงทั้งสองคุณสมบัติเป็นมัน ทำงานได้อย่างสมบูรณ์ขอบคุณ!
Adam Tuttle

6
หากคุณไม่แน่ใจเกี่ยวกับที่เก็บคีย์ / นามแฝงหรือวิธีการสร้างรายละเอียดทั้งหมดอยู่ที่developer.android.com/tools/publishing/app-signing.html
Shai

6
โปรดทราบว่าคุณสามารถระบุคุณสมบัติ key.store.password และ key.alias.password ในไฟล์นี้ได้ดังนั้นคุณจะไม่ต้องป้อนทุกครั้งที่สร้างรีลีส แน่นอนว่าต้องระมัดระวังและอย่าส่งไฟล์นี้ไปยังระบบเวอร์ชัน
vbezhenar

5
สำหรับ Cordova 5.0.0 ขึ้นไปให้สร้าง build.json ในรูทของโปรเจ็กต์ของคุณและเติมด้วย {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ":" youalias "}}} แทนไฟล์ ant.properties FYI cordova.apache.org/docs/en/edge/…
artberri

19

ใน 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

คำตอบก่อนหน้า:

อ้างอิงจาก Cordova 5.0.0.0

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

และเรียกใช้./build --release --buildConfig build.jsonจากไดเรกทอรีplatforms/android/cordova/

ตำแหน่งไฟล์ที่เก็บคีย์นั้นสัมพันธ์กับplatforms/android/cordova/ดังนั้นใน.keystoreไฟล์คอนฟิกูเรชันด้านบนและbuild.jsonอยู่ในไดเร็กทอรีเดียวกัน

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


15

ติดตามถึง @ steven-anderson คุณยังสามารถกำหนดค่ารหัสผ่านภายใน ant.properties ดังนั้นกระบวนการจึงเป็นไปโดยอัตโนมัติ

ดังนั้นหากคุณใส่ platform \ android \ ant.properties ดังต่อไปนี้

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

1
ใน Windows คุณต้องออกจากเครื่องหมายทับ ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ... '
bkomac

4

เพิ่งสงสัยมากเพราะฉันมีปัญหาเดียวกัน แต่ในการติดตั้งคำสั่ง "cordova" ไม่สามารถใช้งานได้และ "phone gap build android --release" ก็ไม่สนใจแพลตฟอร์ม / android / ant.properties

ดังนั้นเมื่อมองเข้าไปในตัวกรองแพลตฟอร์มของฉันฉันพบโฟลเดอร์ชื่อ "Cordova" และข้างในนั้นมีไบนารี "build" ที่ยอมรับอาร์กิวเมนต์ --release มันถามฉันถึงพวงกุญแจและฉันก็ลงเอยด้วยการเซ็นชื่อและพร้อมสำหรับการผลิต APK

สิ่งนี้ไม่เคยถูกบันทึกไว้ในส่วนใด ๆ ของไซต์ช่องว่างของโทรศัพท์และพูดตรงไปตรงมาตอนนี้ฉันเกลียด phonegap :( มันควรจะทำให้สิ่งต่างๆง่ายขึ้น แต่ทุกอย่างก็ซับซ้อน :(


2

การสร้างแอพ PhoneGap Android สำหรับการปรับใช้กับ Google Play Store

ขั้นตอนเหล่านี้ใช้ได้กับ Cordova, PhoneGap หรือ Ionic ความแตกต่างเพียงอย่างเดียวคือไม่ว่าจะโทรไปที่cordovaใดแทนที่ด้วยphonegapหรือionicสำหรับสถานการณ์เฉพาะของคุณ

เมื่อคุณพัฒนาเสร็จแล้วและพร้อมที่จะปรับใช้ให้ทำตามขั้นตอนเหล่านี้:

  1. เปิดหน้าต่างบรรทัดคำสั่ง (Terminal บน macOS และ Linux หรือ Command Prompt บน Windows)

  2. ตรงไปที่ / path / to / your / project / ซึ่งเราจะเรียกว่า Project Root

  3. ขณะอยู่ที่รูทโปรเจ็กต์ให้ลบปลั๊กอิน "คอนโซล" ออกจากชุดปลั๊กอินของคุณ

    คำสั่งคือ:cordova plugin rm cordova-plugin-console

  4. ในขณะที่ยังอยู่ที่รูทโปรเจ็กต์ให้ใช้คำสั่ง Cordova build เพื่อสร้าง APK สำหรับการแจกจ่ายรุ่น

    คำสั่งคือ:cordova build --release android

  5. กระบวนการข้างต้นสร้างไฟล์ที่เรียกว่าandroid-release-unsigned.apkในโฟลเดอร์ProjectRoot/platforms/android/build/outputs/apk/

  6. ลงชื่อและจัดแนว APK โดยใช้คำแนะนำที่https://developer.android.com/studio/publish/app-signing.html#signing- ด้วยตนเอง

    ในตอนท้ายของขั้นตอนนี้ APK ที่คุณได้รับสามารถอัปโหลดไปยัง Play Store ได้ .

หมายเหตุ:ในฐานะมือใหม่หรือมือใหม่ขั้นตอนสุดท้ายอาจจะสับสนเล็กน้อยสำหรับฉัน อาจพบปัญหาเล็กน้อยและอาจมีคำถามว่าคำสั่งเหล่านี้คืออะไรและจะหาได้ที่ไหน

คำถามที่ 1 อะไรคือJarsignerและkeytool ?
คำตอบ:คำแนะนำในการลงนามแอป Android จะบอกคุณโดยเฉพาะว่าjarsignerและkeytoolเป็นข้อมูลเกี่ยวกับอะไร แต่ไม่ได้บอกคุณว่าจะหาได้จากที่ใดหากคุณพบข้อผิดพลาด 'command not found' ในหน้าต่างบรรทัดคำสั่ง

ดังนั้นหากคุณได้เพิ่ม Java Development Kit (JDK) ลงในตัวแปรPATHของคุณเพียงแค่เรียกใช้คำสั่งตามที่อยู่ในคำแนะนำก็จะใช้งานได้ แต่ถ้าคุณไม่มีใน PATH คุณสามารถเข้าถึงได้จากถังขยะเสมอโฟลเดอร์ของการติดตั้ง JDK ของคุณ

คำถามที่ 2 อยู่ที่ไหนzipalign ?
ตอบ:มีความเป็นไปได้สูงที่จะไม่พบคำสั่งzipalignและได้รับคำสั่ง 'command not found error' คุณอาจจะ googling zipalignและจะหาได้ที่ไหน? zipalignยูทิลิตี้ที่มีอยู่ภายในโฟลเดอร์การติดตั้ง Android SDK บน MacOS ตั้งเริ่มต้นที่, หากคุณตรงไปที่โฟลเดอร์ที่คุณจะพบพวงของโฟลเดอร์อื่น ๆ ชอบ, , , , ... เปิดโฟลเดอร์ . ในที่นี้จะมีโฟลเดอร์จำนวนมากซึ่งได้รับการกำหนดเวอร์ชันตามสายโซ่เครื่องมือการสร้างที่คุณใช้ใน Android SDK Manager ZipAlign

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

build-toolscd build-toolsมีอยู่ในแต่ละโฟลเดอร์เหล่านี้ ฉันเองไปหาโฟลเดอร์ที่มีเวอร์ชันล่าสุดอยู่ เปิดอะไรก็ได้

บน macOS หรือ Linux คุณอาจต้องใช้./zipalignแทนที่จะพิมพ์เพียงอย่างzipalignเดียวตามที่เอกสารกล่าวถึง บน Windows zipalignดีพอ


1

ฉันทำให้สิ่งนี้ทำงานได้โดยการคัดลอกวางแอปที่ลงนามใน dir เดียวกันกับ zipalign ดูเหมือนว่า aapt.exe ไม่พบไฟล์ต้นฉบับแม้ว่าจะระบุเส้นทางก็ตาม กล่าวคือไม่ได้ผล zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk ถึง aapt.exeCordovaApp-release-unsigned.apk, แช่แข็งและเมื่อกดปุ่ม return 'aapt.exeCordovaApp-release-unsigned.apk' ไม่รู้จักเป็นคำสั่งภายในหรือภายนอกโปรแกรมที่ใช้งานได้หรือไฟล์แบตช์ และสิ่งนี้ทำให้ zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk


ขอบคุณสำหรับทิป. คุณยังสามารถรวมพา ธ ไปยังโฟลเดอร์ของ zipalign ในตัวแปรสภาพแวดล้อม PATH
Guillermo Gutiérrez

0

ฉันรู้ว่าคำถามนี้ถามเกี่ยวกับ Phonegap 3.X โดยเฉพาะ แต่สำหรับการอ้างอิงPhonegap เวอร์ชันใด ๆ ที่สูงกว่า 4.0.0 นั้นใช้ Gradle แทน Antเพื่อสร้างตามค่าเริ่มต้น ในการใช้ Ant แทน Gradle คุณสามารถเพิ่มสิ่งนี้ใน config.xml ของคุณ:

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

เมื่อใช้ Gradle ข้อมูลการลงนามที่เก็บคีย์จะต้องไปยังตำแหน่งใหม่ ( ตามที่ระบุไว้ในโพสต์นี้ ) สร้างไฟล์ใหม่ชื่อ ' release-signing.properties ' ในโฟลเดอร์เดียวกับไฟล์ "build.gradle" และใส่เนื้อหาต่อไปนี้:

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

-7

คุณสามารถลองใช้คำสั่งนี้ควรสร้างและเรียกใช้แอป (ดังนั้นควรสร้าง. apk):

phonegap local run android


3
มันยังคงสร้างเฉพาะ APK ที่แก้ไขข้อบกพร่อง
Guillermo Gutiérrez

2
ไม่เป็นเพียงการสร้าง APK ที่ลงนามในการแก้ไขข้อบกพร่องไม่ใช่ปล่อย APK
Guillermo Gutiérrez

1
พบวิธีแก้ปัญหาที่นี่ (วิธีลง 3/4: "สรุป apk สำหรับ Google Play อัปโหลด"): iphonedevlog.wordpress.com/2013/08/16/…
Laurie Clark
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.