Afinal 混淆打包报错的解决方法

原创 2015年11月19日 14:27:12
纠结了好几天的问题.项目中导入了Afinal的jar包,在混淆打包的时候,一直报错.
org.eclipse.core.runtime.CoreException: Proguard returned with error code 1. See console
	at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:301)
	at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:305)
	at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:234)
	at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:219)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: Proguard Error 1

      You should check if you need to specify additional program jars. 
Warning: there were 81 unresolved references to classes or interfaces. 
         You may need to specify additional library jars (using '-libraryjars'). 
Error: Please correct the above warnings first.
	at com.android.ide.eclipse.adt.internal.build.BuildHelper.runProguard(BuildHelper.java:590)
	at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:265)
	... 4 more

为了找到根本原因,就把Afinal相关的资源删掉了, 打包,没有出现问题了.但是,把Afinal的资源添加上之后,打包又报错了.好吧,那就从混淆代码开始吧.

1.Afinal 的混淆操作.

-libraryjars libs/Afinal-0.3.4.jar 
-dontwarn net.tsz.afinal.** 
-keep class net.tsz.afinal.** { *; } 
-keep public class * extends net.tsz.afinal.**  
-keep public interface net.tsz.afinal.** {*;}
-keepattributes Signature
-keepattributes *Annotation* 

在proguard.cfg 添加上上面的内容,打包时,不混淆Afinal 的jar包.执行打包操作,结果仍然报错.


2.报错信息

org.eclipse.core.runtime.CoreException: Proguard returned with error code 1. See console
	at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:301)
	at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:305)
	at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:234)
	at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:219)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: Proguard Error 1

      You should check if you need to specify additional program jars. 
Warning: there were 81 unresolved references to classes or interfaces. 
         You may need to specify additional library jars (using '-libraryjars'). 
Error: Please correct the above warnings first.
	at com.android.ide.eclipse.adt.internal.build.BuildHelper.runProguard(BuildHelper.java:590)
	at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:265)
	... 4 more

3.找到问题

查看libs下面的jar包,比对proguard.cfg ,把没有添加的包,同样添加上Afinal的代码,打包时不混淆.

执行打包操作,结果仍然报错.


4.查看报错信息

Warning: com.android.util.CustomChartUtil: can't find referenced class org.achartengine.renderer.SimpleSeriesRenderer 
Warning: com.android.util.HttpClientHander: can't find referenced class org.apache.http.client.entity.GzipDecompressingEntity 
Warning: com.android.util.HttpClientHander: can't find referenced class org.apache.http.client.entity.GzipDecompressingEntity 
Warning: com.android.util.HttpClientTaskHander: can't find referenced class org.apache.http.client.entity.GzipDecompressingEntity 
Warning: com.android.util.HttpClientTaskHander: can't find referenced class org.apache.http.client.entity.GzipDecompressingEntity 


Warning: com.android.util.CustomChartUtil: can't find referenced class org.achartengine.renderer.XYMultipleSeriesRenderer 
Warning: com.android.util.CustomChartUtil: can't find referenced class org.achartengine.renderer.XYMultipleSeriesRenderer 
Warning: com.android.util.CustomChartUtil: can't find referenced class org.achartengine.renderer.XYMultipleSeriesRenderer 
Warning: com.android.util.CustomChartUtil: can't find referenced class org.achartengine.renderer.XYMultipleSeriesRenderer 
Warning: com.android.util.CustomChartUtil: can't find referenced class org.achartengine.renderer.XYMultipleSeriesRenderer 
Warning: com.android.util.CustomChartUtil: can't find referenced class org.achartengine.renderer.XYMultipleSeriesRenderer 

根据上面的信息,发现是找不到org.achartengine.renderer.** 文件和org.apache.http.** 文件,这样就简单了,查询可以知道,这两个类对应的是achartengine.jar和httpmime.jar.  拷贝这两个类,到项目中的libs下面.同样在proguard.cfg 中添加不混淆操作.


4.执行打包操作.

完美的打包出来了.反编译看一下,的的确确是被混淆了.


5.不解的地方


虽然是混淆成功,并打包成功了,但是,在项目中并没有用到achartengine.jar中的类文件.也算是遗留的问题了.


基于Afinal框架的更强大的xUtils的使用

今天在学习Afinal框架时,无意中看到了GitHub上的xUtils开源项目源码,对Afinal进行了大量重构,功能上也比Afinal更加强大,为方便学习,特将xUtils项目源码的使用方法转载至此...
  • zml_2015
  • zml_2015
  • 2016年03月05日 21:07
  • 2459

Afinal加载网络图片及下载文件使用方法

Afinal快速开发框架使用起来非常方便,下面将讲解如何利用Afinal加载网络图片及下载文件: 先看效果图: 注意:使用Afinal前需添加Afinal的jar,可以在这里下载:http://d...
  • baiyuliang2013
  • baiyuliang2013
  • 2014年05月08日 01:21
  • 5382

android 框架 Afinal 解析

目前Afinal主要有四大模块: FinalDB模块:android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。 FinalActivity模块:android中的i...
  • l331258747
  • l331258747
  • 2016年04月24日 18:16
  • 2334

Android 7.0适配 afinal报错

afinal android7.0报错
  • liuwenhan999
  • liuwenhan999
  • 2016年11月15日 18:34
  • 696

Android afinal注解的使用与实现

Java提供了4中注解,专门负责新注解的创建。 @Target 表示该注解可以用于什么地方,可选的ElementType参数有: CONSTRUCTOR:构造器的声明 FIELD:域声明(包括...
  • dong_xg
  • dong_xg
  • 2016年12月20日 18:04
  • 383

关于android混淆打包那些坑

项目上线,准备打包发布的时候,点开Build开始签名的时候,蛋疼的一个窗口弹出来了然而我又不想用第三方混淆工具,咋办呢?硬着头皮开始上吧!由于项目使用的是MVP(Retrofit+RxJava)架构,...
  • u011754975
  • u011754975
  • 2017年03月28日 11:15
  • 2369

快速开发框架Afinal的使用(数据库操作,HTTP请求,网络图片加载,控件绑定)

Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用;使用finalBitmap,无需...
  • u014722744
  • u014722744
  • 2014年09月27日 10:16
  • 1014

Afinal框架afinal.jar包的导入

在跟着学长做项目的过程中,看到
  • u010969985
  • u010969985
  • 2014年11月20日 14:31
  • 1239

AFinal-开源android应用框架简介

目录 官方网站 简介 什么是orm? 什么是ioc? 目前Afinal的四大模块 什么是ajax? 什么是LRU算法? FinalDB使用方法 FinalActivity使用方法 什么是java...
  • wenping1980
  • wenping1980
  • 2015年05月20日 23:06
  • 717

常见Android开源框架使用笔记之——afinal框架

培养自己的框架意识,我们从开源开始。
  • luzhenyuxfcy
  • luzhenyuxfcy
  • 2015年09月15日 15:01
  • 3354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Afinal 混淆打包报错的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)