2016-11-28 53 views
0

在Android清单,而不是设置机器人:值R.string.value,是有可能从一个Java类中的静态字符串/本地字符串引用字符串?如果是这样,我该怎么做?是否有可能引用静态字符串是Android清单中的值?

我询问的目的,是因为我想知道是否有办法通过隐藏在静态引用不同的库字符串“键”,以进一步确保从逆向工程或黑客攻击的应用程序。

+1

没有也不可能 – Blackbelt

+0

@Blackbelt OK谢谢 –

+1

相关 - http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android –

回答

1

你可以做,在的build.gradle文件,像这样:

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

而获得正常使用R.string.key

+3

这将创建一个XML文件中的条目,就像你会为strings.xml中 – Blackbelt

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商店进行更改。

+0

真。但是,这不是仍然只是将字符串变量注入清单,而不是确保字符串值? –

+0

这不是清单,它是你的build.gradle文件。当应用程序被构建时,这将进入一个名为BuildConfig.java的java文件。如果用户反编译的应用程序,在它的整体就像他们将与他们manifest.xml中不会得到这个文件,所以据我知道这是安全的。 – LukeWaggoner

相关问题