jar通用eclipse ,android studio都可以
aar专一,现在来看只有android studio
如果不考虑安装包的大小话,推荐使用aar,方便快捷
如果考虑安装的大小,自定义性、通用性更强的jar。
下面是我参考的jar(最终放弃使用)和aar使用的过程,如果选择aar,前面直接跳过
参考文档:
Gradle实践之自定义打包jar+Log开关自动关闭:http://ju.outofmemory.cn/entry/216930
android studio中生成对应通用jar包
gradle 中的脚本
在module的bulid.gradle中添加如下task
task releaseMyLib(type: Copy, dependsOn: ['build']) {
from( 'build/intermediates/bundles/release/')
into( 'build/libs')
include('classes.jar')
rename('classes.jar', 'my-lib.jar')
}该方法实现了生成的jar文件的重命名和copy工作
再在android studio中的terminal中执行如下
cd “**** 你的module目录,即module名称 *******”
gradle releaseMyLib ****** 执行刚才在build.gradle中的task
:方法二(有一定的自定义成分,讲需要的不需要的区分对待,减少jar的大小)
稍微复杂自定义试的方式二
这个直接用工程bulid来的jar有一些用不上的东西也一并打包到了对应的jar中了,下面是一个更加自定义的方法,去拿到对应的,子对工程有用的编译.class文件到jar中。
task jarMyLib(type: Jar, dependsOn: ['build']) {
archiveName = 'my-lib.jar'
from('build/intermediates/classes/release')
destinationDir = file('build/libs')
exclude('com/nought/hellolib/BuildConfig.class')
exclude('com/nought/hellolib/BuildConfig\$*.class')
exclude('**/R.class')
exclude('**/R\$*.class')
include('com/nought/hellolib/*.class')
}
运行代码(运行原理同上)
cd hellolib
gradle jarMyLib
如果输入gradle 提示“command not found”
这样写就ok拉,注意你的gradle版本号
如果不知道可以输入
“ find / -name 'gradle*' ”查看一下,可能查出一堆,注意跟我的目录一致的一个文件名
/Applications/Android\ Studio.app/Contents/gradle/gradle-2.10/bin/gradle releaseMyLib
查看对应的目录,哈哈那个jar真的就在哪里,可以很方便的使用,如果有改动,在原地方修改,然后将其他的jar替换,暂时就用这个笨办法了,可能有更好的,我暂时不知道
不晓得你会不会有在命令行中输入:gradle 说command not found,这样我就又参考了第二篇博文,注意一点,修改完.bash_profile文件后一定要关闭当前terminal然后重新开启一个terminal来测试gradle是否配置完成
方法如下(mac os):
1.打开终端
2.输入:vim ~/.bash_profile
3.进入编辑模式
4.在文本末尾添加如下信息
export GRADLE_HOME=/Applications/Android\ Studio.app/Contents/gradle/gradle-2.8
export PATH=${PATH}:${GRADLE_HOME}/bin
5.退出编辑模式,输入:wq退出
关闭terminal重启terminal
6.输入:gradle -v显示如下信息,表明环境变量配置成功
好啦再回头去生成jar文件,
东西不多,日积月累!
上面做了这么多,感觉好累,马上使用上面生成的jar文件,问题又来了,好像module中libs文件并没有包含到里面,果断又是上网搜索一通,这个过程就不多说了,如果你真是一根筋,那我也不拦着,至此我已经对jar绝望了
其实aar是专门为android 设计,现在android studio已经流行起来了,使用最新的技术,何乐而不为呢果断用起来
当然也是在原来的module中的build目录中去直接copy相应的aar文件到需要使用该module的工程libs目录中,其中注意一点就是libs目录实在工程目录的子目录上(这是我踩了的坑,请注意跳过,不然会使得libs目录中的aar文件找不到)
第一步:将aar文件copy到libs目录
第二步:在build.gradle中添加对应的代码
repositories {
flatDir {
dirs
'libs'
}
}
compile(name: 'xxx', ext: 'aar')
。
}
第三步:rebuild工程,如果能在build目录中找到对应的生成文件,说明成功了,