Gavin2020
Gavin2020
  • 发布:2021-11-05 10:35
  • 更新:2021-11-05 10:35
  • 阅读:321

给插件开发者的一些建议

分类:uni-app

最近遇到一个奇葩问题:

  1. 我在我的插件包里定义了一个变量,为自增内置版本号
  2. 第二次发布我进行修改此变量
  3. 自定义基座打包运行后,通过插件接口获取的变量值还是旧版本的变量
    不太理解这个一个变量而已,我改了就是改了,为什么还会显示旧版的变量值,目前已经连续打包很多次了,也确认此变量修改正确,而且在AS下跑uni项目是可以获取到正确的变量,但是在Hbuliderx下编译打包就不行,包括我后面修改插件中的任何文件都很容易出现问题。

下面是我开发自20年以来,所遇到并且目前都无法解决(官方无回复和解决方案)的问题、也是为了给新的插件开发者一些建议,可以少走弯路,如果有解决方案欢迎一起分享。

  • 第一点 不要把希望放在问答解答官方论坛毕竟2个月内3个问题都没有人解答 都是不了了之也没有解决方案(还是要靠自己)

  • 第二点 提醒大家选混合开发需要谨慎,不然bug一堆无法解决就尴尬了

  • 第三点 目前无论在AS还是Hbuliderx运行uni的项目,只要出现异常,均无法获取到有效的erro信息,基本as下报错就一行,无法定位问题,Hbuilderx压根就没有插件相关的报错,所以总结出现问题报错全靠《猜》。

  • 第四点 插件对assets下的文件兼容很不友好,重复命名报错、编译部分客户还反馈无法读取到assets下的文件,而且打包更新文件后经常因为缓存问题读取都是旧版本文件。

  • 第五点 插件自定义相机,长时间使用会很卡顿,原生目前没发现这类问题

  • 第六点 就是最近遇到的插件变量无法更新的问题。

  • 第七点 打包插件.jar文件问题,也是存在无法重复添加,也就是我两个插件无法同时存在.jar,就算你再原生添加了compileOnly引入你的.jar,两个插件同时存在也会报错,当然原生是会对这个也有这样的限制,但是原生至少有compileOnly修饰,换言之2个插件不允许有任何相同的资源文件存在,但是很多插件产品都是使用的一套.jar,.jar的目的就是功能模块化,目前也无解决方案,我这面解决方法: ① 同时存在只保留一个(但是这种不规范的配置很容易出现问题) ②修改.jar名称,这个方法需要重新修改插件中引入.jar的名称,重新打包。

  • 第八点 注意文档漏洞,简言之就是文档只能参考不能作为标准答案,直接复制粘贴很容易出现问题,尽量根据自己实际情况去配置插件

  • 第九点 调试次数问题,个人建议先在Hbuilderx中生成资源文件,然后在AS进行插件调试,因为Hbuilderx打包调试次数每天都有限制,用光了只能等第二天(除非你付费),很影响项目进度,但是AS下调试并不一定代表在Hbuilderx上面一定能跑通,鉴于以上一些问题的存在。

  • 第十点 插件冲突问题,这个问题由于之前遇到过apicloud(技术支持虽然谈不上好,但是相比之下至少有人回复帮你解决),由于遇到过这个问题,我也懒得在大海里捞针似的找这部分文档,直接在两个插件进行排查,冲突原则如下: ①两个插件包名不能重复,不管你是module还是其他代码 ②配置引入第三方的时候如果有一样的.jar尽量compileOnly引入其中一个 ③每一个文件命名都要和另一个插件的文件区分开,包括res下的所有文件 以上3点可能比较严格但是为了少走弯路,毕竟如果真的报错你是真的看不到erro,也很难确定原因,不过打包出错会有相应的提示

结语,以上是我在开发中遇到的一些主要问题,有大佬遇到过并且解决了,希望可以留下方案给小弟们,本人开发过RN、Flutter、Apicloud等插件,但是uni这个是我历时最长,问题最多的插件,原因如上了,有时候不怪开发者吐槽,这是确实存在的问题,至少对于插件开发的我来说,很不友好一个平台,至少对于刚刚开发这个插件的时候,文档还是旧版的,很多东西文档还没有呈现和说明(目前就不知道了),不过不得不说这种开发形式很新颖,也很好,只是做的确实很不友好,而且混合开发还是有很多限制,很多方面都无法满足需求,反正总体给我个人的感觉就是营销好、东西一般的平台。
个人感觉、不喜勿喷

2021-11-05 10:35 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复