在我的Android项目中,我想保持我的网络服务地址未知。 我存储链接如下:
private final String SERVICE_LINK = "mywebservicelink..."
但是既然我看到APK可以被反编译,我想知道这个链接是否可以被人知道。
如何安全存放?
感谢。
答案 0 :(得分:3)
您可以在gradle.properties
例如:
在您的gradle.properties
(通常位于您的根项目中)中,您可以定义:
SERVICE_LINK = "mywebservicelink"
然后在您的应用程序中build.gradle
android {
...
defaultConfig {
resValue "string", "service_link", SERVICE_LINK
}
...
}
然后,此服务链接将在您的资源中准备好R.string.service_link
。也就是说,您可以通过执行以下操作来获取值:
getString(R.string.service_link);
编辑1:
如果您询问如何在APK中隐藏字符串,则可以使用ProGuard。 但是,请注意。无论您在源代码中添加什么内容,都不能100%保证它不能进行逆向工程。 ProGuard将对您的代码进行模糊处理,这将使逆向工程变得更加困难。
有关更多信息,此主题非常棒: How to avoid reverse engineering of an APK file?
答案 1 :(得分:1)
您可以在执行某些操作后指定SERVICE_LINK变量的值,而不是直接指定。例如,使用带有一些无意义字符串的字符串操作,从某些特定位置获取字符或子字符串,从某些算术运算等获得的ASCII代码中获取某些字符可能对此有用。
这提供了复杂性,因此第三方人员不容易找到您的常数值。他们可能认为这是一个随运行时间变化的动态值,或者是不相关的东西。但如果直接在“”中,就会很容易找到它。
答案 2 :(得分:0)
根据经验,不能隐藏任何网络地址。
任何正在搜索网络服务,地址或相关内容的人都可以监控他们自己的网络并捕获这些包。
主机的域名或IP始终处于明显的状态。