模块管理
模块管理是您选择 Nativify 如何保护和优化某个发布版本的地方。配置文件保存了模块、目标平台和模式的完整选择,因此相同的已审核配置可以重复使用,而无需手动重新构建。
从接近您所需结果的配置文件开始,设置您的发布版本实际支持的目标平台,然后以小规模、可测试的组启用模块。模块只更改其适用的代码;启用它并不保证每个方法或调用点都会受到影响。
| 控件 | 用途 | 对构建和发布的影响 |
|---|---|---|
| 配置文件 | 为应用程序或发布渠道保存命名、可审核的配置 | 无运行时成本。仅在测试受保护产物后更新配置文件。 |
| 自动保存 | 在您工作时将对活动配置文件的更改持久化 | 对受保护产物无影响。当您想在保存一个配置之前比较多个配置时,请关闭它。 |
| 方法选择 | 决定是保护 @Nativify 方法还是所有符合条件的方法 | 更大的选择范围可能会增加构建时间、原生构建产物大小以及需要测试的应用程序行为量。 |
| 目标平台 | 为您发布的每个操作系统和架构生成原生输出 | 每个目标都会增加构建输出和发布测试范围。仅选择已审计的发布目标。 |
实际落地流程
- 从默认或均衡配置文件以及最小有用的方法选择开始。
- 选择受保护 JAR 将运行的每个目标平台。不要依赖不属于您发布计划的构建目标。
- 首先启用稳定的优化或混淆模块。在每个目标上验证普通应用程序流程、启动、集成和性能。
- 一次添加一个实验性模块。将测试结果和配置文件保存在一起,以便可以恢复已知良好的配置。
- 在发布之前,在每个受支持的操作系统、架构和 JDK 发行版上对确切的受保护产物进行冒烟测试。
阅读模块参考
参考按主要用途对模块进行分组。每个条目描述了预期效果、可能成本以及对发布重要的兼容性边界。
| 术语 | 含义 |
|---|---|
| 稳定 | 受支持的配置。它仍然需要使用您的应用程序、目标平台和 Java 运行时进行测试。 |
| 实验性 | 更窄的兼容性范围或更强的行为权衡。仅在暂存测试覆盖代表性生产行为后启用它。 |
| 构建成本 | 额外的编译时间、内存使用或原生输出大小。确切成本取决于所选代码和目标平台。 |
| 运行时成本 | 受保护应用程序运行时增加的额外工作。模块也可能改善特定热路径、没有可测量的效果,或仅适用于某些代码。 |
性能描述是方向性的而非保证。使用代表性工作负载测量受保护产物,尤其是在同时启用多个混淆或运行时保护模块之前。
兼容性检查清单
- 保持暂存环境中使用的 JDK 供应商和主版本与生产环境接近。
- 测试第三方集成、反射密集型代码、序列化、动态代理、原生集成以及自定义类加载(如果存在)。
- 使用您的客户使用的部署工具验证行为,包括调试器、分析器、安全产品、虚拟桌面基础设施以及适用的自动化测试环境。
- 将目标平台限制和模块依赖视为硬性配置边界。
有关各个模块的描述,请参阅模块参考。