生成JAR
为自己快速写博客开发的yami程序初稿基本完成了。需要打成jar通过命令行快速调用。具体可看Readme。
项目地址: https://github.com/lihongzheshuai/yami
搜了一下Gradle 打包executable jar的方法,确实如一个文章里所说,网上都会提到一个plugin,但是他试了却不好用,他好奇到底是谁转载谁的。
其实我也先试用了那个plugin,抱歉名字我记不住了,在那个plugin的主页上推荐了另外一个plugin:capsule
主页地址: https://github.com/danthegoodman/gradle-capsule-plugin
配置方式很简单,对于gradle 2.1后的版本,只需要在build脚本开通添加:
plugins { id “us.kirchmeier.capsule” version “1.0.2” }
老版本的话:
buildscript { repositories { maven { url “https://plugins.gradle.org/m2/” } } dependencies { classpath “us.kirchmeier:gradle-capsule-plugin:1.0.0” } }
apply plugin: “us.kirchmeier.capsule”
然后定义一个Task即可:
task simpleCapsule(type: FatCapsule){ applicationClass ‘com.foo.SimpleCalculator
baseName ‘SimpleCalculator’ }
最后通过执行simpleCapsule Task即可打出可执行的Jar。
http://www.jb51.net/article/121302.htm
生成AAR
只有module为Libray的才能生成AAR(Android Archives)
library module:
app module:
步骤:
Make完成后,在&{library module}/build/outputs/aar目录下会生成aar
如何引用AAR
项目根目录下的build.gradle中添加
allprojects { repositories { jcenter() maven { url 'http://maven.oschina.net/content/groups/public/' } flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } maven { url 'https://maven.google.com' } } //skip Test tasks gradle.taskGraph.whenReady { tasks.each { task -> if (task.name.contains("Test")) { task.enabled = false } } } }
module的build中引用方式compile (name;'aar name', ext:'aar')
发布一个AAR的注意事项
•修改Module(也就是生成aar的工程,我的是paysdk)里面的代码的时候,重新编译好之后,需要把引用aar项目当中的aar文件删掉,并且也需要删除掉build--intermediates--exploded-aar--paysdk,完了在重新同步
•避免创建内部接口
因为当你发布aar时, 内部的接口在混淆后会独立成一个外部的接口Outer$InnerInterface.
•使用maven发布需要将所有依赖都发布到maven上
如果你发布多个aar, 每个aar互相依赖, 那么你需要将这些依赖都以maven的形式定义, 否则会在编译时, maven解析某个aar的pom时会报空指针异常.
maven的形式定义:
apply plugin: 'maven'
compile 'com.nineoldandroids:library:2.4.0+'
•res内定义的属性或者名称, 都应当加上前缀
你的aar里定义资源文件是很正常的事, 资源文件很有可能和别人的资源重名, 而悲剧的是, 别人很有可能是引用了另外一个aar导致与你重名. 他无法修改那个aar的资源名, 就像他不能修改你的aar资源名一样. 为了避免这种尴尬, 最好在定义的资源程前加上一个前缀, 比如你的模块简写,商标简写等等. 避免冲突, 还能打个广告, 何乐而不为.
•如果aar中也引用了第三方的lib,那么打包后的aar中是没有把这些三方库加入到aar中的,这样就需要在app中除了引用.aar外还要引用其中需要的其他第三方库。
没有帐号? 立即注册