模糊处理应用代码
如果您已准备好将应用提交到 Amazon Appstore,请考虑使用 ProGuard 等工具模糊处理应用的代码。在他人以恶意目的反编译您的应用时,模糊处理您的代码会将源代码和机器代码修改为令人难以理解的内容。如果您担心其他人会对您的应用进行逆向工程,使用工具模糊处理代码有助于缓解此威胁。
在代码模糊处理中排除 IAP
模糊处理代码时,您需要确保应用内购买 API 功能不受代码模糊处理的影响。确保您的模糊处理程序不会模糊处理 com.amazon.*
命名空间下的任何类,包括方法名称和标识符。您的模糊处理程序还必须保留注释。
Gradle.Properties
文件中添加 android.enableR8 = false
来禁用 R8。改用 ProGuard(或其他某个工具)。ProGuard
本节介绍如何使用 ProGuard 模糊处理代码,ProGuard 是作为 Android SDK(和 Gradle 3.4.0 之前的 Android Studio)的一部分提供的代码模糊处理工具。ProGuard 缩小、优化并模糊处理源代码。
请注意,IAP API 与 ProGuard 版本 v4.7 或更高版本兼容。
因为应用内购买 (IAP) API 依赖某些可供调用并提供有关购买请求的信息的方法,所以不应模糊处理这些方法。如果模糊处理并重命名了这些方法,亚马逊将无法与您的应用通信。使用 ProGuard 作为模糊处理工具,本节讨论如何模糊处理您的实现 IAP API 的代码,以便亚马逊仍可以与您的应用通信。
为您的启用了 IAP 的项目设置代码模糊处理:
- 编辑您的项目的 build.properties 文件以启用 Proguard。如果您的项目尚未包括 build.properties 文件,请使用此名称创建一个空白文本文件。
将以下行添加到 build.properties 文件中以启用 Proguard:
proguard.config = <proguard.cfg 文件的相对或绝对路径>
注意: 您应使您的配置基于在 ProGuard 配置示例中找到的示例 Android 应用文件。
-
编辑您的 proguard.config 文件来为您的应用配置模糊处理:
- 在您的代码中指定要阻止模糊处理的类。将以下行添加到您的文件中:
-dontwarn com.amazon.** -keep class com.amazon.** {*;} -keepattributes *Annotation*
- 指定要 ProGuard 执行的优化遍数。根据您的应用的要求和计划使用情况,选择优化一遍或不优化:
- 添加以下行以指定优化一遍:
-optimizationpasses 1
-
如果您想要完全跳过优化,请添加以下行:
-dontoptimize
作为最佳实践,至少执行一遍 -dontoptimize -dontobfuscate 以从您的应用中剔除任何临时依赖项。
- 添加以下行以指定优化一遍:
- 删除处理优化的任何其他标记和可能与您刚指定的设置冲突的任何标记。
- 在发布模式下构建您的应用。
因为 ProGuard 与 Android 的构建系统相集成,所以您不必手动调用 ProGuard。如果您已按照所述设置了 proguard.cfg 和 build.properties 文件,则当您在发布模式下构建应用时,ProGuard 将自动运行。