Skip to content
liujingxing edited this page Apr 20, 2023 · 3 revisions

1、findAabConstraintReferencedIdsfindAndConstraintReferencedIds moveDirpackageChangexmlClassGuard的作用域是哪些?

以上5个任务都会作用于整个项目,前提是主module得直接或间接依赖子module,与主module不相关的module,是不会有任何效果的

2、能混淆aarjar及任意第三方库吗?

不能,XmlClassGuard的所有任务仅会作用于本地代码;当然,如果你有源码,集成到项目中,并让主module直接或间接依赖它,也是可以的

3、必须要配合AabResGuard使用吗?

非必须,当然如果你将findConstraintReferencedIds属性置为true,那就需要你手动集成AabResGuard

4、xmlClassGuard任务都会混淆哪些类?

xmlClassGuard任务会检索res/layoutres/navigation下的所有xml文件以及AndroidManifest.xml文件

  • res/layout中,会检索自定义View类以及自定义RecyclerView.LayoutManager类

  • res/navigation中,会检索自定义fragment

  • AndroidManifest.xml中,会检索Application类及四大组件

以上检索到的所有类,都会混淆其包名+类名;当然,除过以上这些类,还有一些类会被混淆,就是和以上这些类在同一包下的类,也会被混淆,

例如:com.example.activity.HomeActivitycom.example.activity.User, User类并不会在xml文件中检索到,理论上是不会被混淆的,但由于其跟HomeActivity类在同一包下,而HomeActivity会在xml中会被检索到,故会一起被混淆

5、如果保持某些类不被混淆?

首先,只要在xml文件中检索到的类,都会被混淆,这个无法保持;如果与xml无关的类也被混淆了,而你又不想将其混淆,只需要将该类换个目录即可

6、集成XmlClassGuard,命令栏里看不到相关任务

首先,取消勾选Do not build Gradle task list during Gradle sync,随后同步项目即可,如下

image image