2

gradle でビルドされた android プロジェクトに 2 つの製品フレーバーがあります。

フレーバーの 1 つは追加の依存関係を宣言していますが、実際にはその依存関係は両方のフレーバーで使用されています。フレーバーの 1 つが最初のフレーバーに対してのみ宣言されたライブラリに依存するため、両方のフレーバーがビルドされます。

フレーバーの 1 つはプロ バージョンであり、最終的には apk に admob SDK を含めるべきではないため、何らかの理由で両方のフレーバーが admob SDK を追加するのではないかと心配しています。

次の build.gradle ファイルがあります。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }

    productFlavors {
        Pro {
            packageName "de.janusz.journeyman.zinsrechner.pro"
        }
        Free { 
            dependencies {
                compile files('src/Free/libs/admob.jar')
            }
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile fileTree(dir: 'libs', include: '*.jar')
}
4

1 に答える 1

5

1 つの製品フレーバーのみに依存関係を追加する正しい方法は次のとおりです。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }

    productFlavors {
        pro {
           packageName "de.janusz.journeyman.zinsrechner.pro"
        }
        free { }
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile fileTree(dir: 'libs', include: '*.jar')
    freeCompile files('src/Free/libs/admob.jar')
}
于 2013-08-14T16:55:05.313 に答える