Idea打包混淆時注意

Idea打包混淆時注意


1、對於已加入的jar,使用

-libraryjars libs/youjarname.jar ,會報錯(Eclipse上不會):
Error:ProGuard: [H5Project] Note: there were 282 duplicate class definitions.(提示類定義衝突了)
注意:idea有的時候錯清除了,注意清理一下緩存


2、(1)*是一層,**是多層
(2)對於第三方包,如果第三方沒有提供混淆說明,那就不要混淆,免得影響功能
-dontwarn 包名.**
-keep class 包名.**{*;}
(3)對於某些第三方包(記爲包A),其也使用了第三方包(記爲包B),但是我們使用到的A包中的功能與包B無關(既B包不影響我們使用A中的某些功能),因而我們無需把包B也導入,但是用idea時會報錯,對於此種情形,解決方法如下:
a. 把包B也到入到工程(但是有一種情形下是多層引用,A引用了多個包或者B又引用了其它包)
b. 法二:
A包目錄:A.A1.B1, A.A1.B2.C1, A.A1.B2.C2,A.A1.B3
B包目錄:不用管,A.A1.B2中使用了B包,但是我們使用的是A.A1.B1或者A.A1.B3中的功能,沒有使用A.A1.B2.**中的功能,但是A.A1.B2.**使用了B包,混淆時會報錯找不到。
比如報錯A.A1.B2.**中某類中的B.A.*某類找不到
錯誤類似:
Error:ProGuard: [項目名]   Exception   = [java.lang.IllegalArgumentException] (Can't find any super classes of [A/A1/B2/C1/Object] (not even immediate super class [B/A/C/AbstractObject]))


此時解決方法如下:
-dontwarn A.A1.**
-keep class A.A1.*{*;}#不能用**
-dontwarn A.A1.B2.**
#-keep class A.A1.B2.**{*;}#這行一定不能加,讓其混淆掉(就能忽略檢查,混淆通過)

注意-keep class與-keep public class的不同



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章