itsource

Cordova 명령줄 인터페이스를 사용하여 서명된 APK 파일을 만드는 방법은 무엇입니까?

mycopycode 2023. 7. 31. 21:21
반응형

Cordova 명령줄 인터페이스를 사용하여 서명된 APK 파일을 만드는 방법은 무엇입니까?

라는 이름의 샘플 애플리케이션을 만들었습니다.checkStatus이제 서명된 APK 파일을 만들고 싶습니다.테스트를 위해 다른 장치에 설치할 수 있습니다.

이를 위해 구글에서 이 문서를 찾았습니다.

문서에 따라 프로젝트 디렉터리로 전환하고 다음 명령을 실행했습니다.

keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000

위의 명령어를 실행한 후에 다음과 같은 이름의 파일을 받았습니다.key-name.keystoreprojectRoot/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.xmljava.

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:debuggablefalse:

<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\androidfolder

파일 내용: 두 번째 줄을 제외한 모든 항목에 대해 = 뒤에 편집

storeFile=C:/yourlocation/app.keystore
storeType=jks
keyAlias=aliasname
keyPassword=aliaspass
storePassword=password

그런 다음 이 명령은 릴리스 버전을 빌드해야 합니다.

cordova build android --release

- 이것은 . ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠCordova 10 with android 9release-properties.properties 파일입니다.나는 만들어야만 했습니다.build.jsonrootroot와 .내용은 다음과 같습니다. 위와 같이 대체하십시오.

{
"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 단위로 아래 단계 실행(관리자로 실행)

  1. 코르도바 빌드 --안드로이드 릴리스
  2. Android-release-unsigned.apk 파일 위치(PROJECT\platforms\android\build\outputs\apk)로 이동합니다.
  3. jarsigner -verbose -sigalg SHA1 with RSA -digestalg SHA1 -keystore <키스토어 파일 경로> <Android UNSIGNED APK NAME> <키스토어 별칭>
  4. <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

반응형