[개발][Flutter] 플러터 암호화폐 지갑 앱 개발 일기 7번째: Github Actions로 Flutter 앱 자동 빌드하기

Github에서 Flutter 앱이 자동 빌드하도록 구성했습니다. 릴리즈 노트를 작성하면 Github Actions에서 Android APK 와 AppBundle가 빌드되여 자동으로 업로드 됩니다.

앱 서명키 생성

앱 서명키는 아래 링크를 참고하여 Android Studio에서 생성할 수 있습니다.

또는 다음과 같이 java keytool 를 사용하여 생성할 수도 있습니다.

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload


keytool 사용 방법은 아래 링크를 참고합니다.

참고로 JDK는 Adopt Open JDK 12를 사용하였습니다.
맥OS 라면 홈브류(homebrew)를 사용하여 jdk를 쉽게 설치 할 수 있습니다.
openjdk 저장소를 추가한다음 brew tap AdoptOpenJDK/openjdk
다음 명령어로 설치합니다. brew install adoptopenjdk12


Workflow 파일 작성

.github/workflows/build_release.yml를 다음과 같이 작성합니다.

name: Flutter Build

on:
  push:
    tags:
      - v*

jobs:
  build_android:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - uses: actions/setup-java@v2
        with:
          distribution: "adopt"
          java-version: "12.x"

      - name: Set up Flutter
        uses: subosito/flutter-action@v1
        with:
          channel: "stable"

      - name: Download Android keystore
        id: android_keystore
        uses: timheuer/[email protected]
        with:
          fileName: key.jks
          encodedString: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}

      - name: Create key.properties
        run: |
          echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > android/key.properties
          echo "storePassword=${{ secrets.ANDROID_KEYSTORE_PASSWORD }}" >> android/key.properties
          echo "keyPassword=${{ secrets.ANDROID_KEY_PASSWORD }}" >> android/key.properties
          echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" >> android/key.properties

      - name: Install dependencies
        run: flutter pub get

      - name: Build APK
        run: |
          flutter build apk --release
          flutter build appbundle --release

      - name: Release APK
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: |
            build/app/outputs/bundle/release/app-release.aab
            build/app/outputs/flutter-apk/app-release.apk
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


아래 블로글을 참고하여 작성하였습니다.

Sort:  

@anpigon transfered 1.0 KRWP to @krwp.burn. voting percent : 0.90%, voting power : 27.81%, steem power : 1797183.07, STU KRW : 1200.
@anpigon staking status : 51 KRWP
@anpigon limit for KRWP voting service : 0.051 KRWP (rate : 0.001)
What you sent : 1.0 KRWP
Refund balance : 0.949 KRWP [55021667 - 7123181868b01af29058d0177dea636f6e9a1ac5]

start success go! go! go!

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.075
BTC 64327.32
ETH 1677.37
USDT 1.00
SBD 0.42