话说,我昨天还用 自带的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 ...
重新签名,打包!