アプリの1つをGradleに変換していますが、新しいビルドフレーバー機能を使用して、有料および無料の広告ベースのフレーバーを作成したいと考えています。
広告ベースのバージョンのみがadmob SDKに依存するようにします。
ビルドファイルは次のようになります。
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 {
}
}
}
}
dependencies {
compile 'com.Android.support:support-v4:18.0.+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile fileTree(dir: 'libs', include: '*.jar')
}
無料の製品フレーバーの依存関係を構成して、両方のフレーバーの一般的なライブラリーを含むメインのlibsフォルダーとマージされる独自のlibsフォルダーを設定する方法はありますか?
これが可能な場合、このフォルダをどのように定義しますか?
フレーバー固有の依存関係を定義するには、依存関係セクションでproCompile
の代わりにcompile
を使用できます。 gradleプロパティを実行すると、自動作成された構成の概要が表示されます。
正しいビルドファイルは次のようになります。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:1.2.3'
}
}
apply plugin: 'com.Android.application'
repositories {
mavenCentral()
}
Android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 22
}
productFlavors {
pro {
packageName "de.janusz.journeyman.zinsrechner.pro"
}
free { }
}
}
dependencies {
compile 'com.Android.support:support-v4:22.2.0'
freeCompile 'com.google.Android.gms:play-services-ads:7.5.0'
}
2018年半ばに早送りします。 flavorDimensions
を追加する必要があります。
Android {
...
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
flavorDimensions "dimensionName"
productFlavors {
pro {
dimension "dimensionName"
}
free {
dimension "dimensionName"
}
}
}
dependencies {
implementation 'com.Android.support:support-v4:22.2.0'
freeImplementation 'com.google.Android.gms:play-services-ads:15.0.1'
}
また、注意してください:
構成「コンパイル」は廃止され、「実装」および「api」に置き換えられました。 2018年末に削除されます。詳細については、以下を参照してください。 http://d.Android.com/r/tools/update-dependency-configurations.html
各フレーバーの構成を手動で追加する必要があります。例
configurations {
proCompile
freeCompile
}
dependencies {
compile 'com.parse.bolts:bolts-tasks:1.3.0'
proCompile 'com.Android.support:design:23.1.1'
freeCompile 'com.parse:parse-Android:1.12.0'
}
編集:他のテクニックを使用することをお勧めします!
受け入れられた答えの代替はこれです:
ext {
flavorType = ""
}
gradle.startParameter.getTaskNames().each { task ->
if(task.contains("flavor1")){
flavorType = "flavor1"
} else if (task.contains("flavor2")){
flavorType = "flavor2"
} else {
flavorType = "flavor3"
}
}
if(flavorType == 'flavor1' || flavorType == 'flavor2') {
compile 'com.Android.support:support-v4:18.0.+'
}
シンプル:
dependencies {
....
....
gradle.startParameter.getTaskNames().each { task ->
if(task.contains("free")) {
implementation 'com.google.Android.gms:play-services-ads:17.2.0'
}
}
....
....
}
あるいは単に:
FreeImplementation 'com.google.Android.gms:play-services-ads:17.2.0'