在Android Manifest中,不是将android:值设置为R.string.value,是否可以从java类中的静态字符串/本地字符串引用字符串?如果是这样,我该怎么做?
我的询问目的是因为我想知道是否有办法通过隐藏静态引用中各种库的字符串“keys”来进一步保护应用程序免受逆向工程或黑客攻击。
答案 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商店来更改。