개요
Quasar 프로젝트의 CLI 도구를 이용하면 .apk
의 빌드가 가능합니다. 하지만 마켓에 출시할 수 있는 .aab
파일로 빌드하기 위해서는 Android Studio를 통해 직접 빌드해야 합니다.
그래서 Android Studio를 설치할 수 없는 CLI 환경에서 App을 빌드하고 배포해보는 방법이 있는지 알아보았습니다.
준비
※ 참고 : Ubuntu 18.04에서 진행하였습니다.
OpenJDK와 Gradle 설치
안드로이드 어플의 개발을 위해서는 JDK와 Gradle이 필요합니다. 다음 명령을 사용하여 최신 버전의 JDK와 Gradle을 설치합니다.
sudo apt install openjdk-17-jdk-headless gradle
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
안드로이드 명령줄도구 (Command Line Tools) 설치
최신버전의 명령줄도구를 받기 위한 링크는 다음과 같습니다. 링크 : Download Android Studio
글을 작성할 당시(23.5.17) 최신 버전은 아래와 같이 명령을 사용하여 다운로드 할 수 있습니다.
cd ~ # Make sure you are at home!
curl https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o /tmp/cmd-tools.zip
mkdir -p android/cmdline-tools
unzip -q -d android/cmdline-tools /tmp/cmd-tools.zip
mv android/cmdline-tools/cmdline-tools/cmdline-tools android/cmdline-tools/latest
rm /tmp/cmd-tools.zip # delete the zip file (optional)
환경변수 설정
export ANDROID_HOME=$HOME/android
export ANDROID_SDK_ROOT=${ANDROID_HOME}
export PATH=${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${PATH}
SDK 라이센스 동의
yes | sdkmanager --licenses
(옵션) .apk
빌드
quasar build -m capacitor -T android
빌드가 성공적으로 완료되면,/dist/capacitor/android/apk/release
폴더에 app-release-unsigned.apk
파일이 생성됩니다.
.aab
파일 빌드
quasar-cli
및 capacitor-cli
는 .aab
파일의 빌드를 지원하지 않습니다. 따라서 직접 gradle
을 사용해 빌드합니다.
quasar 프로젝트의 src-capacitor
폴더로 이동합니다.
cd src-capacitor
(옵션) 서명되지 않은 .aab
파일 빌드
용도는 모르겠음. 직접 디바이스 등으로 전송할 수는 있는가?
cd ./android
./gradlew :app:bundleDebug
(최초 마켓 전송 시 필요) 업로드 키 생성
플레이스토어에 등록하기 위해서는 업로드 키가 필요합니다.
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
번들(.aab
)을 업로드 키로 서명하도록 설정하기
프로젝트 루트 폴더에 keystore.properties
파일을 생성합니다.
storePassword=myStorePassword
keyPassword=myKeyPassword
keyAlias=myKeyAlias
storeFile=myStoreFileLocation
android/app/build.gradle
파일에서 해당 속성을 읽어 signingConfigs
객체에 넣어 주도록 합니다. 그리고 release
빌드 타입을 추가합니다.
apply plugin: 'com.android.application'
// Load properties from keystore.properties
def keystorePropertiesFile = rootProject.file("keystore.properties")
// Creating a new Properties() object
def keystoreProperties = new Properties()
// If keystorePropertiesFile exists, read from that, else set from build environment
if (keystorePropertiesFile.exists()) {
// Loading the keystoreProperties file
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
} else {
// Read all environment variables from the build environment
keystoreProperties.setProperty("storeFile", "${System.getenv('STORE_FILE')}")
keystoreProperties.setProperty("keyAlias", "${System.getenv('KEY_ALIAS')}")
keystoreProperties.setProperty("keyPassword", "${System.getenv('KEY_PASSWORD')}")
keystoreProperties.setProperty("storePassword", "${System.getenv('STORE_PASSWORD')}")
}
android {
... 생략 ...
signingConfigs {
release {
+ storeFile file(keystoreProperties['storeFile'])
+ keyAlias keystoreProperties['keyAlias']
+ keyPassword keystoreProperties['keyPassword']
+ storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
+ signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
signingConfigs {
release {
storeFile file(keystoreProperties['storeFile'])
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storePassword keystoreProperties['storePassword']
}
}
cd ./android
./gradlew :app:bundleRelease
빌드가 완료되면, 번들을 android/app/build/outputs/bundle/release/app-release.aab
파일이 생성됩니다. 이 파일을 playstore 콘솔을 이용하여 전송하면 됩니다.
추가 필요 작업
- cli 환경에서 deploy 가능한가요?
참고
- https://halimsamy.com/wsl-for-developers-installing-the-android-sdk
- https://ionic.io/blog/building-and-releasing-your-capacitor-android-app
- https://medium.com/automating-react-native-app-release-to-google-play/create-upload-key-and-apps-release-bundle-aab-file-4bf4a17e19a1
- https://developer.android.com/build/building-cmdline
- https://www.freecodecamp.org/news/automatically-upload-an-android-app-bundle-to-the-play-store/
'모듈, 프레임웍 > Vuejs(Quasar)' 카테고리의 다른 글
[Quasar,Vue] App Theme 변경하기 (0) | 2023.06.28 |
---|---|
[Quasar] .env 사용 (0) | 2023.06.28 |