ProGuard 是否保护源代码中的数据?

Does ProGuard protect data in source code?

我目前正在编写一个 Android 库(AAR 文件),它将随数据库一起提供(将放在应用程序的 asset/ 文件夹中)。数据库中的数据包括一些敏感数据,我想保护它们不被我的图书馆和数据库的用户看到。

我考虑过加密数据并将解密密钥存储在我的图书馆的源代码中。但当然这种方法非常不安全,因为任何人都可以反编译源代码并读取解密密钥。

然后我的同事建议按照上面的方法,使用ProGuard混淆源代码,让反编译器无法理解密钥是什么,在哪里。这个方法行得通吗?

Proguard 将通过给所有方法、类 和变量随机赋予无意义的名称来混淆代码。即使是反编译,如果没有 mappings.txt 文件也很难理解,该文件只会与您一起使用。确保其安全,以便解决生产中的问题。

但是 硬编码字符串在反编译时仍然会被看到 。您需要操作字符串并将其存储为加密或其他内容。写个方法解密再用。

详细了解 Proguard 及其优势 here

不,它不会保护您的数据(字符串文字、硬编码值等)。它只会混淆您的代码。

为了存储加密密钥(在您的情况下是您的解密密钥),可以使用 KeyStore