您的位置:首页 > 移动开发 > Android开发

在android studio中将某个module生成jar包,觉得还是直接用aar好

2016-06-21 13:28 501 查看
jar通用eclipse ,android studio都可以

aar专一,现在来看只有android studio

如果不考虑安装包的大小话,推荐使用aar,方便快捷

如果考虑安装的大小,自定义性、通用性更强的jar。

下面是我参考的jar(最终放弃使用)和aar使用的过程,如果选择aar,前面直接跳过

参考文档:


Gradle实践之自定义打包jar+Log开关自动关闭:http://ju.outofmemory.cn/entry/216930

    Mac OS环境变量配置(Android
Studio之Gradle):http://www.cnblogs.com/sytfyf/p/5120303.html

   上一篇文章中提到了module的依赖,马上问题又来了,这样的依赖能够方便的进行修改,但是如果其他工程也想使用这个module中功能,去添加对应的依赖会变得复杂,并且不方便管理,所以就有了今天要说的事情,讲module生成对应的jar包,
    gradle在bulid的时候其实已经在build目录下生成了对应的编译文件生成的对应的jar、aar、.class文件,你只需要对应的copy出来就好了,这也是参考文献第一篇所讲述的内容:
大致有两种情况:

法一(完全使用原有bulid生成的jar、arr,直接导出)

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中添加对应的代码

  dependences{

    compile(name: 'xxx', ext: 'aar')


  }

第三步:rebuild工程,如果能在build目录中找到对应的生成文件,说明成功了,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: