如何使用 Android 3.3 加密 build.gradle 中的密码?在 IDE 中获得 "Cannot resolve symbol"

How to encrypt passwords in build.gradle with Android 3.3? Getting "Cannot resolve symbol" in IDE

自更新到 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'

当compiling/building项目一切正常,因为它可以找到参数。但是在 IDE 中工作时,所有尝试使用 R.string.pwd 的文件都被标记为红色并显示错误消息,这非常烦人。

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

afterEvaluate 是执行此操作的正确位置还是在 build.gradle 的 defaultConfig 部分会更好?

甚至我也面临着类似的问题。所以我将我的 gradle 恢复为 3.2.1 并且它按预期工作,它可能是技术 glitch/issue 和 gradle 3.3

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