如何解决以下警告?是否有其他选择?' auto'?
警告:DSL元素' ProductFlavor.resConfigs'有价值的' auto'这是过时的,没有被替换。它将在2018年底删除
android {
...
flavorDimensions "device", "paid", "market"
productFlavors {
phone {
// Phone config version for the application
resConfigs ("auto")
dimension "device"
matchingFallbacks = ['mobile']
}
...
}
...
}
答案 0 :(得分:8)
这是更新到Android Studio 3.1后的错误:
根据官方建议here,如果您支持所有语言或提供包含您的应用支持的语言代码的数组,那么最好的办法就是完全删除代码:
resConfigs "en", "de", "it", "fr" // etc. etc.
更多信息:
这是官方文档here提出的资源优化之一,所以我决定在示例项目中使用那些FirebaseUI
依赖项测试此标志
implementation "com.firebaseui:firebase-ui-auth:$firebase_ui_version"
implementation "com.firebaseui:firebase-ui-database:$firebase_ui_version"
implementation "com.firebaseui:firebase-ui-storage:$firebase_ui_version"
使用两个选项创建调试APK,结果如下:
- 使用
resConfigs "auto"
调试APK为:3,793 KB- 使用
resConfigs "en"
(仅限1种语言)调试APK为:3,294 KB
这意味着对于那些依赖项的所有语言的所有字符串资源我只有大约500KB的大小增加。这是你可以推理的东西,你绝对应该对你使用的依赖项进行测试,看看大小增加是否可以忽略不计,从而决定提供支持的语言列表或删除resConfigs
选项。
PS:如果您使用的是Android FirebaseUI
,这是建议的优化之一,我已经创建了一个关于该事情的问题here,并且这个问题已经被一个叫做真棒的人解决了SUPERCILEX
答案 1 :(得分:1)
auto
,因为它在多模块项目中产生了许多问题。相反,您应该指定应用支持的语言环境。 Android插件3.1.0及更高版本忽略auto
参数,Gradle打包您的应用及其依赖项提供的所有字符串资源。
com.android.tools.build:gradle:3.2.0-alpha08 BaseFlavor.java
* <p><b>Note:</b> <code>auto</code> is no longer supported because it created a number of
* issues with multi-module projects. Instead, you should specify the locale that your app
* supports, as shown in the sample above. Android plugin 3.1.0 and higher ignore the <code>auto
* </code> argument, and Gradle packages all string resources your app and its dependencies
* provide.