Phonegap 3.x CLI에서 Android 릴리스 APK 빌드


108

출시 할 준비가 된 Phonegap 3.x CLI를 사용하여 로컬에서 Android 앱을 빌드하려면 어떻게해야합니까? 프로젝트의 platform / android 디렉토리 내에 생성 된 bin 폴더를 확인하고 .debug APK 만 있습니다.

그런데 다음 명령을 사용합니다. phonegap local build android

답변:


153

이것은 Phonegap 3.0.x에서 3.3.x까지입니다. PhoneGap 3.4.0 이상의 경우 아래를 참조하십시오 .

대답의 찾을 일부 여기 폰갭 문서에서. 전체 프로세스는 다음과 같습니다.

  1. 명령 줄 창을 열고 / path / to / your / project / platform / android / cordova로 이동 합니다.

  2. 을 실행 build --release합니다. 그러면 / path / to / your / project / platform / android / bin 폴더에 YourAppName-release-unsigned.apk라는 서명되지 않은 릴리스 APK가 생성 됩니다.

  3. Android 개발자 공식 문서 의 지침에 따라 APK에 서명하고 정렬합니다 .

링크에 대한 @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"...I가 변경 필요<application android:debuggable="false"
이안 제이미 슨

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에서 3.3.x로, 이것은 다를 수 있습니다.
Guillermo Gutiérrez

기예르모 감사합니다. +1
Quick_Silver 2015

112

PhoneGap 3.4.0에서는 다음을 호출 할 수 있습니다.

cordova build android --release

다음과 같이 'platforms / android'디렉토리에 'ant.properties'파일을 설정 한 경우 :

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

그런 다음 키 저장소 비밀번호를 입력하라는 메시지가 표시되고 출력 파일 (myapp-release.apk)은 이미 서명되고 정렬되어 배포 할 준비가 된 'platforms / android / ant-build'디렉토리에 있습니다.


1
Cordova의 현재 3.4.0 릴리스에는 'ant-properties'파일이 포함되어 있지 않습니다.
SteAp

8
생성 ant.properties에서 platforms/android와 그것으로이 두 가지 속성을 떨어 단지. 완벽하게 작동합니다. 감사합니다!
Adam Tuttle

6
keystore / alias 또는 생성 방법에 대해 확실하지 않은 경우 전체 세부 정보는 developer.android.com/tools/publishing/app-signing.html
Shai 2014 년

6
또한이 파일에서 key.store.password 및 key.alias.password 속성을 지정할 수 있으므로 릴리스를 빌드 할 때마다 입력 할 필요가 없습니다. 물론주의하고이 파일을 버전 시스템에 커밋하지 마십시오.
vbezhenar 2014-08-12

