Android 项目改为Library 提示 so文件 没有导入问题

本文探讨了如何将Android项目转化为Library并解决aar文件中的SO库无法被宿主应用获取的问题。关键在于理解api和implementation的区别,以及在Library和宿主项目中正确配置NDK的abiFilters。确保NDK的CPU架构一致,才能使宿主项目成功引用Library中的SO文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将 Android 项目改为Library 提示 so文件 没有导入

问题
  1. library 和宿主怎么共用第三方库
  2. (library)aar 文件中的so 文件宿主app 获取不到
解决方法
library 和宿主怎么共用第三方库

导入第三方jar 的方式

api 'com.github.bumptech.glide:glide:3.8.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
compile 'com.github.bumptech.glide:glide:3.8.0'

之前我们一直使用的是 compile (android studio 3.0之后) 使用 api和implementation 导入库

api 和 compile 是一样的

implementation 只对本module有作用, api是对引用他的module 和宿主的module 都可以使用

(library)aar 文件中的so 文件宿主app 获取不到

一个完整的项目 可以被修改为一个library , 一个library 可以打包为aar 文件, 可以导入其他项目中使用

library 的修该方式 最简单的就是 创建一个library项目, 将自己的项目代码移过来, 或者参考library 的builde 文件修改

aar 文件 和jar文件的区别 在于 jar 文件中 只有 java 代码, aar 文件中不只有java 代码也包括 资源文件 so 文件等

宿主项目获取不到library 中的so文件 是因为 需要指定 ndk CPU架构 主 项目需要和Library 配置的一致,否则 在使用到 是so文件的时候就会报 没有导入 so中方法的错误

 ndk {abiFilters 'armeabi-v7a'/*, 'x86' ,'armeabi', 'armeabi-v7a', 'arm64-v8a'*/}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值