LoginSignup
8
1

Flutter iOS Privacy Manifest対応(Flutter 3.19対応含む)

Last updated at Posted at 2024-03-28

Privacy Manifest対応するために必要な事

  • Flutter 3.19対応
    • Deprecated imperative apply of Flutter's Gradle plugins
      • Gradle周りの書き方を変更する必要があります
  • 各種ライブラリアップデート
    • だいたい最新のverにあげないといけないです
  • Android APIレベル 34 対応
    • 一部SDKで求められます
    • 合わせてJava17対応も必要です
      • AndroidStudioはいい感じにしてくれるがCI(Bitrise)は対応必要
  • FlutterのiOSプロジェクト自体のPrivacyManifest対応をする
    • 対応内容に関しては審査提出時のメールに記載の内容を確認する

Flutter 3.19対応

※3.19.3にアプデしたものを元に書いています

Deprecated imperative apply of Flutter's Gradle plugins

Deprecated imperative apply of Flutter's Gradle plugins | Flutter
https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply

上記の公式のドキュメントを参考に修正します。

上記との差分に関して記載します。

oss-licenses-pluginを使用している場合

android/app/build.gradle
plugins {
    id "com.google.android.gms.oss-licenses-plugin"
}

// 削除
// apply plugin: 'com.google.android.gms.oss-licenses-plugin'
android/settings.gradle
plugins {
    id "com.google.android.gms.oss-licenses-plugin" version "0.10.6" apply false
}

※android/build.gradleのbuildscriptは全部削除

$kotlin version で errorが出た場合

下記の記述は不要なので消してください(Kotlin 1.4.0以降は不要)

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

各種ライブラリアップデート

Flutter, iOS のライブラリに関しては特に問題なし

Android

jackson

verを上げたらエラーになったので一旦最新にはしない

    implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.3'
    implementation 'com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3'

Android APIレベル 34 対応

targetSdkとcompileSdkを34にして、各種javaのversionを17に変更

android/app/build.gradle
android {
    compileSdk 34

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString()
    }
    
    defaultConfig {
        targetSdk 34
    }
}

※targetSdkとcompileSdkにversionがついていましたが34から省略するっぽい
※AndroidStudioはjavaのversion変更をいい感じにしてくれるが、CIはしてくれないので注意

Bitrise java 17 対応

Stacks & Machines が Xcode15.3の場合、defaultのjavaのversionは11なのでStepで17を設定する必要があります。

Set Java Version のStepを追加しInput variables の java version を 17 にします。

このStepを FlutterBuild の前に実行します

FlutterのiOSプロジェクト自体のPrivacyManifest対応をする

対応内容に関しては審査提出時のメールに記載の内容を確認する

PrivacyInfo.xcprivacyを作成し対応する

以上で、対応は終了です

おまけ

Gradleのversionは8系にするとエラーになるので注意

Android APIレベル を34にするとGradle8.4以上にしないといけなそうに書いてあったのですが、7系のままでもいまのところえらーにはならなかったです。逆に8系にするとFlutterのライブラリでnamespaceの記述がなくエラーになることが多いので注意。

use_build_context_synchronously

自分の場合はdart analyzeでuse_build_context_synchronouslyが有効になったので無効にしました。

8
1
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
8
1