FlutterでAndroidアプリに署名する:keytoolの使い方
はじめに:署名って何?
Flutterで作ったAndroidアプリをGoogle Playに公開するには、アプリに署名(signing)する必要がある。これはアプリの作者を証明するためのデジタルな印鑑みたいなもんだ。
署名って開発中は関係ないの?
開発中はデバッグキーで自動的に署名されるけど、本番用(リリースビルド)では自前の署名キーを作って、それでアプリをビルドする必要がある。
署名キーがないとGoogle Playで公開できないから、リリース前に準備しよう!
Keytoolの場所:どこにある?
macOSでFlutter開発してる場合、keytoolはAndroid Studioに同梱されてるJDKに入ってる。以下のパスでアクセスできるよ。
ターミナルからどうやって実行するの?
/Applications/Android\ Studio.app/Contents/jbr/Contents/Home/bin/keytool
パスが長いから、エイリアスを設定しておくと便利。たとえば ~/.zshrc にこう書けばOK。
エイリアス作っとけば毎回打たなくていいぞ!
alias keytool="/Applications/Android\ Studio.app/Contents/jbr/Contents/Home/bin/keytool"
キーの作成:実際に署名キーを作る
以下のコマンドで .keystore ファイルを作成できる。アプリ名や会社名は適宜変えてね。
これ、パスワードとか聞かれる?
keytool -genkeypair \
-alias my-key-alias \
-keyalg RSA \
-keysize 2048 \
-validity 10000 \
-keystore my-release-key.jks
実行するといろいろ聞かれるから、設定を控えておこう。特にエイリアスとパスワードは key.properties に書いて使うことになる。
質問は全部コマンドラインで渡すこともできるけど、初回は対話モードでいいぞ!
Flutterプロジェクトへの設定
android/key.properties を作って以下の内容を書く。実際のパスやパスワードは自分の環境に合わせて変更してね。
key.properties って .gitignoreした方がいい?
storePassword=mystorepassword
keyPassword=mykeypassword
keyAlias=my-key-alias
storeFile=/Users/yourname/path/to/my-release-key.jks
そのあと、android/app/build.gradle に以下を追記すれば設定完了!
環境変数でパスを指定するのもアリだけど、key.properties方式が手軽!
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(rootProject.file("key.properties")))
android {
...
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
まとめ
FlutterでAndroidアプリを署名するには、まず keytool でキーストアを作成して、Flutterプロジェクトに設定すればOK。JDKの場所さえ分かれば難しくないから、一度やってみれば流れは掴めるよ。
キー作成→プロジェクト設定→ビルド確認。この3ステップでOK!


コメント