Fall in IT.

쉘스크립트를 사용하여 Ionic Android Publishing 쉽게하기 본문

프레임워크/Ionic Framework

쉘스크립트를 사용하여 Ionic Android Publishing 쉽게하기

D.Y 2018. 3. 16. 15:16


안녕하세요.


오늘은 Ionic Framework를 사용하여 앱을 만든 후, Android 앱을 Publishing을 쉽게하는 방법에 대해서 알아보도록 하겠습니다.




Android Publishing 방법
(keystore 파일은 생성했다는 가정하에 설명합니다.)

  1. ionic-cli를 사용하여 앱을 빌드합니다.
    $ cd {ionic project 경로}
    $ ionic cordova build android --prod --release

  2. jarsigner 유틸리티를 사용하여 unsigned 상태의 APK에 sign 합니다.
    $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore {키스토어파일명} {apk파일명} {키스토어별명} 
    $ 키스토어의 비밀번호 입력

  3. zipalign 유틸리티를 사용하여 APK를 최적화합니다.
    $ cd {zipalign 경로}
    $ zipalign -v 4 {대상apk파일명} {새apk파일명}

  4. Google playstore에 배포

간단해 보이지만, 몇 가지 불편한 점이 존재합니다.
- jarsigner를 실행할때 항상 비밀번호를 입력해줘야 합니다.

- project, keystore, unsigned.apk의 경로에 따라서 값을 다르게 입력해줘야 합니다.
- apk 파일을 구분하기 위해서, 새 apk 파일명을 버전(1.5.0)으로 할 경우 매번 파일명을 수정하고 실행해야 합니다.
- 배포할 apk가 생성된 경로에 직접 찾아들어가야 합니다.
- 1번 실행하고 끝나길 기다렸다가, 2번 실행하고.. 3번... 모든 단계가 끝날때까지 기다려야 합니다.




쉽게 Android Publishing 하기

  1. 쉘스크립트를 사용하여, 1~3 단계가 한방에 실행되도록 처리합니다.
  2. 실행 중 Error가 발생한다면 실행을 중지하고, 어디서 에러가 발생했는지 알려줍니다.
  3. 쉘스크립트의 위치가 바뀌어도 실행되도록 합니다.
  4. 키스토어 파일의 패스워드는 별도로 입력하지 않도록 합니다. (변하지 않기 때문에 한번만 입력해 놓도록 합니다.)
  5. 생성된 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






모두 즐거운 코딩하세요~




Comments