AS编写sdk并打成jar包供其它APP调用
来源:互联网 发布:linux cp强制复制 编辑:程序博客网 时间:2024/05/29 10:51
如果sdk中涉及res下面的资源注意package路径。
1. Android Studio后,结合gradle来配置生成jar 包。
gradle在构建的时候,会对各个module的class文件打包成classes.jar,并存放在build/bundles/release(或者debug) 目录下,所以其实我们可以直接将classes.jar拷贝出来,并重命名。这算是取巧,也是最便捷的方式,当然这类方法也可以用gradle 脚本来实现,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
然后在终端执行 gradlew makeJar 命令,就可以在bulid/libs 目录下生成对应的jar包。但这种打包方式经常会把一些冗余的文件一块打进jar ,不仅影响jar包的体积,还会经常导致com.android.dex.DexException: Multiple dex files define 此类的错误 。
这类的问题,我们在用到第三方提供的sdk 时,也会经常碰到,比如集成微博sdk时的这类 weibo sdk Multiple dex files define Lcom/sina/weibo/sdk/BuildConfig 问题
原因是sdk 的jar包中打入了BuildConfig.class,解决方法很简单:解包,删除里面的 BuildConfig.class,然后重新打包 jar。
具体如下:
1. 解压jar包:
jar xf xxx.jar
2. 删除解压后目录里面的//BuildConfig.class
3. 重新打包:
jar cvf xxx.jar *
当然我们不希望自己提供的jar 也给其他开发者带来同样的困扰,所以我们期待可以有选择性的选择需要打包的class,排除不需要的class ,如BuildConfig.class、R.class 等
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
通过上述脚本就可以实现选择性的打包,关于打包时的混淆配置等,感兴趣的朋友可以参考:
http://my.oschina.net/u/2531612/blog/591366?fromerr=Xd1Kd7dY
3个错误non-zero exit value 1; non-zero exit value 2; non-zero exit value 3(一下方法亲测好用)
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.Android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe'' finished with non-zero exit value 1
这个是因为依赖包重复了 (像v4和nineoldandroids),如图。app中实现了对easeUI的依赖,但是app和easeUI都添加了对这个包的依赖。所以就报这个错误,修改之后再报,就clean,rebuild一下
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe'' finished withnon-zero exit value 2
这个错误在app的build.gradle里面添加下面这句就好了。
android { defaultConfig { ... multiDexEnabled true }}
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe'' finished withnon-zero exit value 3
这个错误就在app.bulid里面加上这句,再rebuild ,之后再运行就行了。4g可以看电脑配置修改(2g,3g,6g,8g)。
dexOptions { javaMaxHeapSize "4g"}如图:
http://blog.csdn.net/edisonchang/article/details/51296265
- AS编写sdk并打成jar包供其它APP调用
- AS编写sdk并打成jar包供其它APP调用
- 如何将Activity打成jar包供第三方调用
- Android 将Activity打成jar包供第三方调用
- Android 将Activity打成jar包供第三方调用
- Android 将Activity打成jar包供第三方调用
- Android 将Activity打成jar包供第三方调用
- Android中将Activity打入jar包供其它app调用的实现方法
- Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- 关于Android将Activity打成jar包供第三方调用的解决方案
- 【转】Android将Activity打成jar包供第三方调用
- 自定义标签库并打成jar包
- java项目打成jar包,并执行
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- 求最长回文子串(不足:时间复杂度较高)
- 指针数组和数组指针的区别
- 关于如何在java中实现中文首字母索引排序的问题 2016-08-25 15:14 86人阅读 评论(0) 收藏 举报 分类: Java(19) 版权声明:本文为博主原创文章,未经博主允许不得转载
- 求两个数的最大公约数
- SQL的内连接与外连接
- AS编写sdk并打成jar包供其它APP调用
- [设计模式]1.观察者模式
- 配置好的自定义AlertDialog 拿来就用
- 如何实现一个自己的嵌入式语言y
- linux 中HTTP简单的框架
- 使用Greasemonkey修改指定页面的样式显示或执行脚本
- 最全面 Nginx 入门教程 + 常用配置解析
- 报表鼠标选中当前行变色
- 通向架构师的道路(第十天)之Axis2 Web Service(一)