随着as最新的更新,也有了很多的修改,今天主要介绍as3.0打包的配置及过程
直接开始
第一步:
首先进行配置根目录下的gradle.build
使用的gradle插件是3.0.0
image然后就是额外的配置:
image第二步:
配置module下的gradle.build
引入属性文件,里头包含配置了私钥路径,密码等。取名为:singing.proerties
image imageKEY_ALIAS:别名
KEY_PASSWORD:签名文件密码
STORE_FILE:文件保存路径
STORE_PASSWORD:密钥库密码
然后就是基本配置:
image签名配置:
image构建配置:
image多渠道打包工具:
image然后就是依赖的一些配置:
image然后就是混淆的一些基本配置:
proguard-rules.pro
-ignorewarnings
抑制警告
-optimizationpasses 5
代码混淆的压缩比例,值在0-7之间
-dontusemixedcaseclassnames
混淆后类名都为小写
-dontskipnonpubliclibraryclasses
指定不去忽略非公共的库的类
-dontskipnonpubliclibraryclassmembers
指定不去忽略非公共的库的类的成员
-dontpreverify
不做预校验的操作
-verbose
-printmapping proguardMapping.txt
生成原类名和混淆后的类名的映射文件
-optimizations !code/simplification/cast,!field/,!class/merging/
指定混淆是采用的算法
-keepattributes Annotation,InnerClasses
不混淆Annotation
-keepattributes Signature
不混淆泛型
-keepattributes SourceFile,LineNumberTable
-dontwarn com.squareup.okhttp.**
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View
-keep public class com.android.vending.licensing.ILicensingService
-keep class android.support.** {*;}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers class * extends android.app.Activity{
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep public class * extends android.view.View{
*** get*();
void set(**);
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class * implements 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 class *.R$ {
*;
}
不混淆资源类
-keepclassmembers class *.R$ {
public static <fields>;
}
-keepclassmembers class * {
void (OnEvent);
}
保持 native 方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
保持自定义控件类不被混淆
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
保持自定义控件类不被混淆
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
Butterknife
-dontwarn butterknife.internal.**
-keep class butterknife.** { *; }
-keep class **$$ViewInjector { *; }
-keepclasseswithmembernames class * {
@butterknife.InjectView <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.OnClick <methods>;
@butterknife.OnEditorAction <methods>;
@butterknife.OnItemClick <methods>;
@butterknife.OnItemLongClick <methods>;
@butterknife.OnLongClick <methods>;
}
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
-keep class com.umeng.commonsdk.** {*;}
大家也可以关注我的公众号:Lucidastar
也可以查看我的github账号:https://github.com/Lucidastar/PackApk
网友评论