내 앱 중 하나를 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'
}
또한 다음 사항에 유의하십시오.
‘compile’구성은 더 이상 사용되지 않으며 ‘implementation’및 ‘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'