2016-11-25 173 views
0

我在我的項目上運行了proguard,但它不會混淆我的活動名稱。我已經嘗試了幾個規則,它不工作。我不知道到底是什麼意思,例如下面的規則:Proguard混淆不適用於活動?

-keep public class models.* { 
    *; 
} 

和最新

-keepclassmembers class * { 

}

-keepclasseswithmembers class * { 

} 

我對有困難的區別這些規則如何工作。請幫忙。

+0

據我所知,ProGuard的可以在Java代碼中(而不是在XML)唯一的工作,因此,如果他們混淆了活動的名稱,它會亂用清單。所以也許android插件會自動添加一些規則,以免弄髒聲明的東西,這是我們開發人員不應該搞砸的。所有這些只是假設和推論,而不是實際的知情答案。 – Budius

回答

2

在構建過程中,proguard檢查AndroidManifest並保留所有活動類。這是您的應用程序運行所需的。您不應該混淆擴展android.app.Activity的類。


參見:

Why Proguard keeps Activity class in Android?

Why proguard processes AndroidManifest.xml


什麼...... keepclassmembers之間...區別keepclasseswithmembers

根據文檔:

-keepclassmembers

指定類成員被保留了,如果他們的類 保存爲好。例如,您可能想要保留實現Serializable接口的所有類的字段和方法。

-keepclasseswithmembers

指定類和類成員被保存,條件 所有指定的類成員都存在。例如, 可能希望保留所有具有主方法的應用程序,而不需要 必須明確列出它們。

參見:http://proguard.sourceforge.net/manual/usage.html