【Flutter/Dart/Android】flutter.compileSdkVersionの設定と変更方法!

【Flutter/Dart/Android】flutter.compileSdkVersionの設定と変更方法!

この記事からわかること

  • Flutter/Dart/Androidflutter.compileSdkVersion変更方法
  • 変数定義場所確認

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

build.gradleに定義されているflutter.XXXXXなど

Flutterで作成したAndroidプロジェクトのbuild.gradle.ktsflutter.XXXXXという変数を使用してcompileSdktargetSdkversionCodeなどが指定されています。もちろんcompileSdkなどの値を入れ替えて直接指定することもできますが、せっかく変数になっているのであればそのまま使用したいところです。ただ設定している箇所が少し深いところにありました。


android {
    namespace = "com.example.XXXXXX"
    compileSdk = flutter.compileSdkVersion
    ndkVersion = flutter.ndkVersion

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_11.toString()
    }

    defaultConfig {
        applicationId = "com.example.XXXXXX"
        minSdk = flutter.minSdkVersion
        targetSdk = flutter.targetSdkVersion
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }
}

flutter.compileSdkVersionなどの定義場所

定義場所を探してみるとどうやらプロジェクトの中ではなくFlutter SDK本体の中に定義されているようでした。なのでまずはflutterコマンド場所を確認し、flutter自体のインストール場所を確認します。大抵ユーザーのdevelopment配下とかだと思います。

$ which flutter
/Users/XXXXX/development/flutter/bin/flutter

そこからさらに深掘りしていった「flutter.groovy」ファイルに定義がありました。パスは以下です。

/Users/XXXXX/development/flutter/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy

この中にFlutterExtensionというクラスが定義されており、その中にcompileSdkVersiontargetSdkVersionを確認することができました。


/**
* アプリ専用。アプリレベルの Gradle ビルド ファイル (app/build.gradle または app/build.gradle.kts) で使用される Flutter 拡張機能を提供します。
*
* ここで指定するバージョンは、packages/flutter_tools/lib/src/android/gradle_utils.dart の値と一致する必要があります。そのため、バージョンをアップグレードする場合は、そこに指定されているバージョンを必ず更新してください。
*
* Gradle の拡張機能の詳細については、以下を参照してください。
* * https://docs.gradle.org/8.0.2/userguide/custom_plugins.html#sec:getting_input_from_the_build
*/
class FlutterExtension {

    /** Sets the compileSdkVersion used by default in Flutter app projects. */
    public final int compileSdkVersion = 35

    /** 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 = 35

    /**
     * Sets the ndkVersion used by default in Flutter app projects.
     * Chosen as default version of the AGP version below as found in
     * https://developer.android.com/studio/projects/install-ndk#default-ndk-per-agp.
     */
    public final String ndkVersion = "26.3.11579264"
}

つまりこれはプロジェクトごとというよりFlutterをインストールしているPCごとに一括で設定されているようです。(共同開発の時とか大丈夫なんでしょうか?)

versionCodeやversionNameの定義場所

flutter.groovy」の中にはversionCodeversionNameの定義は見つかりませんでした。そもそもこれらはプロジェクトに完全に依存するものなのでちゃんとプロジェクト内の「android/local.properties」に定義されておりました。


sdk.dir=/Users/XXXXX/Library/Android/sdk
flutter.sdk=/Users/XXXXX/development/flutter
flutter.buildMode=debug
flutter.versionName=1.0.0
flutter.versionCode=1

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index