问题描述
除了一些将由开发人员使用的类/方法之外,我需要混淆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
生成的规则。