→ ssccg: 從要保留的class/method開始找,有被用到的就會加入要保留 09/13 12:53
→ ssccg: 的,到最後都不需要保留的(=沒用的)就刪除 09/13 12:54
→ ssccg: 包library通常是把所有要公開的API設為保留 09/13 12:55
→ goodsheng: 但設保留的為什麼就沒有混淆到呢 09/13 15:34
→ goodsheng: 不太了解。是否設"保留(保護)"就等於"不會混淆"? 09/13 15:47
→ goodsheng: 應該說我最初的用意就是想要混淆,可是得到的結果是 09/13 15:48
→ goodsheng: class不見.. 09/13 15:49
謝謝ssccg大,後來聽您說明我試了這個可以混淆且不會不見..
-keep public class com.example.mylibrary.classA{*;}
想再請教如何
在同一class內讓public的method有保護但private的method不保護呢? 關於寫法
※ 編輯: goodsheng (114.42.32.32), 09/13/2017 17:20:50
→ ssccg: 直接指定keep的會被保留且不會混淆,由proguard找到會被用 09/13 17:24
→ ssccg: 到但不是直接指定keep的,就會留下來但會被混淆 09/13 17:24
→ ssccg: 用-dontshrink就會一律保留,但混不混淆還是看keep 09/13 17:27
→ goodsheng: 但一開始我沒有指定keep時,class卻會不見 09/13 17:28
→ ssccg: proguard其實主要是個瘦身工具而不是保護工具 09/13 17:28
→ ssccg: 沒指定keep又沒被別的keep的class用到的當然會不見啊 09/13 17:29
→ ssccg: 留下public member可以寫 { public *; } 09/13 17:30
→ goodsheng: 聊解!!原來是因為"沒被別的keep的class用到"這樣 09/13 17:30
有試成功了,謝謝ssccg大!
-keep public class com.example.mylibrary.classA{ public *;}
public int cfunction3() {
int var1 = this.a();
byte var2 = 5;
return var2;
}
private int a() {
byte var1 = 5;
return var1;
}
另外剛試了,想額外確認一下。是不是假如這樣定義其實是不太有意義的?
-keep public class com.example.mylibrary.classB{ private *;}
因為假如classB內的public method沒被別的class用到的話,那就會不見了。
會造成包成jar後要用時,卻沒辦法給拉public method。自己這樣想不知是否是這樣呢?
※ 編輯: goodsheng (114.42.32.32), 09/13/2017 18:08:06