Android studio 打包jar时的混淆

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34942689/article/details/88391122

混淆的位置为项目lib或者module下的Proguard-rules.pro文件

#混淆时不使用大小写混合类名
-dontusemixedcaseclassnames

表示不跳过library中的非public的类

-dontskipnonpubliclibraryclasses

打印混淆的详细信息

-verbose

Optimization is turned off by default. Dex does not like code run

through the ProGuard optimize and preverify steps (and performs some

of these optimizations on its own).

-dontoptimize

表示不进行校验,这个校验作用 在java平台上的

-dontpreverify

Note that if you want to enable optimization, you cannot just

include optimization flags in your own project configuration file;

instead you will need to point to the

“proguard-android-optimize.txt” file instead of this one from your

project.properties file.

#使用注解需要添加
-keepattributes Annotation
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService

For native methods, see http://proguard.sourceforge.net/manual/examples.html#native

#指定不混淆所有的JNI方法
-keepclasseswithmembernames class * {
native ;
}

keep setters in Views so that animations can still work.

see http://proguard.sourceforge.net/manual/examples.html#beans

#所有View的子类及其子类的get、set方法都不进行混淆
-keepclassmembers public class * extends android.view.View {
void set*(**);
*** get
();
}

We want to keep methods in Activity that could be used in the XML attribute onClick

不混淆Activity中参数类型为View的所有方法

-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations

不混淆Enum类型的指定方法

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

不混淆Parcelable和它的子类,还有Creator成员变量

-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator CREATOR;
}

不混淆R类里及其所有内部static类中的所有static变量字段

-keepclassmembers class *.R$ {
public static ;
}

The support library contains references to newer platform versions.

Don’t warn about those in case this app is linking against an older

platform version. We know about them, and they are safe.

不提示兼容库的错误警告

-dontwarn android.support.**

Understand the @Keep support annotation.

-keep class android.support.annotation.Keep
-keep @android.support.annotation.Keep class * {*;}
-keepclasseswithmembers class * {
@android.support.annotation.Keep ;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep ;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep (…);
}
###########################以下是需要手动的混淆配置协议###############################

-libraryjars “C:\Program Files\Java\jre1.8.0_151\lib\rt.jar”
#-libraryjars “C:\Users\admin\AppData\Local\Android\sdk\platforms\android-26\android.jar”

注意:以上两个路径需要将以上路径是自己jar包的位置,需要根据自己情况进行修改,如果报重复配置的错误,注释掉即可

#代码迭代优化的次数,默认5
-optimizationpasses 5
#混淆时不会产生形形色色的类名
-dontusemixedcaseclassnames
#忽略警告
-ignorewarnings
#以下是不需要混淆的文件
-keep class com.android.sdk.demo.LogUtils{
*;
}
-keep class com.android.sdk.demo.StorageUtils{
*;
}

猜你喜欢

转载自blog.csdn.net/qq_34942689/article/details/88391122