添加aar依赖库遇到的问题记录

一、将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或者其它。

















posted @ 2022-03-24 16:49  Prime_T  阅读(701)  评论(0编辑  收藏  举报