8
6

More than 5 years have passed since last update.

gradleでBuildTypes,flavorsを利用した時に'Duplicate class found in the file'が出る

Last updated at Posted at 2014-11-04

前置き

gradleの超ベンリ機能にBuildTypes,flavorsがあります。

  • BuildTypes
    Release, Debugを切り替えることができます。

    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.hoge
        }
        debug {
            debuggable true  
            applicationIdSuffix = '.alpha'  
            versionNameSuffix = 'a'
        }
    }
  • flavors
    同じアプリの別機能を実装する際に利用します。

    productFlavors {
        //通常版
        normal {
            applicationId = 'com.tomoima.hogeApp'
        }
        //海外版
        abtest {
            applicationId = 'com.tomoima.hogeGlobalApp'
        }

    }

詳しくはこちらhttp://vividcode.hatenablog.com/entry/android-app/build-variantsを見ると勉強になります。

問題

BuildTypesやflavorsを使うことで,同じクラス名でソースコードを切り替えることが出来るようになります。で、切り替えたいjavaファイル(ここではMoge.java)以下のようにファイルを置くと、エラーメッセージがでます。

//debug版
src/debug/java/com/tomoima/hogeApp/Moge.java

//release版
src/release/java/com/tomoima/hogeApp/Moge.java

出るメッセージ(IDEで赤線がでます):

"Duplicate class found src/main/java/com/tomoima/hogeApp/Moge.java"

原因

src/main配下においてあるファイルとBuildTypesやflavors配下にあるファイル名が重なるとNGのようです。

解決策

src/main配下にある同じMoge.javaファイルを消せばOKです。
あとは、BuildVariantでビルドしたいタイプを切り替えるか、ターミナルからgradleのオプションでビルドを切り替えることができます。

8
6
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
8
6