AndResGuard icon indicating copy to clipboard operation
AndResGuard copied to clipboard

针对xml属性自动设置白名单

Open Zhangshua opened this issue 6 years ago • 14 comments

ConstraintLayout 中Group 新出来个属性constraint_referenced_ids,其中添加id的名字,可以对这些id进行统一的设置。但混淆之后就找不到这些id了。 所以可不可以做到扫描constraint_referenced_ids 里所引用的id,如果有则自动加入到白名单中?

Zhangshua avatar Jun 20 '18 11:06 Zhangshua

可否提供一下复现方法和出错信息?

simpleton avatar Jun 20 '18 20:06 simpleton

这个不算bug,就是希望可以有更加简洁的方式。 Group使用如下: <android.support.constraint.Group android:id="@+id/group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible" app:constraint_referenced_ids="title,content" /> app:constraint_referenced_ids 里引用了其他两个id title和content,group初始化时会根据字符串title 用getIdentifier去找这个id,如果被混淆了,就会出现这个log:ConstraintHelper: Could not find id of "title",造成界面处理有些问题。 我现在是通过将这些id手动加入白名单解决问题的,如果可以做到自动就更好了

Zhangshua avatar Jun 21 '18 03:06 Zhangshua

同样遇到该问题

wuhaiyang avatar Jun 26 '18 07:06 wuhaiyang

@ZhangGeyz 查看源码后建议:不在xml 中定义Group, 在代码中初始化Group, 再调用ConstraintHelper#setReferencedIds 绑定关联视图id, 绕开构造方法中getIdentifier 获取Group 所关联的视图的id值 这种方案,目前个人觉得这种方案较好!

wuhaiyang avatar Jun 26 '18 15:06 wuhaiyang

@wuhaiyang 不在xml绑定会有些麻烦,我采用的方案是在xml定义的id约定必须采用统一的前缀,然后白名单过滤这些

Zhangshua avatar Jul 02 '18 03:07 Zhangshua

其实你可以keep住所有id,在团度开发中,混淆id会带来一些意想不到的问题

anAngryAnt avatar Jul 05 '18 03:07 anAngryAnt

android.support.constraint.Barrier 控件也遇到了同样的问题

sw926 avatar Jul 27 '18 03:07 sw926

碰到同样的问题,所以这个问题的最佳实践是?

Eklir avatar Jan 10 '19 08:01 Eklir

@sw926 +1一旦混淆barrier就失效了

jaysowen avatar Mar 21 '19 11:03 jaysowen

在whiteList中设置了"R.id.*" 为什么还是会失效 不知道是不是跟ThinR有关

ShadowfaxGHH avatar Jul 10 '19 13:07 ShadowfaxGHH

这个问题的解决办法很简单,在代码中手动调用一下setReferencedIds()就搞定了

lindan83 avatar Oct 11 '19 08:10 lindan83

遇到同样问题,虽然可以通过手动调用setReferencedIds()或加入whiteList解决,但平时开发完全忘记在用AndResGuard这个库,会忘记处理的,然后可以把问题流出到线上了

zhuangjiahua avatar Feb 24 '21 09:02 zhuangjiahua

同遇到该问题,这个问题在开发测试阶段都比较难察觉,如果能有一个对开发者透明的方案防止遗漏对referencedId的处理,对开发者来说会比较友好

TechToArt avatar Jul 15 '22 05:07 TechToArt

找了好久最终才定位到时Group的问题,希望作者能在README.md上提醒下

WhoIsAA avatar Jul 15 '22 08:07 WhoIsAA