初めに
FlutterFlowについて
FlutterFlowは、爆速モバイルアプリ開発を実現する、画期的なノーコードツールです。簡単なアプリなら本当にその日のうちにテストフライトまでが完了していると優れたツールです。
他のノーコードツールと違って書ける、Flutterアプリとして吐き出せる、という点が強みです。
Flutterでできることならなんだってできちゃいます。
GitHubを使った開発が可能
FlutterFlowではコードをGitHubのレポジトリにボタンひとつでプッシュする機能が備わっています。また、それだけではなく、GitHub上のブランチを指定すると、そのブランチのコードを使ってデプロイまでしてくれます。
例えば、僕はFlutterFlowではどうしても修正できない箇所を修正・追加するためにこの機能を使っています。(具体的な手順は下の通り)
- FlutterFlowからGitHubのレポジトリにプッシュ(flutterflowブランチが作成される)
- プッシュされたコードをmainブランチにマージ
- mainブランチからdevelopブランチを作成
- developブランチをローカル環境にプル
- とってきたコードをXcodeやその他エディター作成してプッシュ
- developブランチをmainブランチにマージ
- deployブランチを作成
- deployブランチを使ってFlutterFlowからデプロイ
今回生じたエラーについて
今回は以下の方法でAndroid版をデプロイする際に生じたエラーについてです。
今までにGitHubを経由せずにリリース済
今回新たにGitHub経由でリリースしようとしている
今までGitHubを経由せずにデプロイしていた際は起きなかったエラーが発生しました。
エラーログの詳細は以下のとおりです。
== Gathering artifacts ==
== Publishing artifacts ==
Publishing artifact app-release.apk
Publishing artifact app-release.apk
Publishing artifact app-release.aab
Publishing artifact release_mapping_mapping.txt
Publishing app-release.aab to Google Play
Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found: SHA1: XX:XX:XX:XX, expected: SHA1: YY:YY:YY:YY: {
"error": {
"code": 403,
"message": "The Android App Bundle was signed with the wrong key. Found: SHA1: XX:XX:XX:XX, expected: SHA1: YY:YY:YY:YY.",
"status": "PERMISSION_DENIED"
}
}
要は間違ったKeystore fileを使っているということらしい。
原因特定
いくつかサイトを見て回りましたが、どれも解決には至らず。
FlutterFlowの公式チャットボットに聞くと次のような返事がありました。
What does this error mean?
One of the most common causes of a publishing error when deploying to the Google Play Store is attempting to deploy using the wrong Keystore file.
特に新しい情報もなくエラーと同じ内容です。情報は続きます。
Verify That The Correct Keystore File Was Submitted For Signing
To create a new keystore, please run the following commands in your Integrated Development Environment
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
If the application was already deployed and the previous keystore was misplaced, contact Google Support for further assistance.
どうやらこのコマンドを入力すると、新しくkeystoreファイルが作成されてリリースできるようになるという話。結果これでは解決できませんでした。ミスリードになって新しくkeystore作ったりして大量の時間を溶かしました、、、。
その後色々調べた情報をまとめると、
- 今までは自動でkeystoreを使ってリリースしてくれていたらしい
- GitHubでリリースする場合は設定ファイル
build.gradle
が自動では更新されない
ということでエラーが吐かれているっぽいことが判明。
なので、今まで使っていたkeystoreの情報を取得して、それを手動で反映させる必要がありそうです。
対処法
1. 今まで使っていたkeystoreの情報を確認
keystoreの情報はService Account Credentialsの右側に鍵マークが出てきます。
※画像はすでに表示されていませんが、「Credentials Set」の右にオレンジのボタンが出てきます。
zipファイルとしてダウンロードされるので、展開して内容を確認します。
二つファイルが入っていると思いますが
-
credentials.txt
:keystoreの各種情報 -
sample-app-xxx.jks
:keystoreファイル
です。
credentials.txtの中に書かれている値はFlutterFlowに設定する値です。
alias: sample-app-xxxx
alias password: xxxxxxxxxxxxxxxxxx
keystore password: xxxxxxxxxxxxxxxxxx
2. ファイルの修正
android/app/build.gradle
を修正します。
修正できたらGitHubのリポジトリにプッシュしてください。
...
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
- // signingConfig signingConfigs.debug
+ signingConfig signingConfigs.release
}
}
...
3. FlutterFlow側の設定変更
Setting > App Settings > Mobile deployment
からAdvanced Settingsの設定を行う。
- Keystoreファイルに、
sample-app-xxx.jks
をアップロード - Keystore Alias に
credentials.txt
のaliasを入力 - Deployを押すとパスワードを求められるので
credentials.txt
のpasswordを入力
これで無事デプロイができるようになるはずです。
最後に
対処するのに数時間溶かしました🥲
同じ問題でお悩みの方が少しでも早く解決できることをお祈りしています。
他にもいろんなバグが出ることもありますが、FlutterFlowとても便利なので、これからも使い続けたいですね。
XでもFlutterFlowに関する投稿をたまにあげてます。見ていただけると泣いて喜びます。