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'))
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