[問題] AS混淆後class不見

作者: goodsheng (恩哈哈)   2017-09-13 12:09:42
再出AAR時把混淆開啟後,得到的AAR內確有class都不見的狀況
想再確認下面幾點疑問
1.爬文後知道應該可以從ProGuard設定混淆規則來修改一些類要不要混淆?
2.為什麼class會不見,爬文有看到似乎可能是該class內的code關聯性不高?被混淆優化掉?
需要麻煩各位前輩幫忙 謝謝。
作者: ssccg (23)   2017-09-13 12:53:00
從要保留的class/method開始找,有被用到的就會加入要保留的,到最後都不需要保留的(=沒用的)就刪除包library通常是把所有要公開的API設為保留
作者: goodsheng (恩哈哈)   2017-09-13 15:34:00
但設保留的為什麼就沒有混淆到呢不太了解。是否設"保留(保護)"就等於"不會混淆"?應該說我最初的用意就是想要混淆,可是得到的結果是class不見..
作者: ssccg (23)   2017-09-13 17:24:00
直接指定keep的會被保留且不會混淆,由proguard找到會被用到但不是直接指定keep的,就會留下來但會被混淆用-dontshrink就會一律保留,但混不混淆還是看keep
作者: goodsheng (恩哈哈)   2017-09-13 17:28:00
但一開始我沒有指定keep時,class卻會不見
作者: ssccg (23)   2017-09-13 17:28:00
proguard其實主要是個瘦身工具而不是保護工具沒指定keep又沒被別的keep的class用到的當然會不見啊留下public member可以寫 { public *; }
作者: goodsheng (恩哈哈)   2017-09-13 17:30:00
聊解!!原來是因為"沒被別的keep的class用到"這樣
作者: ssccg (23)   2017-09-13 17:30:00
各種用法可以看 https://goo.gl/bpuiMv

Links booklink

Contact Us: admin [ a t ] ucptt.com