Android Studio 轻松打jar 包
来源:互联网 发布:内网访问阿里云 编辑:程序博客网 时间:2024/06/06 05:23
转载请标明出处:http://blog.csdn.net/edisonchang/article/details/51296265
有过和第三方开发者或者其他部门合作的经历,提供一个jar包sdk是一件很平常的事。Eclipse 有图形界面和向导供开发者将一个项目导出为jar包,相对来讲是比较简单的,切换到Android Studio后,则需要结合gradle来配置生成jar 包。
文章的内容比较简单,也是趁着今天下雨不能外出,简单把gradle 打包的流程做个小结。
gradle在构建的时候,会对各个module的class文件打包成classes.jar,并存放在build/bundles/release(或者debug) 目录下,所以其实我们可以直接将classes.jar拷贝出来,并重命名。这算是取巧,也是最便捷的方式,当然这类方法也可以用gradle 脚本来实现,
task makeJar(type: Copy) { from('build/intermediates/bundles/release/') into('build/libs/') include('classes.jar') rename ('classes.jar', 'sdk.jar')}makeJar.dependsOn(build)
然后在终端执行 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 等
task makeJar(type: Jar) { from file('build/intermediates/classes/release') archiveName = 'sdk.jar' destinationDir = file('build/libs') //过滤不需要的class exclude "**/**/BuildConfig.class" exclude "**/**/BuildConfig\$*.class" exclude "**/R.class" exclude "**/R\$*.class" //指定打包的class include "com/test/**/*.class"}makeJar.dependsOn(build)
通过上述脚本就可以实现选择性的打包,关于打包时的混淆配置等,感兴趣的朋友可以参考:
http://my.oschina.net/u/2531612/blog/591366?fromerr=Xd1Kd7dY
到这里就介绍完了,欢迎大家指正。
- Android Studio 轻松打jar 包
- Android studio 打jar包
- Android studio 打jar包
- Android Studio 打jar包
- Android Studio 打JAR包
- Android Studio 打JAR包
- android studio 打jar包
- Android Studio 打JAR包
- Android studio打jar包
- Android Studio 打jar包
- Android Studio打JAR包
- Android studio打jar包
- android studio:打jar包、apk包
- Android Studio 如何打JAR包
- Android Studio中如何打JAR包
- Android studio 如何打jar包
- Android Studio 如何打JAR包
- Android Studio 如何打JAR包
- android studio将代码关联到git@osc(出现 Empty repository,以及push reject解决)
- 1017. A除以B (20)----string的额外操作
- 操作基本数据类型的流
- scrollview嵌套listview
- nyoj1062
- Android Studio 轻松打jar 包
- UVa 1594 Ducci Sequence
- Ubuntu16.04 用root身份登陆
- 内存操作流(处理临时信息)
- C#设计模式学习笔记(一) 之 简单工厂模式
- Android官方开发文档Training系列课程中文版:打印内容之图像打印
- 打印流的使用
- 【杭电oj】1556 - Color the ball(区间更新)
- N-01. 网线连接登录 ❀ 网康 (NETENTSEC) 防火墙