😅

[Flutter]簡単なアプリを速攻で新しいAndroid14(API34) に対応させる方法

2024/11/01に公開

簡単なコード、少ないライブラリで作られたアプリ向きです。
そういったアプリを量産している自分のために、備忘録としてまとめたものです。

速攻でAndroidファイルを更新して、Android 14(API34)に対応すぐビルドするためのものです。
基本的にFlutterのバージョンは最新にしてやっています。

やる前にAndroidManifestファイルから権限周りとadmobのコードをコピーしておいて
他のところに移しておいた方がやりやすいかと思います。
後ほどそれをコピペします。

ファイルを削除するので、念の為アプリフォルダ全体をどこかにバックアップしておいた方が良いかと思います。

フォルダをバックアップする。

key.jksなどを誤って消してしまわないようにする。

Androidフォルダを削除

アプリのフォルダからAndroidフォルダを削除します。

dart pub upgrade --major-versions

パッケージを一括でアップグレードします。
libフォルダなどのエラーを解消します。
Dart SDKのバージョンが大きく変わった場合、pubspec.yamlのsdkを書き換える。

environment:
  sdk: ">=3.0.0 <4.0.0"

flutter create .

Androidフォルダが作成できたか確認する。

フォルダ名はlowercaseでなければ作成できないエラーが確認できた。
また、ハイフンではなくアンダーバーのフォルダ名にしなければエラーが出た。
例 Test-App →test_app

[AndroidManifest] Admobコード追加、labelを変更 権限周りの追加

Admobを入れている場合はadmobのコードを入れる
labelもフォルダ名に書き換わっているので修正
権限まわりも忘れず追加する。

flutter clean;flutter pub cache repair;flutter run

namespaceエラーが出たものはgithubのissueやプルリクでAPI34に対応しているものがないか探す。あった場合

パッケージの名前:
    git:
      url: https://github.com/xxxx/xxxx.git
      ref: ブランチ名

なかった場合

https://minpro.net/namespace-not-specified

[app > build.gradle] targetSDK = 34 に変更

targetSDKを書き換えて提出したら、googleplay storeから解決した旨のアラートが審査通過後数時間後ぐらいに届きました。

bundle idを適切なものにする

com.フォルダ名で検索し、正しいものに置き換える。

flutter launcher iconを実行

flutter pub run flutter_launcher_icons

自分の場合、0.14.1のバージョンだと真っ黒のアイコンになったので
0.13.1に書き換えてから実行していました。

aabファイルを作成

https://gakogako.com/flutter_android_release/#環境

いつもこちらのサイトにお世話になっています。

key.jksを移し、$flutter build appbundle'''を行う。

Flutter学習のおすすめ本

Flutterでアプリ開発を始める上での個人的なオススメをまとめています。
書籍はkindle unlimitedで新しいものを無料で読むのが良いと思います。

オススメ書籍

これから始める場合、flutter 1.x の時に書かれた本を読むのは辞めておいた方がいいです。
理由は、flutter 2.x 以降、null-safetyという仕様が加わり、書き方がガラッと変わりました。

僕は2.xがリリースされたあたりでFlutterを初めて、情報がアテにならずかなり苦戦しました。

これから始める方向け 【kindle unlimitedなら無料】

スマホで動くアプリを作ろう!ゼロから始めるFlutter実践入門編 ①: シンプルなアプリを作ってみよう
https://amzn.to/3yxutNM

初心者による初心者のためのFlutter詳解
https://amzn.to/39YcpSK

脱初心者向け(課金の実装など、具体的な実装方法や技術が書いてあります)

現場で使える Flutter開発入門
https://amzn.to/3kUXuLv

Discussion