0

我需要混淆 Android 库的整个代码,除了一些将被开发人员使用的类/方法。

我成功了,除了在我的 XML 布局中调用的某些类没有被重命名,而且我很难在 R8/Proguard 中找到一个选项或强制它的技巧,即使我必须手动或使用脚本在我的 XML 布局中更新这些类(我知道 R8/Proguard 自己不会编辑它们)感谢生成的mapping.txt文件。

我发现的更接近的问题是Proguard (R8) 混淆了自定义视图名称,但它没有解决我面临的问题,R8/Proguard 仍然忽略这些类的重命名:/

如果有人有想法,欢迎您 :) 感谢您的时间和知识;)

[编辑]

我最终放弃并在我的自定义视图的 XML 布局中放置了占位符,并在运行时对它们进行了膨胀。

遗憾的是,Proguard/R8 无法使用 aapt 处理在 XML 布局中重命名的自定义类:/

对于信息,我也遇到了fragment在我的 XML 布局中使用项目的问题,其中name属性没有重命名,而相应的类是......

所以对于这些,我也必须放置占位符并在运行时给它们充气......

我让问题打开,以防有一天有人找到窍门;)

4

1 回答 1

0

目前不支持在 XML 布局中重命名。作为编译过程的一部分,该aapt2工具将为 XML 布局中存在的名称生成-keep规则,因此 Android 运行时将能够执行布局膨胀所需的反射。

通过将以下选项添加到配置 ( proguard-rules.pro)

-printconfiguration <somefile>

可以检查完整的配置,包括由aapt2.

于 2020-09-10T06:56:20.583 回答