定制开源库很多时候只是代码的开源,这次的要求是把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'
}
到此为止吧。