SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Flutterで始めるモバイルアプリ開発

Flutterでアプリをビルドしよう。AndroidとiOSそれぞれの流れを解説

Flutterで始めるモバイルアプリ開発 第30回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Android用のリリースビルド(2)

アプリの署名ファイルの作成

 リリースビルドを作成するには、アプリに対して署名をする必要があります。そのために、署名ファイルを作る必要があります。署名ファイルはkeytoolコマンドを使って作成できます。例えばリスト5は、upload-keystore.jksというファイル名でキーファイルを作成する例です。

[リスト5]keytoolの実行コマンド(Mac, Linuxの場合)
keytool -genkey -v \
    -keystore upload-keystore.jks \
    -keyalg RSA \
    -keysize 2048 \
    -validity 10000 \
    -alias upload

 keytoolはJavaのツールなので、コマンドが見つからない場合にはJavaのコマンド等にPATHが通っていないかなどを確認してください。実行すると、リスト6のようにパスワードと組織情報の入力を促すメッセージが表示されるので、リリースするアプリに合った情報を入力します。

[リスト6]keytoolの実行例
キーストアのパスワードを入力してください: [任意のパスワードを指定]
新規パスワードを再入力してください: [任意のパスワードを指定]
識別名を入力します。サブコンポーネントを空のままにする場合はドット(.)を1つ入力し、中カッコ内のデフォルト値を使用する場合は[ENTER]を押します。
姓名は何ですか。
  [Unknown]:  enbind
組織単位名は何ですか。
// (省略)
  [Unknown]:  ja
CN=enbind, OU=enbind.jp, O="Enbind,Inc.", L=Unknown, ST=Tokyo, C=jaでよろしいですか。
  [いいえ]:  y // 問題なければ「y」を入力しリターン

10,000日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA384withRSA)を生成しています
	ディレクトリ名: CN=enbind, OU=enbind.jp, O="Enbind,Inc.", L=Unknown, ST=Tokyo, C=ja
[store.jksを格納中]
[upload-keystore.jksを格納中]

 同じアプリをリリースする場合には、同じキー情報を利用するので、このファイルはなくさないように大切に保管しましょう。

署名ファイルの設定

 続いて、先ほど作成した署名ファイルをAndroidプロジェクトのリリースビルド時に利用するように設定します。ここで使用するファイル、もしくは作成するファイルの構造はリスト7のようになっているとします。

[リスト7]ファイルの構造情報
<プロジェクト>
    └── android
            ├── key.properties (新規ファイル作成)
            ├── upload-keystore.jks (作成した署名ファイルを移動)
            └── app
                 └──  build.gradle

 まず、署名ファイルのパスワードとファイル情報を記したkey.propertiesファイルを、リスト8の内容で作成します。

[リスト8]署名ファイルの設定情報(android/key.propertiesファイルの抜粋)
storePassword=[署名ファイル作成時に入力したパスワード]
keyPassword=[署名ファイル作成時に入力したパスワード]
keyAlias=upload
storeFile=../upload-keystore.jks

 続いて、ビルド時の設定をリスト9のようにbuild.gradleファイルを変更します。ここでは特にファイルの内容の意味については深く理解しなくても問題ありません。

[リスト9]Androidのビルド設定ファイル(android/app/build.gradleファイルの抜粋)
plugins {
    // (省略)
}
//  --- ここから追加 ----
// (1) key.propertiesの内容を読みこむ
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
//  --- ここまで ----
android {
    //  (省略)
    defaultConfig {
        //  (省略)
    }
    // -- ここから追加 --
    //  (2) 署名の情報設定
    signingConfigs {
        release {
            keyAlias = keystoreProperties['keyAlias']
            keyPassword = keystoreProperties['keyPassword']
            storeFile = keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword = keystoreProperties['storePassword']
        }
    }
    // -- ここまで --
    buildTypes {
        release {
            //signingConfig = signingConfigs.debug // コメントアウト
            signingConfig = signingConfigs.release // (3) リリース設定を利用する
        }
    }
}
// (省略)

 (1)は署名ファイルの情報を設定したkey.propertiesの内容を変数に読みこみ、(2)で変数に読みこんだ設定をビルドファイル内で利用できるように設定します。(3)は、ビルドする際に(2)で設定した内容を使うための記述です。

Android用のリリースビルド

 ここまで作業ができたら、リスト10のコマンドを実行し、App Bundle形式のファイルを作成します。

[リスト10]ビルド処理
$flutter build appbundle
Running Gradle task 'bundleRelease'...                           1,360ms
✓ Built build/app/outputs/bundle/release/app-release.aab (18.9MB)

 作成されたファイルをGoogle Play Consoleにアップロードすると、図2のようにバージョン名、ビルド番号やAPIレベル等が表示されるので、正しく情報が反映されているか確認してください。その後、Google Play Console画面で公開の手続きを進めます。

図2:App Bundleファイルをアップロードした画面例
図2:App Bundleファイルをアップロードした画面例

次のページ
iOSアプリ用のリリースビルド

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Flutterで始めるモバイルアプリ開発連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20591 2025/01/20 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング