Jan*_*usz 138 android gradle android-build
我正在将我的一个应用程序转换为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')
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在免费产品风格中配置依赖项,使其拥有自己的libs文件夹,该文件夹与包含两种风格的通用库的主libs文件夹合并?
如果可能,我该如何定义此文件夹?
Ren*_*hke 175
要定义特定于风味的依赖项,可以使用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'
}
Run Code Online (Sandbox Code Playgroud)
use*_*104 19
快进到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'
}
Run Code Online (Sandbox Code Playgroud)
另外,请注意:
配置“编译”已过时,已被“实现”和“ api”替换。它将在2018年底删除。有关更多信息,请参见:http : //d.android.com/r/tools/update-dependency-configurations.html
Ark*_*ior 11
您需要为每种风格手动添加配置.例
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'
}
Run Code Online (Sandbox Code Playgroud)
Mil*_*ský 10
如果您将 Gradle 与 Kotlin (build.gradle.kts) 一起使用,则可以按如下方式添加自定义风格的依赖项:
dependencies {
"freeImplementation"("com.google.android.gms:play-services-ads:7.5.0")
}
Run Code Online (Sandbox Code Playgroud)
简单的:
dependencies {
....
....
gradle.startParameter.getTaskNames().each { task ->
if(task.contains("free")) {
implementation 'com.google.android.gms:play-services-ads:17.2.0'
}
}
....
....
}
Run Code Online (Sandbox Code Playgroud)
要不就:
FreeImplementation 'com.google.android.gms:play-services-ads:17.2.0'
Run Code Online (Sandbox Code Playgroud)
编辑:我建议使用其他技术之一!
接受答案的替代方案是:
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.+'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39080 次 |
| 最近记录: |