定制开源库之jar包和.so的引用

本文分享了在定制Android开源库时遇到的问题及解决方案,重点介绍了如何正确处理.so文件的引入,包括解决重复文件冲突及配置Gradle以确保项目能够正确编译和运行。

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

定制开源库很多时候只是代码的开源,这次的要求是把jar包和.so文件都放到库里,中间的过程还是有点曲折的。
首先我找到的是:
优雅的发布Android开源库(论JitPack的优越性)
本来我是按照这个的顺序来的,但是在第三步的时候就卡住了:
第 3 步: 给你的项目添加配置(重点)
在这里插入图片描述
但是

 apply plugin: 'com.github.dcendents.android-maven'  

 group='com.github.YourUsername'  根本就编译不过去

毫无头绪的时候求助百度,发现大家好像都没有这个步骤,那就不管他了,删除继续。最后流程走下来发现好像没什么问题(⊙o⊙)…

2、jar包和.so怎么办

jar包这个没什么问题,放到library的libs文件夹下,正常使用就可以了。
但是在.so的时候我遇到了问题,正常情况下,我们使用.so的时候都是新建一个jniLibs文件夹,然后按照分类放到它该有的文件夹里面,我也是这么来的,但是当我在gradle里引用的时候,我发现好像不可以啊,直接就是找不到。那我怎么能让它找到呢?
我们知道你的引入是编译到你的项目里的,在studio里是可以看到的:
在这里插入图片描述
你的代码和你引入的jar包在这里可以看到,但是.so的文件在这里是看不到的,那就很奇怪了。暂时还不懂,有懂的麻烦说一下

那怎么办?
瞎猫碰死耗子吧。。。
最后还真让我碰上了。
我们知道,对.so的引入还有一种方法,那就是放到libs文件夹下,然后就成功了。。。(⊙o⊙)…
没有一点点防备,还以为是错觉。
新建个项目,在gradle中引入,然后。。。当然没问题啊!!!
当我满心欢喜的要用到项目中的时候,竟然报错了:

More than one file was found with  lib/armeabi-v7a/******.so

但是我明明没有额外的.so啊,这是怎么回事。。。(⊙o⊙)…
万能的百度果然没有让我失望:

 packagingOptions {
        exclude 'lib/armeabi-v7a/******.so'
    }

这样就可以了吗?
哎呦,编译过去了,那安装一下。。。(⊙o⊙)…
直接崩了,告诉我说找不到.so,怎么办?
好吧,最后问题还是解决了,答案是这样的:

packagingOptions {
        pickFirst 'lib/armeabi-v7a/******.so'
    }

到此为止吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值