5
cordova 5.0.0 이상에서는 프로젝트 루트에 build.json을 만들고 { "android": { "release": { "keystore": "/path/to/your.keystore", "alias"로 채 웁니다. ant.properties 파일 대신 ":"youalias "}}}. 참고로 cordova.apache.org/docs/en/edge/…
artberri

19

코르도바 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에 따르면

{
     "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에서 당신은 '\\ OpenSSL을-Win32에서 \\ 인증서 표시 \\ android_key_store.keystore ... key.store = C'... 슬래시를 이스케이프해야합니다
bkomac

4

동일한 문제가 발생했기 때문에 많은 궁금증이 있었지만 설치에서 "cordova"명령을 사용할 수 없었고 "phone gap build android --release"는 platform / android / ant.properties를 무시했습니다.

그래서 내 플랫폼 필터 내부를 살펴보면 "cordova"라는 폴더를 찾았고 그 안에 --release 인수를 허용하는 "빌드"바이너리가있었습니다. 키 체인을 요청했고 서명을 받고 프로덕션 준비를 마쳤습니다. APK.

이것은 전화 갭 사이트의 어떤 부분에도 문서화되지 않았으며 솔직히 말하면 나는 phonegap을 조금 싫어합니다 :( 일을 더 쉽게 만들려고했지만 모든 것이 복잡했습니다 :(


2

Google Play 스토어에 배포 할 PhoneGap Android 앱 빌드

이 단계는 Cordova, PhoneGap 또는 Ionic에서 작동합니다. 유일한 차이점은 호출이있는 곳마다 특정 시나리오에 대해 또는로 cordova바꾸는 것입니다 .phonegapionic

개발을 완료하고 배포 할 준비가되면 다음 단계를 따르세요.

  1. 명령 줄 창 (macOS 및 Linux의 터미널 또는 Windows의 명령 프롬프트)을 엽니 다.

  2. 프로젝트 루트라고하는 / path / to / your / project /로 이동합니다.

  3. 프로젝트 루트에있는 동안 플러그인 세트에서 "콘솔"플러그인을 제거하십시오.

    명령은 다음과 같습니다.cordova plugin rm cordova-plugin-console

  4. 아직 프로젝트 루트에있는 동안 cordova 빌드 명령을 사용하여 릴리스 배포 용 APK를 만듭니다.

    명령은 다음과 같습니다.cordova build --release android

  5. 위의 프로세스 android-release-unsigned.apk는 폴더에 라는 파일을 만듭니다.ProjectRoot/platforms/android/build/outputs/apk/

  6. https://developer.android.com/studio/publish/app-signing.html#signing-manually 의 지침을 사용하여 APK에 서명하고 정렬합니다.

    이 단계가 끝나면 다운로드 한 APK를 Play 스토어에 업로드 할 수 있습니다. .

참고 : 초보자 또는 초보자로서 마지막 단계는 저에게 약간 혼란 스러울 수 있습니다. 몇 가지 문제가 발생할 수 있으며 이러한 명령이 무엇이며 어디에서 찾을 수 있는지에 대해 몇 가지 질문이있을 수 있습니다.

Q1. jarsignerkeytool 은 무엇입니까 ?
정답 : Android 앱 서명 지침은 jarsignerkeytool 이 무엇인지 구체적으로 알려 주지만 명령 줄 창에서 '명령을 찾을 수 없음 오류'가 발생하는 경우 어디서 찾을 수 있는지 알려주지 않습니다.

따라서 PATH 변수에 JDK (Java Development Kit)를 추가 한 경우 가이드에있는 명령을 실행하기 만하면됩니다. 그러나 PATH에없는 경우 언제든지 JDK 설치 의 bin 폴더 에서 액세스 할 수 있습니다 .

Q2. zipalign 은 어디에 있습니까 ? 답변
: zipalign 명령을 찾지 못하고 '명령을 찾을 수 없음 오류'를 수신 할 가능성이 높습니다 . zipalign을 검색 하고 어디에서 찾을 수 있습니까? zipalign을 유틸리티는 안드로이드 SDK 설치 폴더 내에 존재입니다. macOS에서 기본 위치는 입니다. 당신이 폴더로 향할 경우 같은 다른 폴더의 무리 찾을 것 , , , , ... 를 열고 폴더에 있습니다. . 여기에는 Android SDK Manager에서 사용중인 빌드 도구 체인에 따라 버전이 지정된 여러 폴더가 있습니다. ZipAlign

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

build-toolscd build-tools각 폴더에서 사용할 수 있습니다. 저는 개인적으로 최신 버전이있는 폴더를 찾습니다. 모두 열기.

macOS 또는 Linux 에서는 설명서에 언급 ./zipalignzipalign대로 단순히 입력 하는 대신 사용해야 할 수 있습니다 . Windows에서는 zipalign충분합니다.


1

서명 된 앱을 zipalign과 동일한 디렉토리에 복사하여 붙여 넣어이 작업을 수행했습니다. aapt.exe가 경로를 지정해도 소스 파일을 찾을 수없는 것 같습니다. 즉, 이것은 작동하지 않았습니다. 'aapt.exeCordovaApp-release-unsigned.apk'는 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. 그리고 이것은 zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk


팁 고마워. PATH 환경 변수에 zipalign의 폴더 경로를 포함 할 수도 있습니다.
Guillermo Gutiérrez 2015 년

0

이 질문이 Phonegap 3.X에 대해 구체적으로 묻는 것을 알고 있지만 참조를 위해 4.0.0 이상의 Phonegap 버전 은 기본적으로 Ant 대신 Gradle을 사용합니다 . Gradle 대신 Ant를 사용하려면이를 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 방법 아래 : "Google Play 업로드를위한 apk 완료") : iphonedevlog.wordpress.com/2013/08/16/…
Laurie Clark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.