Proguard / R8不会重命名XML布局中使用的类

问题描述

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

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

我找到的更接近的问题是Proguard (R8) obfuscate custom view names,但它并不能解决我遇到的问题,R8 / Proguard仍然忽略了这些类的重命名:/

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

[编辑]

我终于放弃了,将占位符放到我的自定义视图的XML布局中,并在运行时对其进行了填充。

遗憾的是,Proguard / R8无法使用aapt:/

处理XML布局中的自定义重命名

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

所以对于这些,我也不得不放置占位符并在运行时对其进行充气...

如果有一天有人发现了把戏,我就开个问题;)

解决方法

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

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

-printconfiguration <somefile>

可以检查完整的配置,包括aapt2生成的规则。