Android将library打包成jar包或者aar文件

  Android Library就是一个没有界面的应用程序,一般会把经常用到的应用层的逻辑抽出来放在Library中,或者把要作为第三方使用的代码写在Library中。

打成jar包

(1). 在Android Studio新建一个Library,然后编写需要的业务逻辑代码;
(2). 在这个Library的build.gradle文件中,加上如下的配置代码:

task makeJar(type:Copy){
    //删除项目中先前存在的已经打好的jar包(build/libs是接下来在into()中设置的jar生成目录,exampleSDK.jar是接下来的rename()中进行的重命名);
    delete 'build/libs/exampleSDK.jar'
    //设置拷贝的文件;
    from('build/intermediates/bundles/release/')
    //打好的jar包的存放位置;
    into('build/libs/')
    //使用include和exclude参数来设置过滤;
    include('classes.jar')
    //进行jar包的重命名;
    rename('classes.jar','exampleSDK.jar')
}
makeJar.dependsOn(build)

(3). 在Android Studio的终端窗口Terminal中,输入gradlew makeJar命令,然后回车等待jar包的生成。等到terminal窗口出现BUILD SUCCESSFUL,就代表打好了jar包了,就可以去build/libs目录下去查看jar包文件了;

  • 可能遇到的问题:

可能会遇到Execution failed for task ':xxx(library名字):lint'.
那么,就跟据报错下面的提示,在build.gradle文件的android{}中添加如下代码:

lintOptions{
    abortOnError false
}

就可以解决这个问题啦。

  • 小结:

  jar包中最好不要有静态资源文件,因为是访问不到的。如果要访问静态文件,需要利用java的反射机制,来获取添加依赖项目的静态资源。当然。如果我们的Library里面有动态库(用c写的so文件),也是访问不到的,这时候需要使用aar文件。

打成aar包

(1). 在Android Studio新建一个Library,然后编写需要的业务逻辑代码;
(2). 对Library执行Build--Rebuild,就可以在Library文件夹下的build--outputs--aar--xxx.aar(生成的aar文件)中找到aar文件了;

------------------------last line for now-----------------------