Android将Library 打Jar包和aar包

jar包和aar最简单的区别:
jar文件:
只包含class文件和清单文件,不包含资源文件,比如图片等所有的 res下的资源文件;
aar文件:
class以及res下的所有的资源文件全部包含;

一.将Library打包成jar包

1. 先拥有一个自己的 library包,不是自己的, 别人的也可以的

Android将Library 打Jar包和aar包_第1张图片
确保是Libray

2.在library包中的build.gradle中配置相关文件

这是我配置的一大堆, 为了将libs下的jar包也打进去, 所必要的配置


Android将Library 打Jar包和aar包_第2张图片
我的library中有jar包
def SDK_BASENAME = "androidar";  //jar包命名
def SDK_VERSION = "V1.0";   //jar版本
def sdkDestinationPath = "build";  //jar打包后的存放路径

//打包release目录下的classes.jar(开启混淆后这个jar就是混淆的源码)- 注意由于as版本原因有点在default目录
//*********注意注意注意******
//Android studio 高版本的classes.jar 是在build/intermediates/packaged-classes/release下的
//旧版本是在: build/intermediates/bundles/release
def releaseJar = file('build/intermediates/packaged-classes/release/classes.jar')
//打包debug目录下的classes.jar
def debugJar = file('build/intermediates/packaged-classes/debug/classes.jar')
//将libs目录下打入jar包,根据自己的jar包自定义添加
def arcorecalsserJar = file('libs/arcore-classes.jar')
def easyarJar = file('libs/EasyAR.jar')
def unityclassJar = file('libs/unity-classes.jar')
//def saveimageJar = file('libs/saveimagelibrary-debug.aar') 这个aar打入是不成功的

//先检测是否存在相同的jar, 将其删除
task deleteBuild(type: Delete) {
    delete sdkDestinationPath + SDK_BASENAME + SDK_VERSION + ".jar"
}
// 执行jar操作
task makeJar(type: Jar) {
    from zipTree(releaseJar)
    // from zipTree(debugJar)
   //自定义的jar
    from zipTree(arcorecalsserJar)
    from zipTree(easyarJar)
    from zipTree(unityclassJar)
  // from zipTree(saveimageJar)

    baseName= SDK_BASENAME+SDK_VERSION
    destinationDir=file(sdkDestinationPath)
}
makeJar.dependsOn(deleteBuild,build)

3.如果找不到classes.jar,可自动生成

一定要确保 release目录下有classes.jar包, 如果没有就自动自动生成

Android将Library 打Jar包和aar包_第3张图片
image.png

AS如下图直接 双击assemble,会在bundles目录下面生成debug和release文件夹


Android将Library 打Jar包和aar包_第4张图片
image.png

4. 在Terminal执行指令gradlew makerJar就可以生成重命名后的jar包

二. 将Libray打包成aar包

Android将Library 打Jar包和aar包_第5张图片
image.png

三.如何引入aar包

1.引入aar包

1.1 复制aar包到libs文件夹下

Android将Library 打Jar包和aar包_第6张图片
image.png
1.2 总目录下的 build.gradle 文件中添加 ↓
flatDir {
 dirs 'libs'
}

如图:

Android将Library 打Jar包和aar包_第7张图片
image.png
1.3 app目录下的 build.gradle 添加aar引用
dependencies {
 ...
 implementation(name: 'unityLibrary-release', ext: 'aar')//aar引用

}

你可能感兴趣的:(Android将Library 打Jar包和aar包)