1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Flutter】依存パッケージのエラーを自力で修正する

Last updated at Posted at 2024-08-16

今回の背景

Flutterで自作したアプリの Android Gradle Plugin (AGP) を最新のバージョンに更新しようと思い、7.x.x から 8.x.x にアップデートしました。すると、使用しているパッケージのsound_modeにて以下のエラーが発生し、アプリのビルドが通らなくなりました。

image.png

Namespace not specified. Specify a namespace in the module's build file:

自分のアプリ内でビルドエラーが発生している場合、通常は build.gradle に namespace を追加することで解決できます。しかし、今回のケースではパッケージ側のソースコードまで遡って修正する必要がありました。

android/build.gradle
android {
    namespace 'com.example.myapplication'
}

sound_modeパッケージは、pub.devで確認したところ8ヶ月以上更新がされておらず、こちらの対応が行われていません。代替できそうなライブラリが無かったこともあり、今回はパッケージ側のソースコードを自分で修正しました。
この記事では、他パッケージでも応用可能な知見として手順をご紹介します。

パッケージ側のソースコードを修正する

まず、修正したいパッケージのGitHubリポジトリに移動し、forkします。1

image.png

次に、forkしたリポジトリをローカル環境にclone & 実行し、修正を行います。
(今回の場合は、android/build.gradlenamespaceを追加しています)

image.png

変更をcommit & pushします。また、forkしたリポジトリのURLをコピーしておきます。

image.png

最後に、pubspec.yamlを以下のように置き換えます。urlには先ほどコピーしたGitHubのリポジトリのURLを貼り付けます。

(旧) pubspec.yaml
- sound_mode: ^3.0.0
(新) pubspec.yaml
sound_mode:
  git:
    url: https://github.com/sakusaku3939/sound_mode.git

以上の手順により、自分でカスタマイズしたパッケージを使用することができるようになります。urlの下にrefを置くことで、対象のブランチ名やコミットIDを指定することも可能です。

また、forkした後の変更点はそのままプルリクエストとして投げる事が可能なので、余裕があればOSSのコントリビューターとしてぜひ貢献してみましょう。もし開発が放置されていてmergeが行われない場合でも、他のユーザーがプルリクエストのfork先URLをpubspec.yamlに指定して利用できるようになります。

あとがき

書きながら調べていたところ、今回のパッケージ側のnamespace問題はbuild.gradleに以下のコードを追加することで解決できたようです。。下調べが足りない

android/build.gradle
subprojects {
    afterEvaluate { project ->
        if (project.hasProperty('android')) {
            project.android {
                if (namespace == null) {
                    namespace project.group
                }
            }
        }
    }
}
  1. git cloneをした後に自分のリポジトリに上げることでも同様に可能

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?