Flutter:「このファイルは Android 12 以降にはインストールできません。」のエラー

2022/6/26 Flutter エラー・バグ日記 

Google Playにリリース済のアプリを更新するため、Google Play Consoleに、.aabファイルをアップロードしたら、以下のエラーが発生。

 

アップロードされた APK または Android App Bundle には、インテント フィルタを使用するアクティビティ、アクティビティ エイリアス、サービス、またはブロードキャスト レシーバが含まれていますが、’android:exported’ プロパティ セットは使用されていません。このファイルは Android 12 以降にはインストールできません。詳細: developer.android.com/about/versions/12/behavior-changes-12#exported

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかは載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

実際の画面は以下のとおり。

 

 

AppStoreへのアップロード時にエラーが出るのは慣れていたが、Google Playでは初めてだったので、戸惑う。。

 

必要な対処法は、エラーメッセージにあるリンク(Androidの公式ページ)内に書かれており、「android:exported」 を「true」に設定する必要があることは分かったが、それをどこに記述するのか、今ひとつわからない。

 

調べてみると、多くの方が記事を上げてくださっており、主に下記の記事を参照されているようだった。

 

 

結論としては、「AndroidManifest.xml」ファイル内の、「activity」タグ内に、

 

android:exported = “true”

 

を設定すれば良い模様。

 

android/app/src/main/AndroidManifest.xml

 

確かにその通り追記して、Google Play Consoleにアップロードしたら、エラーは解消された。

 

この対応は、Flutter 2.10にアップグレードした際に必要だったことを思い出した。

 

※Flutter 2.10にアップグレードしたときの対応は、下記に記載

 

 

ただ、今回のアプリでは、2.10へのアップグレード時に、「android:exported」の設定をしなくても、ビルド時にエラーにならなかったので、対応せずに放置してしまっていた。

 

ビルド時にはエラーにならないが、Google Play Consoleにアップロードした時点でエラーになることもあるとは。。。

 

なお、この設定が必要になるのは、公式説明ページによると、「アプリ コンポーネントに LAUNCHER カテゴリが含まれている場合」とのこと。

 

こちらの記事でも解説されている。

 

 

確かに自分の「AndroidManifest.xml」ファイルにも「LAUNCHER」が設定されていた。

 

android/app/src/main/AndroidManifest.xml

 

ではこの「LAUNCHER」っていったい何なの?ということだが、公式サイトの説明を読んでもよく分からなかったが、こちらの記事で分かりやすく説明いただいていた。

 

 

つまるところ、Androidのホームボタンを押すと起動できる「ホーム・ランチャーアプリ」として認識させたい場合に必要な設定らしい(実際に起動させるには、「DEFAULT」の設定も必要とのこと)。

 

なぜ「LAUNCHER」があると設定が必要になるのか、までは理解できていないが、、いったん解決できたので、ここまでで良しとしておく。

 

\ Flutterの学習で役立ったコンテンツ・書籍 /

 

 

 


Dart入門 – Dartの要点をつかむためのクイックツアー
タイトルとURLをコピーしました