先说结果,最终的解决方案还是把远程所有用到的依赖挨个下载下来放到libs中,一个个依赖,最后才解决了问题,
背景,近些天我大学哥们找我对接个SDK,并且封装成一个插件,uni-app的插件,具体有官方文档有资源
uni-app官方插件文档,开发指南
按照文档我们把这个SDK下载下来,打开as,一通乱搞,首先是远程依赖的方式尝试先把SDK对接上来,然后在考虑本地依赖的方法。
根目录gradle下配置maven路径:
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven {
url "http://---------------:8081/nexus/content/groups/public"
}
}
}
以上是一个maven私服的路径,具体就不贴出了,并不在公有的服务器上,也不做jcenter上,让他们把这些个发布到jcenter也不行,
// implementation("com.iwangzha:novel:2.3.0"){
// exclude group: "com.miit.sdk"
// transitive = true
// }
远程依赖,这里的属性transitive必须设置为true,这样才会有依赖传递,这里有一个miit的包跟我项目冲突了,需要去掉。
其次要注意的其他两个地方,一个是在APP的gradle下添加指定编译使用java-1.8的版本,第二是给这个module的manifest文件的application添加一个
@style/Theme.AppCompat.Light.NoActionBar
当然这是因为SDK里面的webactivity需要这个主题才能运行,并且要把官方给的demo里面的
APPcompat-v7包由原来的的complieOnly改为implementation,否则是无法使用这个主题的,关于complieonly和implementation的区别:
不用这个主题就报错
现在我们用远程依赖的方式,使用uni-app官方提供的as的demo,对接我们的SDK,就可以打开我们的小说页面了,看个效果
但是到这里,你把module通过右边gradle下面的mudule下面other(或者builder)下面的assembleRelease的方式打包生成的aar是不会把它打包进去的,那么怎么办呢,百思不得姐,
谷歌百度一番后:
buildscript {
dependencies {
classpath fileTree(include: ['*.jar'], dir: 'lib')
}
}
说把这个添加到module的gradle中就可以打包里面的jar文件了,可是远程依赖依然还是没有打包进去,
无奈只能打开maven的链接。
如你所见我找到了这个最终依赖的aar文件,下载下来,依赖进去,重心运行,oh,no,程序崩溃。
再次打开这里的pom文件。
看到了一大推的依赖,这些依赖是在你远程依赖的时候就会根据这些名称去找相关的包下载下来依赖进去,意思是我要把这些包一个一个的下载下来放到libs中??
绝望啊,没办法下载咯,在观察了一阵子后最终 前面的三个系统的依赖包我们是不需要下载的,主要是这个dksdk和thirdapp以及miit需要下载下来,glide的话原本的demo就已经依赖了,我们不需要再次依赖,gson的jar去github上找到他,点击maven仓库,可以浏览到所有的版本,我们下载一个2.8.5的版本放到本地,就这样我们把原本一个aar所依赖的东西全部下载到本地去依赖,这样就ok了。
从上往下共5个,第五个是我打包module生成的aar文件,也就是我们插件的aar文件,待会我们在Hbuilder里面用的也是这个文件,关于官方打包的注意事项呢,uni-app是这样说的
所以,我们就这样放在Android目录下,楼主就在这里踩了个坑,把aar一并放在了libs目录下,导致打包出来的基座根本运行不了,所以很无奈。还有不支持Androidx,我一开始项目用的就是Androidx,后来搞了好久,最后又换回来v4v7包实现,贼恶心的,
这句话,如果你的依赖包是jcenter或者uni-app支持的maven路径,那么是可以不需要下载的,楼主这种情况是依赖库在私服的,uni-app不支持配置私服的路径 的,有人说那我把依赖库下载下来,然后自己创建一个项目发布到maven仓库,同步到jcenter不就好了吗?这样也是可以的,只是这样理论上可行,但是依然会有很多问题,不大建议(我也是试过的),
然后就是点击Hbuilderx的运行,制作自定义基座,选择自己的插件,云打包为自定义基座,安装到手机上调试,能打开页面就ok了
到这里就差不多结束了,
自己在wxmodule定义个方法,Hbuilder里面通过插件调用一下,然后打开最终的小说页面,就这样完成了。
吐槽一下uni-app云打包这个,每天只能使用有限的次数,为了调试这个我换了三个账号了,,,,,,,!!!!!!!!!!!