赞
踩
项目中 uni-app 需要引入安卓java这边原生的插件,在调试过程中,HbuilderX 要求使用自定义基座 才能进行本地运行调试。
之前没有过 原生插件引入的经验,此次遇到的坑如下:
首先,HX生成自定义基座的路径:
运行->运行到手机或模拟器->制作自定义调试基座,界面中使用默认的设置,点击打包,根据提示点击继续打包即可,然后控制台会提示当前排队进度,等待云打包进度即可。
(自定义基座只需要生成成功一次即可,后续原生插件有改动的话,只需要替换uni-app项目中nativeplugins 目录下的对应插件文件即可)
等待打包结束,结果报错:
根据提示的错误日志,查看日志发现如下信息:
看日志意思就是多个依赖包中 都有 相同的 class ,导致冲突。这种情况,一般是原生插件中引入的 多个 java 包中存在了相同的 package 造成的。
那么我排查项目中 build.gradle 的依赖关系,发现:
- implementation 'cn.yipianfengye.android:zxing-library:2.1'
- implementation 'com.google.zxing:core:3.5.0'
上述两个依赖下,其中 cn.yipianfengye.android:zxing-library:2.1 中也有引入 com.google.zxing,导致后面的 com.google.zxing 就重复了,最终导致冲突,编译失败,打包失败。
解决方案:
(1)第一种,显示指定排除 com.google.zxing
在引入 cn.yipianfengye.android:zxing-library:2.1 的时候,显示指定排除 com.google.zxing,即如下方式引入依赖:
- implementation('cn.yipianfengye.android:zxing-library:2.1'){
- //添加,把重复的引用依赖去除掉
- exclude group: 'com.google.zxing'
- }
- implementation 'com.google.zxing:core:3.5.0'
重新编译原生的插件,并更新 aar 文件到 uni-app 项目中对应的插件目录下,最后重新走一遍自定义调试基座的打包流程。
(2)第二种,删除 implementation 'com.google.zxing:core:3.5.0'
既然重复引用依赖了,那么使用一个不就好了。Android Studio 打开原来的java插件项目,全局搜索一下 com.google.zxing,查看所有文件中 import 的包,是否在 cn.yipianfengye.android:zxing-library:2.1 下 的 com.google.zxing 都能找到。 一般情况是都能找到的,因为就是同一个库。这里以防万一,所以全局搜索看一下确定一下。最后直接删除 build.gradle 中 implementation 'com.google.zxing:core:3.5.0' 这一行,然后重新编译原生的插件,并更新 aar 文件到 uni-app 项目中对应的插件目录下,最后重新走一遍自定义调试基座的打包流程。搞定!
特别注意:如果引用的依赖包中,来源很多路径,那么一定要在 build.gradle(:app) 中添加如下
- // 跟 Android 配置节点同级
- repositories {
- flatDir {
- dirs 'libs'
- }
- google()
- mavenCentral()
- maven { url "https://jitpack.io" }
- maven { url "https://maven.rongcloud.cn/repository/maven-releases/" }
- jcenter()
- }
否则可能出现 HbuilderX 在打包过程中下载不了项目中引用的部分包,错误类似如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。