记录一个困扰了几天的一个蠢问题,发现真相的我又气又笑。
由于刚开始接触uniapp 移动端开发,有个需求需要使用uni.share API,但是我运行项目老提示打包时没配置share模块
我确实没在manifest内配置。网上搜了一些资料,但是我看官网有类似说高版本Hbuilderx编译器可以不用手动配置,会自动配置。而且我复制了一个同事的项目代码,看他调用的分享api没有配置share模块,但是还是能够分享(对我误导最严重的地方),所以我一直认为是我的项目代码有问题。
而在网上并没有搜到相关资料(这种蠢事可能就我遇到了)
所以我频繁测试到底是哪里出现了问题,最后发现同事项目运行时手机端调试基座并不是1.0.0,而是等于编译器的版本(官方说的高版本不用配置说的应该就是这个),而我多次测试发现,当基座版本等于编译器版本(我编译器版本3.9.9)时则调用share不会提示我没有配置模块,这让我更加确信是我的代码配置什么的有问题,但是就是不知道为什么我的就是1.0.0版本。
在一次频繁打包时我注意到我勾选使用标准基座运行时就是编译器版本,勾选自定义基座时就是1.0.0
这时我才发现我运行同事项目时一直自动勾选的标准基座,真相大白,就是勾选不一样导致的。
后面我查了下这两者的区别,有人说只有自定义基座能热更新,我测了一下两者都能热更新。
我发现除了打包出来的基座版本号不一样,使用自定义基座打包后unpackage/debug文件夹下多乐一个apk安装包。
我的猜测时使用标准基座运行项目时,运行的是unpackage/dist下面的打包文件,可免配置share,video等模块配置,适合测试的时候用。
而使用自定义基座运行相当于正式版apk,所以基座版本1.0.0,使用一些uni api时,需要手动配置相关模块。