Clean Architecture, Clean Life

仕事・個人での技術的なことつぶやきます

【GithubActions】Androidアプリの署名設定

経緯

Androidアプリのビルド時、現状はビルド後に別で署名処理を走らせているのですが、ビルドと署名を同時に行うよう設定したいと思って調べていました

いくつか方法は出てきたのですが、何回やってもkeytoolで「署名付きJARファイルではありません」という状態でうまくいきませんでした

一応解決したので備忘録として記録しておきます

方法

結論としては、「v1Signを有効にする必要があった」ということです

見てもらったほうが早いと思うのでいかにサンプルを記載します

サンプル

まずはbuild.gradle(appの方)にキー情報を記載します

android {
    ...
    signingConfigs{
        release{
            storeFile rootProject.file('release.keystore')
            storePassword System.getenv('KEYSTORE_PASSWORD')
            keyAlias System.getenv('KEY_ALIAS')
            keyPassword System.getenv('KEY_PASSWORD')
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }
    
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
        ...
   }
...
}

ここで「v1SigningEnabled trueと「v2SigningEnabled true」を忘れないでください

そしてリリースビルド時に署名を行いたい場合は、BuildTypeにその旨を記載します

また、個々に記載した署名鍵の情報はGithubのシークレットに記載する必要があります

手順としては、Githubの「Settings」→「Secrets」で設定します

その後にymlファイルを修正していきます

name: ANDROID_CI
on:
  push:
    branches:
      - develop
      - master
  pull_request:
    branches:
      - develop
      - master

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

    - name: release build & sign
      run: |
        echo "${{ secrets.KEYSTORE_FILE }}" | base64 -d > release.keystore
        export KEYSTORE_PASSWORD="${{ secrets.KEYSTORE_PASSWORD }}"
        export KEY_ALIAS="${{ secrets.KEY_ALIAS }}"
        export KEY_PASSWORD="${{ secrets.KEY_PASSWORD }}"
        ./gradlew assembleRelease
    - name: upload release build
      uses: actions/upload-artifact@v2
      with:
        name: release_apk
        path: app

以上です

お役に立てると幸いです

今回も最後まで見てくださってありがとうございました