Android14のAPIレベル34でFlutterアプリを起動する際に直面した問題とその解決策

はじめに

3連休の最終日、ようやくアプリを起動できました。動作にも問題なさそうなので、あとは再申請をするだけです。
連休中の状況については、以下のリンクからご覧ください(技術的な内容はリンク先には記載していません)。


【連休1日目】
ポリシー違反の指摘(「アプリは Android 14(API レベル 34)以降を対象とする必要があります」)に対応することを報告しました。
この時は、そんなに時間はかからないだろうと思っていましたが、実際にはもう3連休も終わりです…。

初心者向け!AndroidのバージョンとAPIレベルってなに? - 中小企業のITサポート


【連休2日目】
Android Studioをアップデートしましたが、安定版ではなく、なぜかプレビュー版のLadybugをインストールしてしまいました…。

Android Studio のバージョンアップをしただけなのに - 中小企業のITサポート


今日は、Android 14(APIレベル34)でFlutterアプリを起動する際に発生した問題と、その解決方法について書き残しておきます。

1. 開発環境

Android Studio Ladybug (version 2024.2)
Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)
gradle 8.5
Android Gradle プラグイン (AGP) 8.1.0
2. Gradleのバージョンを上げる

Android Studioをアップデートした際、バンドルされているJavaのバージョンが上がったため、Gradleのバージョンも更新しました。

gradle-wrapper.properties

変更前

distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

変更後

distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip
3. Android Gradle プラグイン (AGP)のバージョンを上げる

Gradleのバージョンを更新したため、AndroidのGradleプラグインのバージョンも合わせて更新しました。

settings.gradle

変更前

plugins {
    id "com.android.application" version "7.2.2" apply false
}

変更後

plugins {
    id "com.android.application" version "8.1.0" apply false
}
4. namespaceの記述箇所変更

AGP8.0以降では、namespaceの記述が AndroidManifest.xml から app/build.gradle (Gradleビルドファイル)に変更されたため、これを追記しました。

app/build.gradle

変更前

記載なし

変更後

android {
    defaultConfig {
        namespace 'com.example.myapplication'
    }
}
5. 「Namespace not specified」のエラー対応

使用しているFlutterプラグインが対応していないことが原因だったため、回避策を追加しました。

android/build.gradle

変更前

記載なし

変更後

allprojects {
    subprojects {
        afterEvaluate { project ->
            if (project.hasProperty('android')) {
                project.android {
                    if (namespace == null) {
                        namespace project.group
                    }
                }
            }
        }
    }
}

下記サイトを参考にさせていただきました。ありがとうございます。

minpro.net

まとめ

今回の対応を通じて、Gradleについて学ぶ良い機会となりました。特に、Gradleのバージョンを7から8に変更する際に破壊的な変更が発生しており、思いつく限りの方法を試しながらの対応となりました。最終的には上記に記載した内容だけで起動できましたが、ここに至るまでには数々の失敗を繰り返しました。この経験が、何かしら皆さんのお役に立てれば嬉しいです。