Android Gradle 2.5 如何让 resConfigs 工作

标签 android gradle android-ndk android-gradle-plugin

要在 Android Studio 中使用最新的 NDK 支持,您必须使用 Gradle 2.5。 http://tools.android.com/tech-docs/new-build-system/gradle-experimental

引入了新的语法。例如。 buildToolsVersion "23.0.1"变成 buildToolsVersion = "23.0.1"

对于 Gradle 2.5 之前的 resConfigs,您可以编写:

 defaultConfig {
        ...
        resConfigs "en", "fr"
        }

但是对于 2.5,我找不到编写逗号分隔字符串的方法。

即使我尝试使用一根绳子

defaultConfig.with  {
        ...
        resConfigs = "fr"
        }

我遇到了这个错误 错误:没有这样的属性:类的resConfigs:com.android.build.gradle.managed.ProductFlavor

我需要这个,因为 AppCompat 有许多我不支持 ATM 的语言的翻译。

编辑更新 我想出了如何以新格式输入字符串列表,例如

resConfigs = ["fr", "es"]

但我仍然收到无法识别 resConfigs 的错误

当使用 ./gradlew --stacktrace assembleDebug 运行时,这里是输出

 problem occurred configuring project ':app'.
> Exception thrown while executing model rule: model.android
   > No such property: resConfigs for class: com.android.build.gradle.managed.ProductFlavor

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
    at org.gradle.execution.TaskNameResolver.selfClosedTasksNode(TaskNameResolver.java:116)
    at org.gradle.execution.TaskNameResolver.hasTask(TaskNameResolver.java:128)
    at org.gradle.execution.TaskNameResolver.access$100(TaskNameResolver.java:38)
    at org.gradle.execution.TaskNameResolver$MultiProjectTaskSelectionResult.collect(TaskNameResolver.java:195)
    at org.gradle.execution.TaskNameResolver$MultiProjectTaskSelectionResult.collect(TaskNameResolver.java:203)
    at org.gradle.execution.TaskNameResolver$MultiProjectTaskSelectionResult.collectTasks(TaskNameResolver.java:191)
    at org.gradle.execution.TaskNameResolver.selectWithName(TaskNameResolver.java:61)
    at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:87)
    at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:75)
    at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:42)
    at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:44)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:51)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:57)
    at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:51)

最佳答案

这是对我有用的:

| gradle-experimental version   | Gradle version | resConfigs usage                  |
|-------------------------------|----------------|-----------------------------------|
| 0.2.0                         | 2.5            | resourceConfigurations = ["fr"]   |
| 0.3.0-alpha5                  | 2.6            | resourceConfigurations = ["fr"]   |
| 0.6.0-alpha5                  | 2.10           | resourceConfigurations << "fr"    |

我不明白的是,我查找了 gradle-core-1.4.0-beta4 的源代码,它是 gradle-experimental:0.3.0- 的依赖项alpha5 和 productFlavor 的 DSL 确实包含 resConfigresConfigs 的代码。在 com.android.build.gradle.internal.dsl.ProductFlavor.java

public void resConfigs(@NonNull String... config) {
    addResourceConfigurations(config);
}

我不确定为什么它没有被正确拾取。

关于Android Gradle 2.5 如何让 resConfigs 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34705846/

相关文章:

gradle - Gradle使用空的构建文件进行评估

android - 纠结谷歌测试

java - 安卓 java.lang.IllegalArgumentException : Unable to find native library: main

java - Gradle多项目根级构建任务

Android:按钮的 GridView 但按钮没有响应

android - 如何启动 2 个 Activity 之间的共享元素转换?

android - if else 语句中的警报对话框生成器 - android

gradle - Gradle脚本:将子文件夹和其他文件夹的内容复制到新位置

java - OpenGL : performance in C++ (NDK) vs Java (Dalvik) 中的 Android 专用游戏

android - 无法升级 android 应用内订阅。错误 : "Something went wrong on our end. Please try again."