経緯
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
以上です
お役に立てると幸いです
今回も最後まで見てくださってありがとうございました