Flavorを使ったFlutterのAndroidアプリでビルドの時に、「ProductFlavor names cannot collide with BuildType names」とエラーが出てビルドができない時の対処法
Flutterでモバイルアプリを実装していて、iOSでいうConfigurationごとの分岐処理をしようとした時に、iOSではビルドができたが、Androidのビルド時に表題のようなエラーが出たので、ビルドできずに困ったので、原因と解消方法を備忘録として残します。
なおFlavorの設定にflutter_flavorizrを使用して、最初は debug
/ release
というflavorを設定していました。
再現環境
– Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale
ja-JP)
– Android toolchain – develop for Android devices (Android SDK version
30.0.3)
– Xcode – develop for iOS and macOS(version 13.2.1)
– Android Studio (version 4.2)
– VS Code (version 1.63.2)
debug / releaseの名称は設定できなかった!
タイトルで答えを書きましたが、なんとなく使用した debug
/ release
という名称は、Androidの場合、予約語?という形で事前に登録されていて、使用できないことがエラーの原因でした。
Android開発をほとんどしたことがないのと、iOSでは問題なくビルドできていたので、最初は原因が全くわからなかったのですが、調べていく中でやっと原因に辿り着くことができました。
最終的には、{ProjectName}/android/app/build.gradle
に記入したflavor名をdevelop
/production
に変更しました。
普段はiOSのネイティブ開発がメインで、サブでFlutter開発をしているので、iOS開発のルールやお作法はある程度把握していますが、Android開発のルールやお作法は全く知らなかったので、改めてFlutterでコード(のみ)を書ける≠AndroidとiOSアプリ開発ができるではないということを思い知らされました。
FlutterのAndroid開発を今後も続ける場合、純粋なFlutterの知識だけでなく、Android開発の知識やノウハウも高めていく必要があると思います。
参考
- http://leckyyyyyyy.github.io/post/2015/android-product-flavor-unavailable-name/