Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@ayatothos

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

公式サンプルや動画コースで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等のエクスプローラで開きなおして直接変更しても大丈夫です。

おわりに

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

参考

9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What is going on with this article?