一波三折的proguard

版权声明:版权声明 https://blog.csdn.net/duty_is_codeing/article/details/17412895

          话说,我昨天还用 自带的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 ... 

重新签名,打包!


           

     

         

            

  

猜你喜欢

转载自blog.csdn.net/duty_is_codeing/article/details/17412895
今日推荐