4

今日、プロジェクトを gradle ビルド システムを使用するように変換し始めました。プロジェクト構造を変更することはできず、さまざまなフレーバーを持っているため、「dev」と「prod」のソースセットをオーバーライドする方法を考えていました。これは明らかに機能しないためです。

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.2'
    }
}

apply plugin: 'android'

android {
    compileSdkVersion 17
    buildToolsVersion "17"

    dependencies {
        compile project(':ABS')
        compile project(':google-play-services_lib')
        compile project(':MergeAdapter')
        compile fileTree(dir: 'libs', include: '*.jar')
    }

    signingConfigs {
        release {
            storeFile file("myapp.keystore")
                    storePassword "**********"
                    keyAlias "**********"
                    keyPassword "**********"
        }
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aild.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        dev {
            java.srcDirs = ['src-dev']
        }

        prod {
            java.srcDirs = ['src-prod']
        }

        instrumentTest.setRoot('tests')
    }

    productFlavors {
        dev {
            packageName "com.myapp.dev"
        }

        prod {
            packageName "com.myapp"
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

これにより、次のエラーが表示されます。

Cannot add a AndroidSourceSet with name 'dev' as a AndroidSourceSet with that name already exists.

問題は、私は新しいプロジェクト構造を使用できず、この構造で立ち往生しているので、ここでソースディレクトリをオーバーライドして、dev バージョンの場合は src-dev を、prod バージョンの場合は src-prod ( src/main/java および src/dev/java または src/prod/java の代わりに)

どうも!

編集: src-prod および src-dev ディレクトリには、異なる環境を指すために使用される定数を持つクラスのみが含まれます。アセットでも同じことを行います(開発環境の別のアイコン)

4

2 に答える 2