프레임워크/Ionic Framework
쉘스크립트를 사용하여 Ionic Android Publishing 쉽게하기
D.Y
2018. 3. 16. 15:16
반응형
안녕하세요.
오늘은 Ionic Framework를 사용하여 앱을 만든 후, Android 앱을 Publishing을 쉽게하는 방법에 대해서 알아보도록 하겠습니다.
Android Publishing 방법
(keystore 파일은 생성했다는 가정하에 설명합니다.)
- ionic-cli를 사용하여 앱을 빌드합니다.
$ cd {ionic project 경로}
$ ionic cordova build android --prod --release - jarsigner 유틸리티를 사용하여 unsigned 상태의 APK에 sign 합니다.
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore {키스토어파일명} {apk파일명} {키스토어별명}
$ 키스토어의 비밀번호 입력 - zipalign 유틸리티를 사용하여 APK를 최적화합니다.
$ cd {zipalign 경로}
$ zipalign -v 4 {대상apk파일명} {새apk파일명} - Google playstore에 배포
간단해 보이지만, 몇 가지 불편한 점이 존재합니다.
- jarsigner를 실행할때 항상 비밀번호를 입력해줘야 합니다.
- project, keystore, unsigned.apk의 경로에 따라서 값을 다르게 입력해줘야 합니다.
- apk 파일을 구분하기 위해서, 새 apk 파일명을 버전(1.5.0)으로 할 경우 매번 파일명을 수정하고 실행해야 합니다.
- 배포할 apk가 생성된 경로에 직접 찾아들어가야 합니다.
- 1번 실행하고 끝나길 기다렸다가, 2번 실행하고.. 3번... 모든 단계가 끝날때까지 기다려야 합니다.
쉽게 Android Publishing 하기
- 쉘스크립트를 사용하여, 1~3 단계가 한방에 실행되도록 처리합니다.
- 실행 중 Error가 발생한다면 실행을 중지하고, 어디서 에러가 발생했는지 알려줍니다.
- 쉘스크립트의 위치가 바뀌어도 실행되도록 합니다.
- 키스토어 파일의 패스워드는 별도로 입력하지 않도록 합니다. (변하지 않기 때문에 한번만 입력해 놓도록 합니다.)
- 생성된 apk 파일의 디렉터리가 열립니다.
소스코드
#! /bin/sh
readonly WORK_HOME=/Users/{user}/{project} #작업이 이루어질 프로젝트 절대경로
readonly PWD_HOME=/Users/{user}/{password} #키스토어 파일의 패스워드가 저장된 파일의 절대경로
# Android Publishing Shell Script
# 1. 빌드
ionicBuild() {
ionic cordova build android --prod --release
errorCheck "ionic build"
}
# 2. 서명
signApk() {
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore
{키스토어 파일 절대경로/키스토어 파일명}
$WORK_HOME/platforms/android/build/outputs/apk/android-release-unsigned.apk
{키스토어 별명}
< $PWD_HOME/pwd.txt #키스토어 파일의 패스워드가 저장된 파일
errorCheck "jarsigner apk"
}
# 3. apk 최적화
optimizeApk() {
# mac일 경우 경로 (윈도우는 다를 수 있습니다.)
/Users/{user}/Library/Android/sdk/build-tools/25.0.2/zipalign -v 4
$WORK_HOME/platforms/android/build/outputs/apk/android-release-unsigned.apk
$WORK_HOME/platforms/android/build/outputs/apk/android-release-signed-$input.apk
# $input: 입력으로 받을 apk 버전
errorCheck "optimize apk"
}
# 4. apk 경로 오픈
openApk() {
open $WORK_HOME/platforms/android/build/outputs/apk
echo "Success to Refreshfield build.."
}
errorCheck() {
if [ "$?" == "0" ]; then
echo "Success ${@}.."
elif [ "$?" == "1" ]; then
echo "Failed to ${@}.."; exit;
elif [ "$?" == "127" ]; then
echo "Failed to ${@}.."; exit;
else
echo "Failed to ${@}.."; exit;
fi
}
echo "Input build version: "
read input
echo "Refreshfield build started.."
cd $WORK_HOME
# 실행
ionicBuild
signApk
optimizeApk
openApk
실행방법
- $sh {스크립트명} 또는 $./{스크립트명}
- apk 버전 입력
$ 2.0
결과
- Failed
- Success
모두 즐거운 코딩하세요~
반응형