AS 3.1 项目打包成jar或aar

 

1.首先明白一个道理。

  Android Studio编译的时候会自动将项目生成jar和aar的,我一开始觉得jar须要本身单独生成,其实AS已经自动生成了,网上找的不少资料都是一个复制的过程而已。html

  只不过在AS3.1之前是放到build/intermediates/bundles文件夹里面。android

  然而如今换成了build\intermediates/packaged-calsses文件夹里面了,之后也不知道会放哪儿了,这是一坑。windows

 

2.一般第一步都是一个新建一个module。

  若是直接从已经完成的项目出发,能够直接修改build.gradle第一行,改为apply plugin:'com.android.library';app

  可是这么一修改,可能会出现不少错误,什么参数错误,什么资源文件有问题等。gradle

  保险起见,从“0”开始。ui

  新建一个module,注意选择Android Library类型。spa

  把一些须要打包的文件通通写到这个library里面,若是有什么错误的话,就一个一个去解决吧。命令行

  将module完善以后,就开始打包了。debug

 

3.在module的build.gradle配置生成jar的方案。

  在文末添加以下代码:3d

//修改jar名字+将指定jar生成的地方
task makeJar(type:Copy){
    //若是以前存在,则先删除
    delete 'build/libs/test.jar'
    //设置拷贝的文件
    from('build/intermediates/packaged-classes/debug/')
    //生成jar包后的文件目录位置
    into('build/libs/')
    //include,exclude参数来设置过滤
    include('classes.jar')
    //重命名
    rename('classes.jar','test.jar')
}

makeJar.dependsOn(build)

  

4.利用命令行执行该方案。

  在AS最下方的Terminal中输入命令便可。

  若是是MAC电脑:./gradlew makeJar 

          若是报错,参考一下这篇文章。

  若是是Windows电脑: gradlew makeJar

          若是报错,通常都是没有配置gradle环境,谷歌一下解决方案呗。

  幸运的话,能够在build/libs文件夹下看到生成的jar文件了。

 

5.简单理解一下jar和aar的区别吧。

  参考文章:AndroidStudio项目打包成jar。

  在Build Success后,在module的build/outputs/aar文件夹下会有一个aar文件。

  在module的build/libs或本身定义的其余位置下会有一个jar文件。

  两者区别:

  jar:  只包含了class文件与清单文件 ,不包含资源文件,如图片等全部res中的文件。

  aar:  包含jar包和资源文件,如图片等全部res中的文件。

  aar编译完就自动生成了,因此不一样担忧资源问题。

 

6.如何使用aar文件。

  很简单。

  i.将aar文件拷贝至目标项目的app/libs文件夹下。

  ii.在app下的build.gradle中添加以下代码:    

    分别是这两块:  

repositories{
        flatDir{
            dirs 'libs'
        }
    }
implementation(name:'librarydemo-release',ext:'aar')

  Sync Now一下,若是没有报错,应该就是成功引用了。

  看一下依赖的外部类,已经有了刚才咱们引用的library了。

  

 

7.如何引用jar文件。

  这个网上搜一大把。方法也是相似的,更加简单。

  先将jar拷贝至目标项目的app/libs文件夹下。

  mac电脑操做以下:右键->add as library->选择当前mudule->OK.

  windows电脑相似的。

 

8.其实jar文件也是可使用资源文件的。

  稍微有点麻烦。

  首先将jar包中用到的资源文件放到本身的项目中。

  而后在本身的项目中利用反射获取。参考文章点我。

相关文章
相关标签/搜索