jar包和aar最简单的区别:
jar文件:
只包含class文件和清单文件,不包含资源文件,比如图片等所有的 res下的资源文件;
aar文件:
class以及res下的所有的资源文件全部包含;
一.将Library打包成jar包
1. 先拥有一个自己的 library包,不是自己的, 别人的也可以的
2.在library包中的build.gradle中配置相关文件
这是我配置的一大堆, 为了将libs下的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包, 如果没有就自动自动生成
AS如下图直接 双击assemble,会在bundles目录下面生成debug和release文件夹
4. 在Terminal执行指令gradlew makerJar
就可以生成重命名后的jar包
二. 将Libray打包成aar包
三.如何引入aar包
1.引入aar包
1.1 复制aar包到libs文件夹下
1.2 总目录下的 build.gradle 文件中添加 ↓
flatDir {
dirs 'libs'
}
如图:
1.3 app目录下的 build.gradle 添加aar引用
dependencies {
...
implementation(name: 'unityLibrary-release', ext: 'aar')//aar引用
}