我是新來的整個混淆與Android的東西,但我已經開始嘗試Proguard最後的日子。無論如何,我被困在所謂的Proguard地獄中。Android模糊混淆與Proguard問題
我的應用程序的結構是我有3個不同的項目。一個庫和兩個應用程序項目。這兩個應用程序項目都基於包含應用程序的所有邏輯和庫的庫項目。應用程序項目中幾乎沒有放置任何東西。
但是,當我嘗試導出其中一個應用程序啓用Proguard時,我得到傑克遜JSON解析庫的一些錯誤。我已經嘗試了很多不同的東西,甚至試圖忽略這些錯誤,但這只是使解析部分失敗。所以忽略這些錯誤並不是正確的做法。
這是我的ProGuard-project.txt文件
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
}
-keep public class com.google.android.vending.licensing.ILicensingService
-keep class org.codehaus.** { *; }
而這些都是我得到的錯誤。
Warning: org.codehaus.jackson.map.ext.JodaSerializers$LocalDateTimeSerializer:
can't find referenced class org.joda.time.LocalDateTime
You should check if you need to specify additional program jars.
Warning: there were 99 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars').
偉大的傢伙,這解決了95%的警告,但有4個更多,他們都是這樣的。警告:org.codehaus.jackson.map.ext.DOMSerializer:找不到引用的類org.w3c.dom.bootstrap.DOMImplementationRegistry – parek
嘗試爲org.w3c。**和其他外部庫添加-keep和-dontwarn 。在我的項目中,我試圖使用不同的選項,包括-libraryjars和-injars,但我沒有運氣,所以我必須保留所有來自外部庫的包(即使我的應用程序沒有直接使用它們)。此外,如果您設法導出您的應用程序,請注意,由於模糊的DTO類,反射方法調用的方法,它仍然可能會在運行時崩潰。 – Leszek