LoginSignup
14
8

More than 3 years have passed since last update.

【Flutter】Android Studioで便利にSigned APKをリリースビルド

Last updated at Posted at 2020-09-13

はじめに

Flutterアプリの制作は二度目ですが、前回の経験をまるごと忘れてしまったので、記事として残しておきます。よければLGTMお願いします。

Android Studio 起動!

Android Studioを起動して、アプリのディレクトリを開きましょう。
話はそこからです。

Android moduleを開く

アプリのプロジェクトからでは、Build -> Generate Signed Bundle / APK ...というアクションを行えないため、Android moduleを開く必要があります。
スクリーンショット 2020-09-13 160239.png
上のようにToolsメニューをたどって、Open Android module in Android Studioを押してください。

Signed APKを作成する

スクリーンショット 2020-09-13 160326.png
Build -> Generate Signed Bundle / APK...を押してください。

スクリーンショット 2020-09-13 160404.png
上のような画面が出てきます。
これは作成するのがApp BundleAPKのどちらかを選ぶ画面です。
今回はAPKの方で作成するので、そちらを選択してNextを押します。

スクリーンショット 2020-09-13 160804.png
Nextで先に進むと、上のような画面になります。
(この画像では全ての欄が埋まっていますが、本来はどの欄も埋まっていません。)
赤枠で囲ってあるCreate new...を押してください。

スクリーンショット 2020-09-13 160722.png

すると、上のような画面になります。
ここでkeyStore, keyの設定をします。
一番上のKey store pathにはAPP_NAME/android/appを選んでおきます。
ファイルの名前はrelease.jksとしておきましょう。
(後でこの名前を使います。違う名前の場合は置き換えて考えてください。)
あとはPasswordを決めると、KeyStoreの設定は終わりです。

Keyの設定では、まずKeyの名前を決めます。
(なんでもいいのでkey0とかでいいと思います。)
次にKeyのパスワードを決めますが、特別な事情がない場合はKeyStoreと同じパスワードでいいでしょう。

ValidityKeyの有効期間です。デフォルトでは25年になっています。
変更したければ変更しましょう。自分はそのままにしています。

次に開発者情報を入力します。
指定通りに入力を進めていきますが

  • First and Last Name
  • State or Province
  • Country Code(XX)

の三つがあれば十分かなと自分は思っています。

KeyStorekeyの項目は、あとで必要になるので全てメモしておきましょう

入力を終えたら、OKを押します。

スクリーンショット 2020-09-13 160804.png

OKで先ほどのページに戻ってきます。
戻ってきたときには、すべての欄が埋まっているはずです。
Key passwordRemember passwordsは自由にしてください。

欄が埋まっていることを確認したら、Nextを押します。

スクリーンショット 2020-09-13 160903.png

上のような画面に移動します。
Build Variantsreleaseに設定します。
またSigrature VersionsV1,V2の両方を選択するのが安牌でしょう。

以上を確認したらFinishを押します。

するとどこかSigned APKが生成開始されるので待ちましょう。
(私は今回これを使わず、flutter buildコマンドからbuildできるようにしているので先に進みます。)

キーストアを参照する

これからアプリから作成したキーストアを参照します。
スクリーンショット 2020-09-13 163508.png
androidディレクトリにkeystore.propertiesというファイルを作ります。
ここに
- KeyStoreのパスワード(storePassword)
- keyのパスワード(keyPassword)
- keyの名前(keyAlias)
- jksファイルの場所(storeFile)
をそれぞれ入力していきます。

storeFileの箇所は、release.jksファイルをandroid/appディレクトリに作ったと思うので、release.jksと書いてください。)

このkeystore.propertiesには重要な情報が載っているため、GitHub等でだれもが見れる状態にしておいてはいけません。
スクリーンショット 2020-09-13 164922.png
そこでandroid/.gitignore

*.jks
keystore.properties

と書くことでそれを防止することができます。

Gradleファイルでの署名設定

android/app/build.gradleを開いてください。

そのとき、上のメニューバーにOpen for Editing in Android Studioというボタンがあると思うのでそれを押しましょう。
スクリーンショット 2020-09-13 164312.png
上の画像のようにandroid {...の上に黄色枠で囲った部分を追記してください。

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('keystore.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

スクリーンショット 2020-09-13 164456.png
その後、50行目あたりにあるbuildTypesを消去して、
スクリーンショット 2020-09-13 164556.png
上の赤枠のように書き換えます。


signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }

android/app/build.gradleで変更できることに以下があります。

  • Androidの対応OS(下の画像の赤丸)
  • アプリのパッケージ名(firebaseを利用する際に必要)

gradleファイルを編集した際は、Sync Nowで同期しておくのが良いでしょう。
スクリーンショット 2020-09-13 165832.png
これでgradleファイルでの署名設定は終了です。

APKファイルの生成

ここまでくれば、あとはコマンドを打ち込むだけです。

flutter build apk

というコマンドでapkファイルが生成されます。

注意
apkを分割してbuildした方がいいです。(アプリサイズが小さくなります。)
目的に合ったオプションをapkの後ろに付けてコマンドを叩きましょう。
ちなみに上のコマンドを叩くと、コマンドラインさんにも同じことを言われます。
スクリーンショット 2020-09-13 165300.png
コマンドを叩くと、上のようにbuild\app\autputs\flutter-apkディレクトリにapkファイルが生成されます。

このapkファイルをgoogle playにアップロードすることでアプリを世界にリリースできます!

お疲れさまでした!

おまけ:アプリのバージョンアップ

アプリのバージョンを管理するのはpubspec.yamlです。
スクリーンショット 2020-09-13 165436.png

versionに指定する数字は二つに分かれており、画像の例では

  • 1.0.0 = VersionCode
  • (+)1 = VersionNumber

となります。

アプリのバージョンアップに大事なのはVersionNumberの方です。
たとえVersionCodeを変更しても、VersionNumberがそのままだとアップデート用のapkファイルはアップロードできません。
逆にVersionNumberが違えば、VersionCodeが同じでもアップロードができます。

versionを正しく変更してapkファイルを作り、アプリのアップデートを行いましょう。

おわり

読んでいただいてありがとうございました!
この記事でリリーズビルドした方はLGTMをお忘れなく(笑)
twitterはこちらから

参考記事

14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8