一波三折的proguard

          话说,我昨天还用 自带的proguard 签名了之前做的app,遇到了提示waring  说can't find superclass or interface

   没找到 父类和接口 查了下原来是第三方jar里面加了一个demo 的main方法 和swing的接口调用,     这个都是基于jdk的,

当时就怒了。 

然后在proguard-android.txt  文件后面加上一句

-keep class packagename.**.**{*;} 保持指定包的代码结构 不作处理

-dontwarn  packagename.** 取消报警


今天要打包现在进行的项目

Note: there were 4 duplicate class definitions. 
Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser 
Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser 
Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser 
Warning: library class android.content.Intent depends on program class org.xmlpull.v1.XmlPullParser 
Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser 
Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser 
Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser 
Warning: library class android.graphics.drawable.BitmapDrawable depends on program class org.xmlpull.v1.XmlPullParser 
      You should check if you need to specify additional program jars. 
Warning: there were 8 instances of library classes depending on program classes. 
         You must avoid such dependencies, since the program classes will 
         be processed, while the library classes will remain unchanged. 
java.io.IOException: Please correct the above warnings first. 
        at proguard.Initializer.execute(Initializer.java:308) 
        at proguard.ProGuard.initialize(ProGuard.java:210) 
        at proguard.ProGuard.execute(ProGuard.java:85) 
        at proguard.ProGuard.main(ProGuard.java:499)

在调用org.xmlpull.v1.XmlPullParser 的时候

there were 4 duplicate class definitions.  出现四处重复定义

原来导入的soap包 ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar 和android.jar里面的类定义冲突

在打包的时候出错

然后在proguard-project.txt 后面添加

-libraryjars  libs/ksoap2-android-assembly-3.1.0-jar-with-dependencies.jar 第三方导入包配置

-dontwarn  org.kobjects.**.**{*;}  忽略警告 

然后重新打包

proguard成功

在project中会产生一个proguard的文件,如下图:



将打好的包放到真机上安装运行。

fuck 了,

出现了java.lang.NoClassDefFoundError错误,如下图


仔细查看了下出现异常的地方原来是在通过java 方法调用so的时候出错。

在网上查了下,要把java调用so那部分公开出来

-keep public class ...

删除project 里的proguard 文件

在proguard-project.txt 添加-keep public class ... 

重新签名,打包!


           

     

         

            

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值