赞
踩
最近Android 打包项目module为 aar时,因为module引用了别的aar(A-aar),且A-aar 内包含SO,用原来方式打包module生成aar(B-aar)后,别的项目项目引用B-aar时,运行后发现没有A-aar 的相关内容,搜索后才知道module aar时,不会将其引用的aar打包进去。
修改module的 build.gradle 增加如下:
修改module的 build.gradle 增加如下
apply plugin: 'com.kezong.fat-aar'
module引用aar时使用embed
embed:合并AAR,将引入API对应的AAR工程合并到该module工程,打包成为一个全新的AAR; 依赖不具传导性,引入的API仅module可见。
embed (name:'aar名称',ext:'aar')
task copyAar(type: Copy) {
// 设置要复制的文件
from('libs') // 假设你的aar文件放在libs目录
into('build/outputs/aar') // 输出目录,可以自定义
include('**/*.aar')
}
// 执行打包任务前复制aar文件
tasks.whenTaskAdded { task ->
if (task.name == 'bundle') {
task.dependsOn copyAar
}
}
如果再运行本app时遇到
More than one file was found with OS independent path ‘lib/arm64-v8/xxxxx.so’:
解决此类问题,在app 的build.gradle android里增加下面内容,选择使用的so
packagingOptions {
pickFirst 'lib/arm64-v8a/XXXXXX.so'
pickFirst 'lib/armeabi-v7a/XXXXXX.so'
}
按以上步骤成功在别的项目成功引用了aar,且so都包含。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。