LoginSignup
15
10

More than 3 years have passed since last update.

Flutterプロジェクトの Company domain を変更する

Posted at

公式サンプルや動画コースで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.gradleapplicationIdを変更します。

    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ディレクトリを右クリックFlutterOpen iOS module in Xcodeで開くと思います。

左のナビゲーターからRunnerを選択すると下記画像のように表示されはずです。
このカーソルがあたっているBundle Identifierの項目を変更してください。

Identifier_change.png

Android Studioを使うときのTIPS

2. MainActivityパッケージの変更にてディレクトリ名の変更を行う際、Android Studioで行う場合は 右クリックRefactorRenameではドメインまで変更できません。

右クリックRefactorMoveを使ってください。
もちろん、Finder等のエクスプローラで開きなおして直接変更しても大丈夫です。

おわりに

上記で自分は動きました!
ただ、まだまだ学びたてでより複雑なパターンがあるのかもしれないので、アップデートあればどんどん加筆していきます。

参考

15
10
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
15
10