Android混淆打包配置总结
Android打包失败出现Proguard returned with error code 1. See console的错误


这个问题是由于代码混淆引起的,找不到引用包。
只需在你的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 <methods>;
}
#某些构造方法不能去混淆
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
#枚举类不能去混淆
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
} #aidl文件不能去混淆.
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
} -keepclassmembers class * {
public <init>(org.json.JSONObject);
} #=====================不混淆资源类=====================
-keepclassmembers class **.R$* {
public static <fields>;
} #=================================当前项目==================================================
#一般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.异常的解决方法
http://wangwei121004-163-com.iteye.com/blog/1206595
Android打包失败Proguard returned with error code 1. See console
http://www.cnblogs.com/snake-hand/p/3161438.html
Android 混淆打包不混淆第三方jar包
http://blog.csdn.net/qwiwuqo/article/details/33452107
android混淆打包配置(忽略第三方jar)
http://blog.csdn.net/wangbofei/article/details/8266553
Android 混淆代码总结
http://blog.csdn.net/lovexjyong/article/details/24652085
android数据库框架,sqlite框架,LitePal框架,混淆配置
http://www.aiuxian.com/article/p-1927692.html
[Android Pro] android 混淆文件project.properties和proguard-project.txt
http://www.cnblogs.com/0616--ataozhijia/p/3730746.html
关于使用了OkHttp和Android-PullToRefresh开源库后如何混淆
http://www.codes51.com/article/detail_124186.html
Android之混淆心得与亲身体验
http://www.cnblogs.com/lee0oo0/archive/2013/12/04/3457877.html
[置顶] Android 混淆代码总结
http://blog.csdn.net/lovexjyong/article/details/24652085
android 代码混淆示例
http://www.cnblogs.com/lesliefang/p/3819259.html
OKHttpUtils框架
https://github.com/hongyangAndroid/okhttp-utils
https://github.com/pengjianbo/OkHttpFinal
Android混淆打包配置总结的更多相关文章
- android混淆打包配置(忽略第三方jar)
在project.properties里加上 proguard.config=proguard.cfg proguard.cfg 配置如下: -optimizationpasses 5-dontu ...
- android -------- 混淆打包报错(warning - InnerClass annotations are missing corresponding EnclosingMember annotations)
最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations ...
- android——混淆打包
网上搜了一大堆,在此不一一赘诉. 直接讲解了 如上图这么配置,其实就是加上一句话而已.告诉打包工具混淆打包的代码放在./proguard-project.txt这里 proguard.config=. ...
- Android 混淆打包
有些时候我们希望我们自己的apk包不能被别人反编译而获取自己的源代码.这就需要我们通过Android提供的混淆打包技术来完成. 一.没有引用外部包的情况: 这种情况下代码混淆的方式相对简单: 1)只需 ...
- [原] Jenkins Android 自动打包配置
一.Jenkins自动打包配置 目标:1. 自动打包:2. 自动上传:3. 友好下载 1. Jenkins简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 减少重复劳 ...
- [原] Jenkins Android 自动打包配置(转)
一.Jenkins自动打包配置 目标:1. 自动打包:2. 自动上传:3. 友好下载 1. Jenkins简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 减少重复劳 ...
- Jenkins Android 自动打包配置
一.Jenkins自动打包配置 目标:1. 自动打包:2. 自动上传:3. 友好下载 1. Jenkins简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作. 减少重复劳 ...
- Android 混淆打包不混淆第三方jar包
项目由于要公布,所以要混淆打包. 混淆打包流程: 1.在proguard-project.txt文件里加入不须要混淆的类和第三方的jar包 这个是保持自己包中不须要混淆的类,假设有些类调用了jni ...
- Android混淆打包
一.理论知识 ProGuard是一款免费的Java类文件压缩器.优化器和混淆器.它能发现并删除无用类.字段(field).方法和属性值(attribute).它也能优化字节码并删除无用的指令.最后 ...
随机推荐
- JMS开发(二):深入PTP,Pub-Sub两种模式
1.PTP模型 PTP(Point-to-Point)模型是基于队列(Queue)的,对于PTP消息模型而言,它的消息目的是一个消息队列(Queue),消息生产者每次发送消息总是把消息送入消息队列中, ...
- 关于spring管理hibernate事物
下面这篇文章对我帮助很大.http://blog.csdn.net/jianxin1009/article/details/9202907
- C#学习笔记(十三):I/O操作
C#的IO操作主要是针对文件夹和文件的读取和写入操作,下面我们来学习一下相关操作的类. 获取文件信息 Directory和DirectoryInfo 两个类的功能基本相同,区别如下: 前者继承Syst ...
- map的正确删除方式
遍历删除map元素的正确方式是 for(itor = maptemplate.begin; itor != maptemplate.end(); ) { if(neederase) ...
- Installation Directory must be on a local hard drive解决办法
今天带着公司的电脑来杭州这边,同事发来一个Sliksubversion.msi来进行安装,由于系统是win8.1的,直接点击安装不了,真的是醉了,于是乎发挥度娘的力量找到了答案,这里贴出来,供大家来参 ...
- 发现一个不错的十六进制编辑器-HxD
十六进制编辑器我觉得是个必需的工具,遥想当年用文曲星的时候,Pacmanager.Ewayeditor…… 之前都在用WinHex,好用,但是是个收费软件,老用着破解版心里还是不舒服 后来发现这个名叫 ...
- delphi 如何知道 Treeview,Listview 当前最上面显示的节点
如何知道 Treeview,的节点是根节点 procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint ...
- 关于IE8中使用Jquery load方法无法正常加载页面
最近发现,在IE8中使用Jquery load方法时无法正常加载页面,页面显示空白,没有加载.调试发现,页面多了一个</div>标签,但在FF和CH下表现正常.希望能给遇到同样问题的码农有 ...
- Quart 2D 绘制图形简单总结
0 CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文 1 CGContextMoveToPoint 开始画线 2 CGConte ...
- ADO.NET中使用事务进行数据库读写的办法
使用事务一般是进行数据写入,数据读取一般是不需要这货的 第一种办法: 使用存储过程: 顾名思义,在存储过程中定义好变量,定义好事务开始,结束,错误回滚然后在ADO.NET中正常调用存储过程的方法就行 ...