2014-02-17 39 views
0

我面臨一個問題,從長回來混淆android lib項目不是一個android應用程序, 我嘗試使用android proguard GUI但混淆後,我無法使用該jar。如何混淆android庫項目一步一步

請爲我提供步驟指南或任何已解決此問題的鏈接。

在此先感謝..

回答

0

它保存爲proconf.txt和使用ProGuard貴爲confiuration文件打開並更改輸入和輸出的jar位置..和過程 也改變andoid.jar和支持lib如果位置需要。

-injars 'bishwash/eclipse kepler' 
-outjars bishwash/ 

-libraryjars bishwash/android-sdk-macosx/platforms/android-18/android.jar 
-libraryjars 'bishwash/eclipse kepler/android-work/uxcam_lib_new/libs/android-support-v4.jar' 

-dontskipnonpubliclibraryclassmembers 
-printmapping mapping.txt 
-dontusemixedcaseclassnames 
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod 
-keepparameternames 
-renamesourcefileattribute SourceFile 
-dontpreverify 
-verbose 


-keepclassmembers class * extends java.io.Serializable { 
    static final long serialVersionUID; 
    private static final java.io.ObjectStreamField[] serialPersistentFields; 
    private void writeObject(java.io.ObjectOutputStream); 
    private void readObject(java.io.ObjectInputStream); 
    java.lang.Object writeReplace(); 
    java.lang.Object readResolve(); 
} 

# Keep - Library. Keep all public and protected classes, fields, and methods. 
-keep public class * { 
    public protected <fields>; 
    public protected <methods>; 
} 

# Also keep - Enumerations. Keep the special static methods that are required in 
# enumeration classes. 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

# Keep names - Native method names. Keep all native class/method names. 
-keepclasseswithmembers,allowshrinking class * { 
    native <methods>; 
} 

# Keep names - _class method names. Keep all .class method names. This may be 
# useful for libraries that will be obfuscated again with different obfuscators. 
-keepclassmembers,allowshrinking class * { 
    java.lang.Class class$(java.lang.String); 
    java.lang.Class class$(java.lang.String,boolean); 
} 

-assumenosideeffects class android.util.Log { 
    public static *** d(...); 
    public static *** e(...); 
} 
+0

我已經嘗試過的相同的過程,但在使用特定的類名稱混淆後,使用解編譯器檢查時顯示空白的方法。請給我提供更多的步驟,我的lib有7到8個包,更多的信息將不勝感激... –

+0

再次嘗試與上述完全相同的proguard.txt。它爲我的項目工作。 –

+0

在做了上述步驟之後,在方法邏輯不混淆的情況下,我公開的方法暴露給最終開發者,那邏輯需要重命名..... –