要在 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 确实包含 resConfig
和 resConfigs
的代码。在 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/