Cordova 명령줄 인터페이스를 사용하여 서명된 APK 파일을 만드는 방법은 무엇입니까?
라는 이름의 샘플 애플리케이션을 만들었습니다.checkStatus
이제 서명된 APK 파일을 만들고 싶습니다.테스트를 위해 다른 장치에 설치할 수 있습니다.
이를 위해 구글에서 이 문서를 찾았습니다.
문서에 따라 프로젝트 디렉터리로 전환하고 다음 명령을 실행했습니다.
keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000
위의 명령어를 실행한 후에 다음과 같은 이름의 파일을 받았습니다.key-name.keystore
projectRoot/key-name.keystore
.
그 해서 그고나그파복사붙서해여다니습었넣일을리서다▁into▁and로 붙여넣었습니다.projectRoot/platforms/android/key-name.keystore
.
그 후, 저는 다음과 같은 이름의 파일을 만들었습니다.ant.properties
저습니다장에 했습니다.projectRoot/platforms/android
.
파일 안에 다음 코드를 작성했습니다.
key.store=projectRoot/key-name.keystore
key.alias=myApp
그런 다음 다음 명령을 실행하여 다음 명령을 해제했습니다.
Cordova builds android --release
다음 오류가 발생했습니다.
/home/projectRoot/platforms/android/cordova/node_modules/q/q.js:126
throw e;
^
Error code 1 for command: ant with args: release,-f,/home/projectRoot/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen
Error: /home/projectRoot/platforms/android/cordova/build: Command failed with exit code 8
at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:753:16)
at Process.ChildProcess._handle.onexit (child_process.js:820:5)
그래서 이번에 수정했습니다.key.store
에 가치가 있는.ant.properties
다음과 같은 방법으로 파일을 작성합니다.
key.store=/home/projectRoot/platforms/android/key-name.keystore
다시, 나는 실행했습니다.cordova build android --release
오류를 시킵니다.동일한 오류를 발생시킵니다.
제가 뭘 잘못했는지 누가 말해줄 수 있나요?
1단계:
D:\projects\Phonegap\Example> cordova plugin rm org.apache.cordova.console --save
을가를 --save
을 래서그 제거다니합을에서 .config.xml
java.
2단계:
빌드를 Android 릴 리 스 빌 드 생 면 려 먼 변 약 야 합 해 니 경 다 간 버 을 전 용 다 음 저 를 하 성 ▁to 합 니 ▁to 다 ▁for ▁the ▁ ▁a ▁need ▁small ▁to ▁make ▁first ▁build ▁we ▁a 야 ▁generate ▁release 용 릴AndroidManifest.xml
플랫폼/서버에 파일이 있습니다.파일을 편집하고 줄을 변경합니다.
<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
변경 그고변화리android:debuggable
false
:
<application android:debuggable="false" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
cordova 6.2.0부터는 rodroid:debugable 태그를 완전히 제거합니다.다음은 코르도바의 설명입니다.
"하드코딩된 디버그 모드" 유형의 문제에 대한 설명:안드로이드:디버깅 가능한 속성은 매니페스트에서 제외하는 것이 가장 좋습니다.그렇게 하면 에뮬레이터나 장치에서 디버그할 APK를 구축할 때 도구에 Android:duggable=true가 자동으로 삽입됩니다.그리고 APK 내보내기와 같은 릴리스 빌드를 수행하면 자동으로 false로 설정됩니다.
매니페스트 파일에 특정 값을 지정하는 경우 도구는 항상 이 값을 사용합니다.이로 인해 실수로 디버그 정보가 포함된 앱을 게시할 수 있습니다.
3단계:
이제 Cordova에 릴리스 빌드를 생성하도록 지시할 수 있습니다.
D:\projects\Phonegap\Example> cordova build --release android
되지 않은 을 그러면서 APK 파찾수있에서 수 .platforms/android/ant-build
이 예제에서 파일은 다음과 같습니다.platforms/android/ant-build/Example-release-unsigned.apk
4단계:
:는 저희의 키스토어를 가지고 .keystoreNAME-mobileapps.keystore
이 Git Repo에서 다른 것을 생성하려면 다음 단계를 진행하십시오.
키 생성:
구문:
keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>
예:
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000
keystore password? : xxxxxxx
What is your first and last name? : xxxxxx
What is the name of your organizational unit? : xxxxxxxx
What is the name of your organization? : xxxxxxxxx
What is the name of your City or Locality? : xxxxxxx
What is the name of your State or Province? : xxxxx
What is the two-letter country code for this unit? : xxx
그러면 키 저장소가 NAME-mobile apps라는 이름으로 생성됩니다.키스토어
5단계:
생성된 키 저장소 위치
구 버전의 코르도바
D:\projects\Phonegap\Example\platforms\android\ant-build
새 버전의 코르도바
D:\projects\Phonegap\Example\platforms\android\build\outputs\apk
서명되지 않은 APK에 서명하려면 JDK에도 포함된 jarsigner 도구를 실행합니다.
구문:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename> <Unsigned APK file> <Keystore Alias name>
예:
D:\projects\Phonegap\Example\platforms\android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps
OR
D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps
Enter KeyPhrase as 'xxxxxxxx'
이것은 제자리에 apk를 표시합니다.
6단계:
마지막으로, APK를 최적화하기 위해 zip 정렬 도구를 실행해야 합니다.
D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk
OR
D:\projects\Phonegap\Example\platforms\android\ant-build> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk
OR
D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk
이제 example.apk라는 최종 릴리스 바이너리가 있으며 이를 Google Play Store에 릴리스할 수 있습니다.
@malcubierre for Cordova 4(이후) 업데이트
는 파일을 .release-signing.properties
그고넣을 .APPFOLDER\platforms\android
folder
파일 내용: 두 번째 줄을 제외한 모든 항목에 대해 = 뒤에 편집
storeFile=C:/yourlocation/app.keystore
storeType=jks
keyAlias=aliasname
keyPassword=aliaspass
storePassword=password
그런 다음 이 명령은 릴리스 버전을 빌드해야 합니다.
cordova build android --release
- 이것은 . ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠCordova 10 with android 9
release-properties.properties 파일입니다.나는 만들어야만 했습니다.build.json
rootroot와 .내용은 다음과 같습니다. 위와 같이 대체하십시오.
{
"android": {
"release": {
"keystore": "C:/yourlocation/app.keystore",
"storePassword": "password",
"alias": "aliasname",
"password" : "aliaspass",
"keystoreType": ""
}
}
}
중 됩니다.release-signing.properties
에서 Android 폴서
현재 설명서에서는 키 저장소를 사용하여 build.json을 지정할 수 있습니다.
{
"android": {
"debug": {
"keystore": "..\android.keystore",
"storePassword": "android",
"alias": "mykey1",
"password" : "password",
"keystoreType": ""
},
"release": {
"keystore": "..\android.keystore",
"storePassword": "",
"alias": "mykey2",
"password" : "password",
"keystoreType": ""
}
}
}
그런 다음 --buildConfig 인수를 사용하여 다음과 같이 명령을 실행합니다.
cordova run android --buildConfig
1단계:
에 가다cordova\platforms\android
는 개가파일만듭다니을미다le▁fil▁a라고 불리는 파일을 .ant.properties
키 저장소 파일 정보가 있는 파일(이 키 저장소는 좋아하는 Android SDK, 스튜디오에서 생성할 수 있습니다...):
key.store=C:\\yourpath\\Yourkeystore.keystore
key.alias=youralias
2단계:
cordova 경로로 이동하여 다음을 실행합니다.
cordova build android --release
참고: 키 저장소 및 키 암호를 묻는 메시지가 표시됩니다.
앱 릴리스.pk가 나타날 것입니다.\cordova\platforms\android\ant-build
Cordova 6.2.0에서는 릴리스 빌드를 쉽게 생성할 수 있습니다.여기에 있는 다른 단계를 참조하십시오. 1, 2, 4단계
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
Mac(osx)에서 두 개의 .sh 파일을 생성했습니다. 하나는 첫 번째 게시용이고 다른 하나는 업데이트용입니다.
#!/bin/sh
echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n"
printf "Project dir : "
read DIR
printf "Project key alias : "
read ALIAS
cd $DIR/
cordova build --release android
cd platforms/android/build/outputs/apk/
keytool -genkey -v -keystore my-release-key.keystore -alias $ALIAS -keyalg RSA -keysize 2048 -validity 10000
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS
zipalign -v 4 android-release-unsigned.apk signedApk.apk
앱을 업데이트하는 방법:
#!/bin/sh
echo "Ionic to Signed APK ---- b@agencys.eu // Benjamin Rathelot\n"
printf "Project dir : "
read DIR
printf "Project key alias : "
read ALIAS
cd $DIR/
cordova build --release android
cd platforms/android/build/outputs/apk/
rm signedApk.apk
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk $ALIAS
zipalign -v 4 android-release-unsigned.apk signedApk.apk
홈 폴더에 있거나 앱 폴더 위에 있는 폴더라고 가정합니다.이 스크립트를 사용하려면 chmod를 올바르게 설정해야 합니다.그러면:
./ionicToApk.sh # or whatever depending of the name of your file, in CLI
서명된 apk는 App 폴더/platforms/android/build/outputs/apk/에 SignedApk.apk로 표시됩니다. 첫 번째 스크립트에 정의된 올바른 키 별칭과 암호를 사용해야 합니다.
##Generated signed apk from commandline
#variables
APP_NAME=THE_APP_NAME
APK_LOCATION=./
APP_HOME=/path/to/THE_APP
APP_KEY=/path/to/Android_key
APP_KEY_ALIAS=the_alias
APP_KEY_PASSWORD=123456789
zipalign=$ANDROID_HOME/build-tools/28.0.3/zipalign
#the logic
cd $APP_HOME
cordova build --release android
cd platforms/android/app/build/outputs/apk/release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $APP_KEY ./app-release-unsigned.apk $APP_KEY_ALIAS <<< $APP_KEY_PASSWORD
rm -rf "$APK_LOCATION/$APP_NAME.apk"
$zipalign -v 4 ./app-release-unsigned.apk "$APK_LOCATION/$APP_NAME.apk"
open $APK_LOCATION
#the end
cmd 단위로 코드바 릴리스 APK 파일을 빌드합니다.
키 저장소 파일 경로: 키 저장소 파일 경로(F:/cordova/myApp/xxxxx.jks)
키 저장소 암호: xxxxxxx
키 저장소 별칭: xxxxxxx
키 저장소 별칭 암호: xxxxxxx
zipalign 경로.exe: zipalign.exe 파일 경로(C:\Users\xxxx\AppData\Local\)Android\sdk\build-tools\25.0.2\zipalign)
안드로이드 미서명 APK 이름: 안드로이드 릴리스 미서명.pk
안드로이드 릴리즈 APK 이름: 안드로이드 릴리즈.pk
cmd 단위로 아래 단계 실행(관리자로 실행)
- 코르도바 빌드 --안드로이드 릴리스
- Android-release-unsigned.apk 파일 위치(PROJECT\platforms\android\build\outputs\apk)로 이동합니다.
- jarsigner -verbose -sigalg SHA1 with RSA -digestalg SHA1 -keystore <키스토어 파일 경로> <Android UNSIGNED APK NAME> <키스토어 별칭>
- <zipalign 경로>.exe> -v4 <Android UNSIGN APK NAME> <Android Release APK NAME>
먼저 앱을 업데이트하는 경우 버전 코드와 버전 이름을 확인합니다.이전 키 저장소가 있는지 확인합니다.
앱을 업데이트하는 경우 1, 3, 4단계를 수행합니다.
1단계:
Cordova 프로젝트로 이동하여 릴리즈 빌드를 생성합니다.
D:\projects\Phonegap\Example> cordova build --release android
그러면 플랫폼/안드로이드/앤트빌드에서 서명되지 않은 APK 파일을 찾을 수 있습니다.이 예제에서 파일은 다음과 같습니다.
앤트빌드를 사용한 경우
yourproject/platforms/android/ant-build/Example-release-unsigned.apk
OR
gradle-build를 사용한 경우
yourProject/platforms/android/build/outputs/apk/Example-release-unsigned.apk
2단계:
키 생성:
구문:
keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>
keytool 명령어가 인식되지 않는 경우 이 단계를 수행합니다.
키 도구 실행 파일이 있는 디렉터리가 경로에 있는지 확인합니다(예: Windows 7(윈도우 7) 컴퓨터에서는 C:\Program Files(x86)\Java\jre6\bin에 있습니다).
예:
keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000
keystore password? : xxxxxxx
What is your first and last name? : xxxxxx
What is the name of your organizational unit? : xxxxxxxx
What is the name of your organization? : xxxxxxxxx
What is the name of your City or Locality? : xxxxxxx
What is the name of your State or Province? : xxxxx
What is the two-letter country code for this unit? : xxx
그러면 키 저장소가 NAME-mobile apps라는 이름으로 생성됩니다.키스토어
3단계:
생성된 키 저장소를 D:\projects\에 배치합니다.폰갭\예제\플랫폼\안드로이드\앤트빌드
서명되지 않은 APK에 서명하려면 JDK에도 포함된 jarsigner 도구를 실행합니다.
구문:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename <Unsigned APK file> <Keystore Alias name>
재구성되지 않으면 다음 단계를 수행합니다.
"This PC"를 마우스 오른쪽 버튼으로 클릭 > 속성 > 고급 시스템 설정 > 환경 변수 > PATH를 선택한 후 EDIT를 선택합니다.
환경 변수에 jdk bin 폴더 경로를 추가합니다. 경로는 다음과 같습니다.
"C:\Program Files\Java\jdk1.8.0_40\bin"입니다.
예:
D:\projects\Phonegap\Example\platforms\android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps
Enter KeyPhrase as 'xxxxxxxx'
이것은 제자리에 apk를 표시합니다.
4단계:
마지막으로, APK를 최적화하기 위해 zip 정렬 도구를 실행해야 합니다.
zipalign이 인식하지 못하는 경우
Android sdk 경로로 이동하여 zipalign을 찾으십시오. 일반적으로 Android-sdk\build-tools\23.0.3
zipalign 파일 붙여넣기를 일반적으로 아래 경로에 있는 generate release apk 폴더에 복사합니다.
프로젝트/플랫폼/안드로이드/앤트빌드/예: 릴리스 미서명.pk
D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk
OR
D:\projects\Phonegap\Example\platforms\android\ant-build> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk
이제 example.apk라는 최종 릴리스 바이너리가 있으며 이를 Google Play Store에 릴리스할 수 있습니다.
좋은 소식! 코르도바 10은 새로운 안드로이드 버전을 포함합니다.app-release.aab
.
Windows를 build.cmd
파일 이름:
(키 저장소 경로 및 별칭 바꾸기)
코르도바의 경우:
@echo off
set /P spassw="Store Password: " && set /P kpassw="Key Password: " && cordova build android --release -- --keystore=../../local/my.keystore --storePassword=%spassw% --alias=tmpalias --password=%kpassw%
아이오닉의 경우:
@echo off
set /P spassw="Store Password: " && set /P kpassw="Key Password: " && ionic build --prod && cordova build android --release -- --keystore=../../local/my.keystore --storePassword=%spassw% --alias=tmpalias --password=%kpassw%
프로젝트 디렉터리에 저장하면 cmd를 두 번 클릭하거나 열 수 있습니다.
언급URL : https://stackoverflow.com/questions/26449512/how-to-create-a-signed-apk-file-using-cordova-command-line-interface
'itsource' 카테고리의 다른 글
NSA ray를 NSData로 변환하는 방법은 무엇입니까? (0) | 2023.07.31 |
---|---|
저장 프로시저에서 권한을 찾기 위한 오라클 쿼리 (0) | 2023.07.31 |
파이썬의 배열 필터? (0) | 2023.07.26 |
문자열을 분할하여 변수에 할당하는 방법 (0) | 2023.07.26 |
SHOW TABLES를 사용하여 뷰가 아닌 테이블만 가져오는 방법은 무엇입니까? (0) | 2023.07.26 |