SHOEISHA iD

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

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

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

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

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

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

 今回は、Flutterで各アプリをマーケットに公開する際の、ビルドまでの流れについて説明します。各アプリマーケット用のコンソール画面の使い方は紹介はしませんが、それぞれのコンソール画面のナビゲーション等に従って操作を行えば問題ないはずです。

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

バージョン名とビルド番号

 リリース用にビルドする場合には、バージョン名とビルド番号が重要になります。バージョン名は一般的に「1.0.0」や「1.1.0」のように表示しますが、これはアプリ利用者に向けた表示です。

 一方で、ビルド番号とはマーケット側やスマホ側が、どちらの方が新しいリリースかを判断するための番号になります。

 したがって、ビルド番号が前回リリースしたものよりも大きくなっていないとバージョンアップのリリースとしては見なされません。この設定は最初のリリース時にはデフォルト設定で問題ありませんが、アップデート時には必ず更新が必要になるので、必ず確認するようにしましょう。

 そして、Flutterでは、このバージョン名とビルド番号をリスト1のようにpubspec.yamlにて「バージョン名 "+" ビルド番号」という表記方法にて管理しています。

[リスト1]バージョンとビルド番号(pubspec.yamlの抜粋)
version: 1.0.0+1

 これらの情報は各OSでは表1の項目情報として扱われるので、何か問題が生じた場合に備えて覚えておくとよいでしょう。

表1:各OSごとのバージョン名とビルド番号の管理名
OS バージョン名 ビルド番号
Android versionName versionCode
iOS CFBundleShortVersionString CFBundleVersion

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

 Androidでリリースビルドを作る場合、多くのケースでは図1のようにビルド設定だけを通常のAndroidネイティブアプリを作る場合と同じように行います。そして、実際のリリースビルドを行う際には再度、Flutter側のコマンドを使います。

 Flutterに限らず、ハイブリッド技術を使う場合、どうしてもこのように一部分についてネイティブのプロジェクト管理に従った作業が避けられない箇所(図の赤枠部分)が生じます。

図1:Androidでのリリースビルドをするまでの流れ
図1:Androidでのリリースビルドをするまでの流れ

 ハイブリッド技術の難しさは、グレー部分のように「どちらの方法でもできる」という点にあります。ブログなどでも、それぞれの手法がこもごも紹介されているため、「どちらが正しいのか」と戸惑ってしまうこともあるでしょう。よって、参考にしている情報が、どちらの情報について解説しているのかを気にしてみると、わかりにくさも多少和らぐのではないでしょうか。

Androidのターゲットバージョン

 2024年11月現在において最新のAndroidバージョンは15であり、間もなく16がリリースされます。ただし、開発者が意識するべきバージョンは、これらのバージョンに対応するAPIバージョンです。双方の関係は、「AndroidバージョンとSDKバージョン」で確認できます。

 Flutterでのデフォルトのバージョンは、リスト2のようにFlutterの共通ソース側に記述があります。

[リスト2]FlutterのデフォルトのAndroidバージョンの指定($FLUTTER_SDL/flutter/packages/flutter_tools/gradle/src/main/groovy/flutter.groovyの抜粋)
class FlutterExtension {

    /** Sets the compileSdkVersion used by default in Flutter app projects. */
    public final int compileSdkVersion = 34
    /** Sets the minSdkVersion used by default in Flutter app projects. */
    public  final int minSdkVersion = 21
    /**
     * Sets the targetSdkVersion used by default in Flutter app projects.
     * targetSdkVersion should always be the latest available stable version.
     *
     * See https://developer.android.com/guide/topics/manifest/uses-sdk-element.
     */
    public final int targetSdkVersion = 34

    (省略)

 ここでは、最低のSDKバージョンが21、つまりAndroid5であり、ターゲットとしているSDKが34、つまりAndroid14であることを示しています。

 ただし、これらの設定を変更する際、上のコードを直接変更するのは好ましくありません。これらを設定する場合には、プロジェクト上のbuild.gradleを変更するようにしてください。

[リスト3]Flutterのデフォルト内容(android/app/build.gradleファイルの抜粋)
android {
    // (省略)
    defaultConfig {
        // (省略)
        minSdk = flutter.minSdkVersion
        targetSdk = flutter.targetSdkVersion
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }
}

 このファイルで、最低バージョンを26(Android8以降)、ターゲットバージョンを33(Android13以降)とする場合には、リスト4のように書き換えます。ただし、ターゲットバージョンを34(Android14以降)を変える必要があるケースは多くないでしょう(その場合にはデフォルトのままで問題ありません)。

[リスト4]Androidバージョンの指定方法(android/app/build.gradleファイルの抜粋)
android {
    // (省略)
    defaultConfig {
        // (省略)
        minSdk = 26
        targetSdk = 33
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }
}

 また、ここで先ほどのバージョン名とビルド番号の指定が出てきています。

 もちろん、この部分を直接書き換えてもバージョン名とビルド番号は設定可能です。しかし、Flutter側での設定(pubspec.yaml)での変更は反映されなくなるため注意してください。

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

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング