是否有可能引用静态字符串是Android清单中的值?

时间:2016-11-28 11:50:35

标签: java android android-manifest

在Android Manifest中,不是将android:值设置为R.string.value,是否可以从java类中的静态字符串/本地字符串引用字符串?如果是这样,我该怎么做?

我的询问目的是因为我想知道是否有办法通过隐藏静态引用中各种库的字符串“keys”来进一步保护应用程序免受逆向工程或黑客攻击。

2 个答案:

答案 0 :(得分:1)

您可以在build.gradle文件中执行此操作,如下所示:

buildTypes {
    release {
        resValue "string", "key", "[key here]"
    }
    debug {
        resValue "string", "key", "[key here]"
    }
}

通常使用R.string.key

答案 1 :(得分:0)

您无法在manifest.xml中执行此操作,但您可以在build.gradle文件中添加值,如下所示:

debug {
    buildConfigField 'String', 'BASE_API_ENDPOINT', '"https://myapi.api.com/"'
}

release {
    buildConfigField 'String', 'BASE_API_ENDPOINT', '"https://myapi.api.com/"'
}

然后通过调用BuildConfig.BASE_API_ENDPOINT

来访问它们

这样做的好处是,您可以在构建类型的基础上进行设置,以便字符串可以根据它是用于开发,调试还是Play商店来更改。