一、将module打包成aar库
1.1、module的build.gradle文件
plugins {
//id 'com.android.application'//变更为下面代码
id 'com.android.library'
}
android {
......
defaultConfig {
//applicationId "********"//删除该代码
......
}
......
}
//下面代码是和android{......}同级。
def _BASENAME = "TestJar";
def _VERSION = "_V1.0";
def _DestinationPath = "build"; //生成jar包的位置
def zipFile = file('build/intermediates/intermediate-jars/release/classes.jar'); //待打包文件位置
task deleteBuild(type:Delete){
delete _DestinationPath + _BASENAME + _VERSION + ".jar"
}
task makeJar(type:Jar){
from zipTree(zipFile)
from fileTree(dir:'src/main',includes:['assets/**']) //将assets目录打入jar包
baseName = _BASENAME + _VERSION
destinationDir = file(_DestinationPath)
}
makeJar.dependsOn(deleteBuild, build)
1.2、在Android studio进行打包如下图,最终生成的aar文件位于项目路径\app\build\outputs\aar下,选用release版本就很好。
二、引用aar依赖库
1、添加依赖时报错:More than one file was found with OS independent path 'lib/x86/libc++_shared.so'
在module的build.gradle中添加
android{
........
packagingOptions {//加上这些代码 More than one file was found with OS independent path 'lib/x86/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/armeabi-v8a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
}
}
2、aar中如果有布局文件,如果aar布局文件的名跟主module中的布局文件重名,就会导致aar中引用该布局文件异常。
3、aar包中只有资源文件和class文件,所以aar中需要的第三方依赖,需要在主module中添加一遍。
4、AndroidManifest.xml合并出问题时android:tools="android:icon"应该添加在设置android:icon属性的地方,不管是application、activity、meta-data或者其它。