0

自从更新到 Android Studio 3.3 后,我们收到了一些关于加密 gradle 参数的遗留代码的奇怪警告。

在 build.gradle 我们有这一行:

apply from: "encryption.gradle"

在 encryption.gradle 我们有这样的内容:

afterEvaluate {
    android.applicationVariants.all { variant ->
        def pwd = "";
        variant.productFlavors.each { flavor ->
            if (flavor.ext.has("pwd1")) {
                pwd = flavor.ext.pwd1
            }
        }
        if (pwd.isEmpty() && variant.buildType.ext.has("pwd2")) {
            pwd = variant.buildType.ext.pwd2
        }
        variant.resValue 'string', 'pwd', encryptPassword(pwd, variant.signingConfig, variant.applicationId)
    }
}

def String encryptPassword(String password, signingConfig, String applicationId) {
    ...
}

在代码中我们这样使用它:

getString(R.string.pwd)

自 AS 更新以来,我们收到以下错误:

Cannot resolve symbol 'pwd'

在编译/构建项目时,一切运行良好,因为它可以找到参数。但是在 IDE 中工作时,所有尝试使用 R.string.pwd 的文件都被标记为红色并显示错误消息,这很烦人。

有什么办法可以轻松解决这个问题吗?SuppressWarnings("all") 和 SuppressLint("all") 没有帮助。

afterEvaluate 是执行此操作的正确位置,还是在 build.gradle 的 defaultConfig 部分中以某种方式更好?

4

1 回答 1

1

即使我也面临类似的问题。所以我将我的 gradle 恢复到3.2.1并且它按预期工作,这可能是gradle 3.3的技术故障/问题

当我在 gradle 3.3 上时,我尝试使 android studio 的缓存无效,重新启动它等等,但没有解决这个问题。

于 2019-01-24T17:55:27.143 回答