公式サンプルや動画コースでFlutterを勉強しているのですが、作り進めたFlutterプロジェクトのCompany domainを後から変更したい場面に遭遇しました。
AndroidアプリもiOSアプリも作ったことのないド素人だったので設定に少し手間取ってしまいました。きっと同じような人いるだろうなと思ったので記事に残します。
変更箇所
Flutterプロジェクトは一つですが、Androidアプリ用の変更箇所とiOSアプリ用の変更箇所があるようでした。
また、下記サンプルはi_am_rich
プロジェクトのCompany domainをexample.com
からhogehoge.com
に変更する例を紹介します。
基本的には、Android Studioにて新規にFlutterプロジェクトを生成してから、それほど大きな開発を進めていない状態になっているので、一般的な構造になっていると思います。
Androidアプリ用
Androidアプリ用には、ファイル内の記述とディレクトリ名を変更する必要があります。
1. ビルド定義の変更
プロジェクト内 android/app/build.gradle/build.gradle
の applicationId
を変更します。
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.i_am_rich"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
↓
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.hogehoge.i_am_rich"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
2. MainActivityパッケージの変更
プロジェクト内 android/app/src/main/kotlin/com/example.i_am_rich/MainActivity.kt
内の package
を変更します。
package com.example.i_am_rich
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
↓
package com.hogehoge.i_am_rich
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
また、ファイルの格納されているディレクトリ名も下記のように変更します。
android/app/src/main/kotlin/com/example.i_am_rich/MainActivity.kt
↓
android/app/src/main/kotlin/com/hogehoge.i_am_rich/MainActivity.kt
3. マニフェストファイル設定値の変更
2で行ったパッケージの変更をマニフェストファイル(AndroidManifest.xml
)に反映します。
このファイルは下記の3ディレクトリに同様のファイルが作られていると思うので全て変更します。
android/app/src/main/AndroidManifest.xml
android/app/src/profile/AndroidManifest.xml
android/app/src/debug/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.i_am_rich">
↓
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hogehoge.i_am_rich">
iOSアプリ用
iOSアプリ用にはIdentifierの設定を変える必要があります。
Identifier設定の変更
プロジェクト内のios
ディレクトリをXcodeで開きます。
Android Studioを使っている場合はios
ディレクトリを右クリック
→Flutter
→Open iOS module in Xcode
で開くと思います。
左のナビゲーターからRunner
を選択すると下記画像のように表示されはずです。
このカーソルがあたっているBundle Identifier
の項目を変更してください。
Android Studioを使うときのTIPS
2. MainActivityパッケージの変更にてディレクトリ名の変更を行う際、Android Studioで行う場合は 右クリック
→Refactor
→Rename
ではドメインまで変更できません。
右クリック
→Refactor
→Move
を使ってください。
もちろん、Finder等のエクスプローラで開きなおして直接変更しても大丈夫です。
おわりに
上記で自分は動きました!
ただ、まだまだ学びたてでより複雑なパターンがあるのかもしれないので、アップデートあればどんどん加筆していきます。
参考