다양한 제품 맛에 대해 서로 다른 의존성을 정의하는 방법
저는 제 앱 중 하나를 그라들(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')
}
무료 제품 맛의 종속성을 구성하여 두 맛에 대한 일반 라이브러리가 포함된 메인 립 폴더와 병합된 자체 립 폴더를 가질 수 있는 방법이 있습니까?
이것이 가능하다면 이 폴더를 어떻게 정의해야 합니까?
사용할 수 있는 맛별 종속성을 정의하는 방법proCompile대신에compile당신의 피부양 부문에서.그라들 속성을 실행하면 자동으로 생성된 구성에 대한 개요를 볼 수 있습니다.
올바른 빌드 파일은 다음과 같습니다.
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 을 참조하십시오.
단순:
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'
각 맛에 대한 구성을 수동으로 추가해야 합니다.예
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.+'
}
Gradle with Kotlin(build.gradle.kts)을 사용하는 경우 사용자 지정 맛에 대한 종속성을 다음과 같이 추가할 수 있습니다.
dependencies {
"freeImplementation"("com.google.android.gms:play-services-ads:7.5.0")
}
이 방법은 다중 모듈 프로젝트에서 작동합니다.
빌드 그래들 파일(예: build_gradle_config.gradle)을 생성하고 구성을 다음과 같이 정의합니다.
android {
flavorDimensions 'resource_type'
productFlavors {
create("flavor1") {
dimension 'resource_type'
versionName "$app_version_name - flavor1"
}
create("flavor2") {
dimension 'resource_type'
versionName "$app_version_name - flavor2"
}
}
}
그리고 이 그라들 파일을 앱 모듈이나 기능 모듈 등 원하는 모든 모듈에 적용합니다.
apply from: rootProject.file("build_flavor_config.gradle")
sync project 후에 다음과 같이 각 플레이버의 구현에 대한 구체적인 내용을 확인할 수 있습니다.
flavor1Implementation("flavor1Library")
flavor2Implementation("flavor2Library")
언급URL : https://stackoverflow.com/questions/18196974/how-to-define-different-dependencies-for-different-product-flavors
'programing' 카테고리의 다른 글
| 익명 객체에 메소드가 있는지 확인하는 방법은? (0) | 2023.09.08 |
|---|---|
| rc-X 양식의 버전 문자열 순서에 따라 git 태그를 정렬하는 방법Y.Z.W? (0) | 2023.09.08 |
| 메뉴 항목을 작업 표시줄에 숨기려면 어떻게 해야 합니까? (0) | 2023.09.08 |
| jQuery 플러그인이 로드되었는지 확인하려면 어떻게 해야 합니까? (0) | 2023.09.08 |
| jQuery get the image src (0) | 2023.09.08 |