几个星期前,我发布了一个问题如何根据buildType覆盖资源.就在昨天,有一个用于android的gradle插件版本.根据这篇关于G +的帖子,我决定写下这个问题.
我详细描述的问题:
我想根据它创建一些资源值buildType,但这不能正常工作:只有在命令行上完成构建时才会创建文件"generated.xml":
gradlew build
Run Code Online (Sandbox Code Playgroud)
但是我通过在comannd线上构建完整的项目也会出错:
* What went wrong: Execution failed for task ':app:merge<buildVariant>Resources'.
Unsupported type 'String' in file C:\Users\...\build\res\generated\release\values\generated.xml
Run Code Online (Sandbox Code Playgroud)
每个其他构建试用版都不会创建此文件.我试过以下:
奇怪的gradle控制台输出:
:app:generateBuildVariantResValues UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)
我的build.gradle:
buildTypes {
debug{
buildConfigField "String", "FOO", "\"FOO DEBUG\""
resValue "String", "RES FOO", "RES FOO DEBUG"
}
release {
buildConfigField "String", "FOO", "\"FOO RELEASE\""
resValue "String", "RES FOO", "RES FOO RELEASE"
}
}
Run Code Online (Sandbox Code Playgroud)
我的"generated.xml":
<!-- Automatically generated file. …Run Code Online (Sandbox Code Playgroud) 我在Android Studio中使用gradle创建了一个新的应用程序,现在我需要在资源中制作大约10个具有不同包名和值的版本.我在示例中制作了自定义flavor,并希望使用自定义值替换此自定义flavor中的一些字符串.我找到了这样的例子:
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: ['version': '2.2'])
Run Code Online (Sandbox Code Playgroud)
但我不知道该把它放在哪里.据我所知,我需要把它放到单独的任务中,但如何通过IDE调用此任务?
此外,我需要在Java类和Content Provider的auth中替换一些变量,也许我需要通过将文件复制到flavor1文件夹并让gradle合并它来实现这一点,但似乎错误的解决方案是存储多个文件的副本line ...也许我需要为这一切使用其他一些解决方案?
这是build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':JazzyListView')
compile project(':ABS')
compile project(':Volley')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
versionCode 5
versionName "3.0"
minSdkVersion 8
targetSdkVersion 17
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
}
}
productFlavors {
flavor1 {
packageName "com.example.flavor1"
}
flavor2 { …Run Code Online (Sandbox Code Playgroud)