是否有更安全的方法在Android项目中存储敏感字符串?

Ker*_*rem 8 security android decompiling

在我的Android项目中,我想保持我的Web服务地址未知.我存储链接如下:

private final String SERVICE_LINK = "mywebservicelink..."
Run Code Online (Sandbox Code Playgroud)

但是因为我看到APK可以被反编译,我想知道这个链接是否可以被人知道.

我该如何安全存放?

谢谢.

Fad*_*ils 7

您可以在您的中设置敏感字符串gradle.properties

https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_properties_and_system_properties

例如:

在您的gradle.properties(通常位于根项目中)中,您可以定义:

SERVICE_LINK = "mywebservicelink"
Run Code Online (Sandbox Code Playgroud)

然后在你的应用程序中build.gradle

android {
   ...
   defaultConfig {
       resValue "string", "service_link", SERVICE_LINK
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

然后,该服务链接将在您的资源中准备就绪,格式为R.string.service_link。也就是说,您可以简单地通过执行以下操作来获取该值:

getString(R.string.service_link);
Run Code Online (Sandbox Code Playgroud)

编辑1:

如果您询问如何在 APK 中隐藏字符串,那么您可以使用 ProGuard。不过,请注意。无论您在源代码中添加什么内容,都不能 100% 保证它不会被逆向工程。ProGuard 会混淆您的代码,这将使逆向工程变得更加困难。

欲了解更多信息,这个线程很棒: 如何避免 APK 文件的逆向工程?