android 打包 混淆配置_Android混淆打包配置总结

Android打包失败出现Proguard returned with error code 1. See console的错误

48f71d8ec21bbafdfa403a5bf34ef4f5.png

e33a300113eae524ffd49a214743abcf.png

这个问题是由于代码混淆引起的,找不到引用包。

只需在你的proguard-project.txt中添加如下两行即可。

-libraryjars libs/okio-1.6.0.jar(你可以根据你的项目提示,添加需要的jar。)

备注:

如果添加上面两行后依然打包不成功,那么你需要修改位于

android-sdk-windows\tools\proguard\bin的目录下的:proguard.bat 文件,

用记事本打开,修改如下:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

改为:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

即可!

此方法是把当前版本SDK改成和之前SDK版本中含有的proguard.bat文件一致!

不混淆第三方jar包包括以下方面

libs中的第三方jar包(第三方jar包中如果有.so文件,不用去理会)

如果有些类调用了jni也不需要混淆,不然会出错。

还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆。

混淆配置整理

#====================================第三方===============================================

#声明第三方jar包,不用管第三方jar包中的.so文件(如果有)

-libraryjars libs/android-support-v4.jar

#不混淆第三方jar包中的类

-dontwarn android.support.v4.**

-keep class android.support.v4.**{*;}

#=====================百度地图,你需要添加以下申明:=====================

-libraryjars libs/locSDK_6.23.jar

-keep class com.baidu.**{*;}

-keep class vi.com.gdi.bgl.android.**{*;}

#=====================xUtils-不要混淆xUtils中的注解类型,对使用DbUtils模块持久化的实体类不要混淆,或者注解所有表和列名称=====================

-libraryjars libs/xUtils-2.6.14.jar

-keep class * extends java.lang.annotation.Annotation {*;}

#@Table(name="xxx"),@Id(column="xxx"),@Column(column="xxx"),@Foreign(column="xxx",foreign="xxx");

#=====================litpal框架混淆=====================

-libraryjars libs/litepal-1.3.1.jar

-dontwarn org.litepal.*

-keep class org.litepal.**{*;}

-keep enum org.litepal.**

-keep interface org.litepal.**{*;}

-keep public class * extends org.litepal.**

-keepattributes *Annotation*

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keepclassmembers class * extends org.litepal.crud.DataSupport{*;}

#=====================okhttputils框架=====================

#====okhttputils====

-libraryjars libs/okhttputils.jar

-dontwarn com.zhy.http.**

-keep class com.zhy.http.**{*;}

-keep interface com.zhy.http.**{*;}

#====okhttp====

-libraryjars libs/okhttp-2.7.0.jar

-dontwarn okhttp3.**

-keep class okhttp3.**{*;}

-keep interface okhttp3.**{*;}

-keepattributes Signature

-keepattributes *Annotation*

-dontwarn com.squareup.okhttp.**

-keep class com.squareup.okhttp.**{*;}

-keep interface com.squareup.okhttp.**{*;}

#====okio====

-libraryjars libs/okio-1.6.0.jar

-dontwarn java.nio.file.*

-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

-dontwarn okio.**

-keep class okio.**{*;}

-keep interface okio.**{*;}

#====gson====

-libraryjars libs/gson-2.2.1.jar

-keep class sun.misc.Unsafe{*;}

-dontwarn com.google.gson.**

-keep class com.google.gson.**{*;}

-keep class com.google.gson.stream.**{*;}

-keep class com.google.gson.examples.android.model.**{*;}

#=====================pulltorefresh框架=====================

-dontwarn com.handmark.pulltorefresh.library.**

-keep class com.handmark.pulltorefresh.library.**{*;}

-dontwarn com.handmark.pulltorefresh.library.extras.**

-keep class com.handmark.pulltorefresh.library.extras.**{*;}

-dontwarn com.handmark.pulltorefresh.library.internal.**

-keep class com.handmark.pulltorefresh.library.internal.**{*;}

#==================================API=================================================

#API里边的类,最好都要避免混淆

-keep public class * extends android.app.Fragment

-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.support.v4.**

-keep public class com.android.vending.licensing.ILicensingService

-dontwarn android.annotation

-keepattributes *Annotation*

#=====================保留了所有的Native变量名及类名=====================

-keepclasseswithmembernames class * {

native;

}

#某些构造方法不能去混淆

-keepclasseswithmembernames class * {

public(android.content.Context, android.util.AttributeSet);

}

#枚举类不能去混淆

-keepclasseswithmembernames class * {

public(android.content.Context, android.util.AttributeSet, int);

}

#aidl文件不能去混淆.

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

-keepclassmembers class * {

public(org.json.JSONObject);

}

#=====================不混淆资源类=====================

-keepclassmembers class **.R$* {

public static;

}

#=================================当前项目==================================================

#一般model最好避免混淆(model无关紧要,不混淆也没多大关系)如:

-keep class com.xxx.xxxx.xxxx.model.**{*;}

#===================================其他常规================================================

#加上这句话,不然会在控制台中报warning警告【不添加的话比较好,可以用来验证签名是否成功】

#-ignorewarnings

#设置混淆的压缩比率 0 ~ 7

-optimizationpasses 5

#Aa aA

-dontusemixedcaseclassnames

#混淆后生产映射文件 map 类名->转化后类名的映射

-verbose

#混淆采用的算法.

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

其中,-keep class com.xxx.xxxx.xxxx.model.**{*;},填写自己项目中model包路径。

参考资料:

proguard returned with error code 1.异常的解决方法

Android打包失败Proguard returned with error code 1. See console

Android 混淆打包不混淆第三方jar包

android混淆打包配置(忽略第三方jar)

Android 混淆代码总结

android数据库框架,sqlite框架,LitePal框架,混淆配置

[Android Pro] android 混淆文件project.properties和proguard-project.txt

关于使用了OkHttp和Android-PullToRefresh开源库后如何混淆

Android之混淆心得与亲身体验

[置顶] Android 混淆代码总结

android 代码混淆示例

OKHttpUtils框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值