ama*_*its 41 android gradle library-project android-productflavors
我有一个图书馆项目和一个应用程序.我想为图书馆和应用程序提供2种产品口味(商店,开发).当我为应用程序构建商店风味时,我想使用库中的商店风味.此外,当我为应用程序构建dev风格时,我想使用库中的dev风格.我尝试为库和应用程序设置相同的产品风格,但它不起作用.
这是我的配置:
图书馆
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
defaultConfig {
applicationId "ro.amarkovits.graddletest.lib"
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors{
store{
}
dev{
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud)
我有这些文件:src/main/res/values/strings.xml和src/store/res/values/strings.xml
应用
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
defaultConfig {
applicationId 'ro.amarkovits.mymodule.app'
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName '1.0'
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors{
store{
}
dev{
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':lib')
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到此错误:错误:(12,23)找不到与给定名称匹配的资源(在'text'处,值为'@ string/app_name').在APP_NAME中定义string.xml在库(在主及店目录)
如果我删除从它建立图书馆的productFlavors但始终使用values.xml从主目录
gal*_*lex 55
在您的库中,您需要告诉gradle每次每个变体都要构建:
android {
publishNonDefault true
}
Run Code Online (Sandbox Code Playgroud)
然后在你的应用程序中,从最近我猜,你可以这样做:
dependencies {
(...)
devCompile project(path: ':lib', configuration: 'devDebug') // or 'devRelease'
storeCompile project(path: ':lib', configuration: 'storeRelease') // or 'storeDebug'
}
Run Code Online (Sandbox Code Playgroud)
在图书馆出版物的官方文件中找到.
编辑:
从版本0.14.3(2014/11/18)开始,您现在也可以使用Flavor-buildType-Compile指令:
在android {}范围之前的build.gradle中添加以下内容:
configurations {
devDebugCompile
devReleaseCompile
storeDebugCompile
storeReleaseCompile
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据Flavor-BuildType声明并使用库的不同版本:
dependencies {
(...)
devDebugCompile project(path: ':lib', configuration: 'devDebug')
devReleaseCompile project(path: ':lib', configuration: 'devRelease')
storeDebugCompile project(path: ':lib', configuration: 'storeDebug')
storeReleaseCompile project(path: ':lib', configuration: 'storeRelease')
}
Run Code Online (Sandbox Code Playgroud)
编辑:
自Android Gradle Plugin 3.0.0以来,模块之间的依赖关系管理已发生变化.它会自动尝试匹配您的应用程序与其所依赖的库/模块之间的风格.
小智 5
要为每个flavor定义特定的依赖项,可以使用"nameOfTheFlavorCompile"而不是"compile"
dependencies {
storeCompile project(':lib')
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20877 次 |
最近记录: |