相关疑难解决方法(0)

resValue gradle error:"generated.xml"中不支持的类型"String"

几个星期前,我发布了一个问题如何根据buildType覆盖资源.就在昨天,有一个用于androidgradle插件版本.根据这篇关于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)

每个其他构建试用版都不会创建此文件.我试过以下:

  • 在IDE上:
    • 重建项目
    • 执行外部任务"assembleBuildVariant"
  • 超过命令行:
    • gradlew assembleBuildVariant

奇怪的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 android-studio build.gradle android-gradle-plugin

36
推荐指数
1
解决办法
3万
查看次数

如何使用Android Gradle替换字符串资源

我在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)

android gradle android-studio

17
推荐指数
2
解决办法
2万
查看次数