728x90
Firebase App Distribution
- 신뢰할 수 있는 테스터에 앱을 쉽게 배포할 수 있음
- 테스터 기기에 앱을 빠르게 제공할 수 있음
- 💡 iOS의 TestFlight와 비슷해 보임
GitHub Action Workflows
- github에서 소스 커밋시 브랜치 별로 동작할 방법을 정의
name: Android CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
outputs:
apk: app/build/outputs/apk/release/app-release.apk
steps:
- uses: actions/checkout@v3
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Cache Gradle packages
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/buildSrc/**/*.kt') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- name: build release
run: ./gradlew assembleRelease
- name: Upload APK
uses: actions/upload-artifact@v1
with:
name: app
path: app/build/outputs
- name: upload artifact to Firebase App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{secrets.FIREBASE_APP_ID}}
token: ${{secrets.FIREBASE_TOKEN}}
groups: testers
file: app/build/outputs/apk/release/app-release.apk
GitHub 에서 시크릿 생성
- FIREBASE_APP_ID
- 배포하고자 하는 AppID
- Firebase Console → 프로젝트 개요 → 프로젝트 설정 → 일반 → 내앱
- FIREBASE_TOKEN
- Github Action에서 FireBase에 Apk를 업로드를 위한 인증 Token
- Token 발급 받기: https://firebase.google.com/docs/cli#cli-ci-systems
- 아래 1:234473025587:androi...7ecf0e7346 부분이 Token
% firebase login:ci Visit this URL on this device to log in: <https://accounts.google.com/o/oauth2/auth>... Waiting for authentication... ✔ Success! Use this token to login on a CI server: **1//0ejBWc4cUujXBCgYIARAAGA4SNwF-L..._2SnVe20fC1pw** Example: firebase deploy --token "$FIREBASE_TOKEN"
Firebase에 테스트 그룹 등록
- groups 부분은 Firebase의 테스트 그룹
- 이름을 맞춰 주지 않으면 업로드는 되지만 github action에 404 오류가 발생
- name: upload artifact to Firebase App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{secrets.FIREBASE_APP_ID}}
token: ${{secrets.FIREBASE_TOKEN}}
**groups: testers**
file: app/build/outputs/apk/release/app-release-unsigned.apk
Signing을 하지 않을 경우 설치 오류
- unsigning APK를 올릴 경우 설치 앱에서 설치 실패가 발생
- assembleRelease시 signing을 할수 있도록 수정
- keystore 파일 생성
- ./gradle/wrapper/ 위치에 파일 생성
- 파일 위치는 크게 상관 없지만 내가 선호하는 위치임
- build.gradle
...
android {
...
signingConfigs {
release {
storeFile file(releaseStoreFile)
storePassword releaseStorePassword
keyAlias releaseKeyAlias
keyPassword releaseKeyPassword
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
...
}
...
- gradle.properties
...
releaseStoreFile=../gradle/wrapper/keystore.keystore
releaseStorePassword=store_password
releaseKeyAlias=key_alias
releaseKeyPassword=key_password
참고
728x90