前言
起因:项目中含有视频播放功能,使用的是GSYVideoPlayer,因为公司网络问题经常依赖添加不了,所以将关于它的aar包全部下载下来直接本地依赖。
因为多个业务都可能涉及视频播放功能,为了复用,就想着将视频播放的功能提取出来,通过
File-New Module-Androi Library
创建了视频module,并在该module内,将aar包放入lib里,添加了依赖,在该module里面写了相关的业务,编译都没问题,但是一次Rebuild 项目时,报了如题目所示的错误,打包出的release版本也会报错。
解决步骤
如前言所说,我要依赖GSYVideoPlayer的aar包,有下面几个
GSYIjkJava-1.0.0.aar
gsyvideoplayer-androidvideocache-v8.1.7-release-jitpack.aar
gsyVideoPlayer-arm64-v8.1.7-release-jitpack.aar
gsyVideoPlayer-base-v8.1.7-release-jitpack.aar
gsyVideoPlayer-java-v8.1.7-release-jitpack.aar
1、 在项目的根目录下创建文件夹,File-New-Directory,为了方便记忆,我分别为上面的aar包建立名为testlib1、testlib2、testlib3、testlib4、testlib5的文件夹,
2、 在每个文件夹下创建文件,New-File,并将其命名为build.gradle
3、 在build文件内填写如下内容
例如testlib1内填写
configurations.maybeCreate("default")
artifacts.add("default", file('GSYIjkJava-1.0.0.aar'))
testlib2内填写
configurations.maybeCreate("default")
artifacts.add("default", file('gsyvideoplayer-androidvideocache-v8.1.7-release-jitpack.aar'))
后面的以此类推。这个default只是个名字,可以随意填写
4、 在项目的settings.gradle
将新建的这几个文件夹设为lib
include ':testlib1'
include ':testlib2'
include ':testlib3'
include ':testlib4'
include ':testlib5'
5、 在你想使用这些本地aar包的module内,添加依赖即可,添加方式如下
api project(path: ':testlib1', configuration: 'default')
api project(path: ':testlib2', configuration: 'default')
api project(path: ':testlib3', configuration: 'default')
api project(path: ':testlib4', configuration: 'default')
api project(path: ':testlib5', configuration: 'default')
因为业务关系,该依赖包内的内容需要被多个业务module使用,如果每个module都依赖一遍太麻烦,所以我使用api
方式,这样每个业务模块依赖该视频模块即可使用这些aar包。
注意事项
-
一开始会觉得麻烦,因为你多个依赖都得创建lib,想着在一个lib内的build文件,写多个aar包的配置行不行,实际验证是不可行的。一个lib的build文件只能写一个aar包,不能写多个,以下方式是错误✖的!!!
configurations.maybeCreate("default") artifacts.add("default", file('GSYIjkJava-1.0.0.aar')) configurations.maybeCreate("default2") artifacts.add("default2", file('gsyvideoplayer-androidvideocache-v8.1.7-release-jitpack.aar'))
吐槽一下:
快半年没写文章了,今天解决问题时看了好多,看到这个真得来气,一个文章要关注才能看,问问题不直接回答还让私信,谁知道要搞啥,就是这些人搞的技术圈子乌烟瘴气,让写文章的人越来越不愿意分享,所以愤怒的写下这篇记录。想挣外快就写项目卖去,别整这些!!!