Android 将module中的jar、so包打包成jar或者aar文件
项目要求进行sdk开发,将项目打包成jar或aar包提供给第三方进行调用。
1.如果项目中集成其它的jar包,如高德定位的jar包等,你将项目打包成jar或者aar包时会发现没有里面没有高德的jar包;
2.如果你项目中集成了jni资源,里面有so包的,你可以将其打包aar文件。
一、将含有第三方jar资源的module打包成jar或者aar文件
1.新建module;
module作为项目中的模块,在建module之前要新建一个APP项目(简称项目A),然后在项目A上新建一个module B(简称模块B),选择Android library,如下图:
创建完成后项目目录架构如下图:
2.修改libraryb下的build.gradle文件
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 22
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
sourceSets {
main {
jni.srcDirs = []
// jniLibs.srcDirs = ['src/main/jniLibs']//设置目标的so存放路径
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
lintOptions {
abortOnError false
}
}
task makeJar(type: Jar){
//删除存在的
delete 'build/libs/newsdk.jar' //删除存在的
archivesBaseName = 'newsdk' //输出的jar包名称
//from(project.zipTree('build/intermediates/packaged-classes/release/classes.jar')) //旧的as版本打包后的jar在这个路径
from(project.zipTree('build/intermediates/aar_main_jar/release/classes.jar')) //比较新的AS版本打包后的jar在这个路径
from(project.zipTree('build/intermediates/packaged-classes/release/libs/AMap_Search_V7.1.0_20191030.jar')) //需要打包的第三方jar包
destinationDir = file('build/libs') //打成jar包后存放的文件目录
}
makeJar.dependsOn(build)
}
dependencies {
testImplementation 'junit:junit:4.12'
implementation files('libs/AMap_Search_V7.1.0_20191030.jar')
}
有第三方jar引用的,先引用第三方jar包,然后在模块B 的build.gradle中添加下面这个
要注意改一下jar包名称。
3、将模块B打包成jar或者aar包
点开Gradle→libraryb→order→makejar,双击makejar开始编译打包,如下图:
makejar成功后会在build中生成相对应的文件,如下图:
4、查看是否成功把第三方jar打包到自己的jar和aar文件中
要查看jar或者aar包是否有第三方jar包,可以jar或者aar文件后缀改为.zip,然后解压缩就可以里面的第三方jar包的东西,如下图:
二、将so包打包到aar文件中
1、在模块下添加jinLibs目录,将so包放进去,如下图:
2、双击makejar进行编译打包
编译成功后,拿出对应的aar文件修改后缀名为.zip解压后可以看到对饮的so包已经存在aar文件中,如下图:
到这里就完成了
项目GitHub地址为https://github.com/HaiTaoFeng/TestA