HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

SDK 3.6.4 ios 离线打包提示:当前自定义基座的SDK与HBuilderX自带的基座SDK版本不一致

uniapp离线打包

xcode 工程修改调试的 target 名字为 HBuilder ,再编译就可以了。

至于新版 SDK 为什么这样限定,就不清楚原因了,到底是无意中引入的BUG,还是有意做的限定,只能官方解释了。

uapp-ios 工程中,我同步做了修改,可以参考:

https://github.com/uappkit/uapp-ios

继续阅读 »

xcode 工程修改调试的 target 名字为 HBuilder ,再编译就可以了。

至于新版 SDK 为什么这样限定,就不清楚原因了,到底是无意中引入的BUG,还是有意做的限定,只能官方解释了。

uapp-ios 工程中,我同步做了修改,可以参考:

https://github.com/uappkit/uapp-ios

收起阅读 »

SDK 3.6.4 android离线打包提示:同步资源失败,未得到同步资源的授权

离线打包 App离线打包

最近 uapp-android 离线工程升级 SDK 时,LOG输出窗口提示:同步资源失败,未得到同步资源的授权。

没法打印 console.log 信息,也没法同步资源。

经过搜索,可以通过添加:

    implementation 'com.squareup.okhttp3:okhttp:3.12.12'  
    implementation 'com.squareup.okio:okio:1.15.0'

我已经在 uapp-android 工程中更新,参考代码:

https://github.com/uappkit/uapp-android/commit/ba0ce89fb69cf63162ffc6b9479f0af7b0ff6d6c

继续阅读 »

最近 uapp-android 离线工程升级 SDK 时,LOG输出窗口提示:同步资源失败,未得到同步资源的授权。

没法打印 console.log 信息,也没法同步资源。

经过搜索,可以通过添加:

    implementation 'com.squareup.okhttp3:okhttp:3.12.12'  
    implementation 'com.squareup.okio:okio:1.15.0'

我已经在 uapp-android 工程中更新,参考代码:

https://github.com/uappkit/uapp-android/commit/ba0ce89fb69cf63162ffc6b9479f0af7b0ff6d6c

收起阅读 »

unicloud云数据库,获取json格式时输出为:"__ob__": {"dep": {...

json

问题

使用云函数获取云数据库的数据时,发现json对象没有赋值前打印出来是正常的,但是赋值之后打印出来就变成了如下:

{  
    "affectedDocs": 2,  
    "data": [{  
        "__ob__": {  
            "dep": {  
                "id": 672,  
                "subs": [{  
                    "active": true,  
                    "before": "function before () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }",  
                    "cb": "function noop (a, b, c) {}",  
                    "deep": false,  
                    "depIds": "Object",  
                    "deps": "Object",  
                    "dirty": false,  
                    "expression": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "getter": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "id": 121,  
                    "lazy": false,  
                    "newDepIds": "Object",  
                    "newDeps": "Object",  
                    "sync": false,  
                    "user": false,  
                    "vm": "Object"  
                }]  
            },  
            "value": {  
                "__ob__": {  
                    "dep": {  
                        "id": 672,  
                        "subs": "Object"  
                    },  
                    "value": {  
                        "__ob__": "Object"  
                    },  
                    "vmCount": 0  
                }  
            },  
            "vmCount": 0  
        }  
    }, {  
        "__ob__": {  
            "dep": {  
                "id": 686,  
                "subs": [{  
                    "active": true,  
                    "before": "function before () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }",  
                    "cb": "function noop (a, b, c) {}",  
                    "deep": false,  
                    "depIds": "Object",  
                    "deps": "Object",  
                    "dirty": false,  
                    "expression": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "getter": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "id": 121,  
                    "lazy": false,  
                    "newDepIds": "Object",  
                    "newDeps": "Object",  
                    "sync": false,  
                    "user": false,  
                    "vm": "Object"  
                }]  
            },  
            "value": {  
                "__ob__": {  
                    "dep": {  
                        "id": 686,  
                        "subs": "Object"  
                    },  
                    "value": {  
                        "__ob__": "Object"  
                    },  
                    "vmCount": 0  
                }  
            },  
            "vmCount": 0  
        }  
    }]

解决办法

事实上这个是vue的ob: Observer这些数据是vue这个框架对数据设置的监控器。不能够直接打印但是也是可以获取数据的

const va = uniCloud.importObject("getques")  
const ans = await va.getList()  
this.res = ans.data//给本地的res对象赋值  
console.log(ans)//这样打印出来就是如上代码一样是看不到数据的
console.log(this.res.data[0].que)//这样打印就可以打印出正常的数据了打印结果是

image-20221004122027580

其实可以正常操作了,在v-for中遍历

image-20221004122110420

得到结果

image-20221004121912567

参考文章

Vue ob: Observer 对象

继续阅读 »

问题

使用云函数获取云数据库的数据时,发现json对象没有赋值前打印出来是正常的,但是赋值之后打印出来就变成了如下:

{  
    "affectedDocs": 2,  
    "data": [{  
        "__ob__": {  
            "dep": {  
                "id": 672,  
                "subs": [{  
                    "active": true,  
                    "before": "function before () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }",  
                    "cb": "function noop (a, b, c) {}",  
                    "deep": false,  
                    "depIds": "Object",  
                    "deps": "Object",  
                    "dirty": false,  
                    "expression": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "getter": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "id": 121,  
                    "lazy": false,  
                    "newDepIds": "Object",  
                    "newDeps": "Object",  
                    "sync": false,  
                    "user": false,  
                    "vm": "Object"  
                }]  
            },  
            "value": {  
                "__ob__": {  
                    "dep": {  
                        "id": 672,  
                        "subs": "Object"  
                    },  
                    "value": {  
                        "__ob__": "Object"  
                    },  
                    "vmCount": 0  
                }  
            },  
            "vmCount": 0  
        }  
    }, {  
        "__ob__": {  
            "dep": {  
                "id": 686,  
                "subs": [{  
                    "active": true,  
                    "before": "function before () {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }",  
                    "cb": "function noop (a, b, c) {}",  
                    "deep": false,  
                    "depIds": "Object",  
                    "deps": "Object",  
                    "dirty": false,  
                    "expression": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "getter": "function () {\n      vm._update(vm._render(), hydrating);\n    }",  
                    "id": 121,  
                    "lazy": false,  
                    "newDepIds": "Object",  
                    "newDeps": "Object",  
                    "sync": false,  
                    "user": false,  
                    "vm": "Object"  
                }]  
            },  
            "value": {  
                "__ob__": {  
                    "dep": {  
                        "id": 686,  
                        "subs": "Object"  
                    },  
                    "value": {  
                        "__ob__": "Object"  
                    },  
                    "vmCount": 0  
                }  
            },  
            "vmCount": 0  
        }  
    }]

解决办法

事实上这个是vue的ob: Observer这些数据是vue这个框架对数据设置的监控器。不能够直接打印但是也是可以获取数据的

const va = uniCloud.importObject("getques")  
const ans = await va.getList()  
this.res = ans.data//给本地的res对象赋值  
console.log(ans)//这样打印出来就是如上代码一样是看不到数据的
console.log(this.res.data[0].que)//这样打印就可以打印出正常的数据了打印结果是

image-20221004122027580

其实可以正常操作了,在v-for中遍历

image-20221004122110420

得到结果

image-20221004121912567

参考文章

Vue ob: Observer 对象

收起阅读 »

安卓支付正常,IOS支付返回errMsg:mainifest.json中配置的支付appid和生成订单使用的appid不一致

appid 微信支付 苹果审核

mainifest.json中配置的支付appid和生成订单使用的appid不一致

app支付方式:微信支付

出错原因:

mainifest.json中配置的支付appid 填的 *开发环境appid*(自己开发用的,还有一个*正式appid*是客户的)  

未能及时发现错误的原因:

项目在config目录下index.js文件里,根据app运行环境是 *开发环境* 还是 *正式环境* 动态暴露 appid、partnerid;  
而且  mainifest.json中配置的支付appid 填的 开发环境appid ---不影响安卓支付,只有iOS支付报错  
所以我一时判断失误  只是在app支付页面,打印了订单信息和暴露出来的appid、partnerid进行了比对  

解决方法:
在项目里 mainifest.json文件中配置支付appid 改成 正式环境appid

继续阅读 »

mainifest.json中配置的支付appid和生成订单使用的appid不一致

app支付方式:微信支付

出错原因:

mainifest.json中配置的支付appid 填的 *开发环境appid*(自己开发用的,还有一个*正式appid*是客户的)  

未能及时发现错误的原因:

项目在config目录下index.js文件里,根据app运行环境是 *开发环境* 还是 *正式环境* 动态暴露 appid、partnerid;  
而且  mainifest.json中配置的支付appid 填的 开发环境appid ---不影响安卓支付,只有iOS支付报错  
所以我一时判断失误  只是在app支付页面,打印了订单信息和暴露出来的appid、partnerid进行了比对  

解决方法:
在项目里 mainifest.json文件中配置支付appid 改成 正式环境appid

收起阅读 »

国庆7天不打烊,个人开发者在线接单

App Vue 小程序 uniapp 外包接单 外包

个人开发者接单哦~实力派,质量有保障,价格合理

商城类、社交类、按摩类、即时通讯、哈喽麻豆/集美麻豆(买家秀任务平台)类、音乐类 度有作品可看哦,绝对真实从我这里开发出去的项目

擅长 uniapp、 Weex、Nvue、Php、HTML、Vue、element

除了大游戏,脚本,外挂,其他的度可以开发哦~~

有线上成品作品可看

有需求的老板可联系我

微信:wu1020yt

QQ:6864952

继续阅读 »

个人开发者接单哦~实力派,质量有保障,价格合理

商城类、社交类、按摩类、即时通讯、哈喽麻豆/集美麻豆(买家秀任务平台)类、音乐类 度有作品可看哦,绝对真实从我这里开发出去的项目

擅长 uniapp、 Weex、Nvue、Php、HTML、Vue、element

除了大游戏,脚本,外挂,其他的度可以开发哦~~

有线上成品作品可看

有需求的老板可联系我

微信:wu1020yt

QQ:6864952

收起阅读 »

xcode打包导出ipa

Appstore上传

众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需求,对于苹果开发者账号认证需要支付688,真的是极大的浪费,使用appuploader,只需要注册苹果普通的账号,不需要688认证,就可以打包自己开发的ios应用,自己真机测试,下面是详细教程:
第一步:注册苹果开发者账号
访问以下网址,按照提示注册即可,因为不需要支付688认证苹果开发者,所以没什么好讲的。 注册地址:Apple Developer https://developer.apple.com/cn/
第二步:下载APP Uploader
下载地址: Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台版,windows,linux,mac系统都可用 (applicationloader.net) http://www.applicationloader.net/
我这里是VMware虚拟机安装的mac系统,所以下载了mac安装包,直接解压,双击appuploader即可启动,看下图:

主界面如下:

简单介绍一下,这块工具的使用方法:
1、登录,由于没有支付688认证,所以登录的时候,注意勾选未支付688:

2、功能介绍,我这里主要使用了工具的三个功能部分:

证书部分:主要是通过工具生成.p12证书文件,后面这个证书要导入mac系统。 描述文件:这个文件主要包含了证书,公钥,设备信息等,和app绑定。
测试设备:主要是录入要内测的ios手机,主要是udid,udid可以理解为设备的一个唯一标识码,iphone手机udid的获取,可以安装驱动后通过appuploader工具自动获取
其他功能模块我这也没有用到,具体可以通过工具软件的帮助文档详细了解,帮助文档也列出了常见的问题以及解决方法: Appuploader常见问题 (applicationloader.net),下载链接:http://help.applicationloader.net/topic/appuploader/
第三步:使用xcode打包导出ipa文件,供其他人内测
1、mac系统导入appuploader生成的p12证书,导入方法入下图:
双击下载到的p12 文件,系统提示输入密码之类的,按照提示输入密码即可。

2、关键部分,xcode使用这个p12证书,进行打包ipa:
xcode添加好了苹果开发者账号,个人p12证书有了,接下来就是xcode打包ios应用:

记得取消勾选automatically manage signing

xcode编译没有问题,就会弹出一下界面

在Products目录下,把xxx.app文件拷贝出来,新建Playload文件夹,压缩Playload文件夹,得到Playload.zip文件,修改
Playload.zip文件为Playload.ipa文件,至此ios应用安装文件就弄好了.

继续阅读 »

众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需求,对于苹果开发者账号认证需要支付688,真的是极大的浪费,使用appuploader,只需要注册苹果普通的账号,不需要688认证,就可以打包自己开发的ios应用,自己真机测试,下面是详细教程:
第一步:注册苹果开发者账号
访问以下网址,按照提示注册即可,因为不需要支付688认证苹果开发者,所以没什么好讲的。 注册地址:Apple Developer https://developer.apple.com/cn/
第二步:下载APP Uploader
下载地址: Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台版,windows,linux,mac系统都可用 (applicationloader.net) http://www.applicationloader.net/
我这里是VMware虚拟机安装的mac系统,所以下载了mac安装包,直接解压,双击appuploader即可启动,看下图:

主界面如下:

简单介绍一下,这块工具的使用方法:
1、登录,由于没有支付688认证,所以登录的时候,注意勾选未支付688:

2、功能介绍,我这里主要使用了工具的三个功能部分:

证书部分:主要是通过工具生成.p12证书文件,后面这个证书要导入mac系统。 描述文件:这个文件主要包含了证书,公钥,设备信息等,和app绑定。
测试设备:主要是录入要内测的ios手机,主要是udid,udid可以理解为设备的一个唯一标识码,iphone手机udid的获取,可以安装驱动后通过appuploader工具自动获取
其他功能模块我这也没有用到,具体可以通过工具软件的帮助文档详细了解,帮助文档也列出了常见的问题以及解决方法: Appuploader常见问题 (applicationloader.net),下载链接:http://help.applicationloader.net/topic/appuploader/
第三步:使用xcode打包导出ipa文件,供其他人内测
1、mac系统导入appuploader生成的p12证书,导入方法入下图:
双击下载到的p12 文件,系统提示输入密码之类的,按照提示输入密码即可。

2、关键部分,xcode使用这个p12证书,进行打包ipa:
xcode添加好了苹果开发者账号,个人p12证书有了,接下来就是xcode打包ios应用:

记得取消勾选automatically manage signing

xcode编译没有问题,就会弹出一下界面

在Products目录下,把xxx.app文件拷贝出来,新建Playload文件夹,压缩Playload文件夹,得到Playload.zip文件,修改
Playload.zip文件为Playload.ipa文件,至此ios应用安装文件就弄好了.

收起阅读 »

【似乎不生效了】video取第一帧图片

video

video取第一帧图片
在video路径后面加?vframe/jpg/offset/0

例:

<template>  
    <view>  
         <image :src="`${path}?vframe/jpg/offset/0`"></image>  
    </view>  
</template>  

export default {  
    data() {  
        return {  
             path: "...../a.mp4"  
        }  
    }  
}

参考地址:https://blog.csdn.net/m0_55595611/article/details/123080574

↓↓↓ 各位大佬点点赞

继续阅读 »

video取第一帧图片
在video路径后面加?vframe/jpg/offset/0

例:

<template>  
    <view>  
         <image :src="`${path}?vframe/jpg/offset/0`"></image>  
    </view>  
</template>  

export default {  
    data() {  
        return {  
             path: "...../a.mp4"  
        }  
    }  
}

参考地址:https://blog.csdn.net/m0_55595611/article/details/123080574

↓↓↓ 各位大佬点点赞

收起阅读 »

Error: [JS Framework] Failed to receiveTasks, instance (1) is not available.可能是唯一解决方案

最近刚开始做一个新的项目.使用的vue3,纯nuve渲染, (之前是使用vue2纯nvue渲染,遇到过这个问题,后面莫名其妙就没有了,也就没在管过,)

项目刚起步,就出现这个报错,UNiCloud社区,百度都没找到问题所在,因为项目刚开始小,我就做迁移处理

新建一个 vue3,
manifest.json 修改appid改成和报错项目一致("appid" : "UNI****",)
因为我使用的自定义基座,就只把unpackage 这个文件夹直接复制过来

然后从pages,store,uni_modules,App.vue,main.js,pages.json 一个方法一个页面复制过来试,想找出问题所在,

结果出乎我的意料,奇迹般的不出现报错了,项目正常运行了

因为我自定义基座是复制过了,就怀疑是不是manifest.json/app模块没有勾选的原因才没有报错,我勾选还是没有报错

我最后得出的结论,应该是HBuilderX渲染的nvue框架的问题,在HBuilderX渲染的nvue是UNiCloud经过封装的,有可能我们在写代码的时候,用到哪些需要去修改nvue渲染框架的时候.然后方法废弃.但是nuve框架修改过的方法没改回来,下面说说我这中间用哪些功能,
unipush2.0
plus.nativeObj.View
loadBase64Data
getDirectory
我自己怀疑是这些跟修改nvue框架有关系,

总结一下,不管nvue是vue2,vue3都是用相同的方法,就能解决这个报错, 新建一个同类型的项目,根据上述进行修改,

1.自建页面(pages) 就直接复制文件过来, 然后pages.json复制代码过来, 最好是直接复制内容,而不是复制文件,

  1. pages.json,store,,App.vue,main.js 复制代码过来,最好不要直接复制文件

解决问题的小伙伴分享一下经验

继续阅读 »

最近刚开始做一个新的项目.使用的vue3,纯nuve渲染, (之前是使用vue2纯nvue渲染,遇到过这个问题,后面莫名其妙就没有了,也就没在管过,)

项目刚起步,就出现这个报错,UNiCloud社区,百度都没找到问题所在,因为项目刚开始小,我就做迁移处理

新建一个 vue3,
manifest.json 修改appid改成和报错项目一致("appid" : "UNI****",)
因为我使用的自定义基座,就只把unpackage 这个文件夹直接复制过来

然后从pages,store,uni_modules,App.vue,main.js,pages.json 一个方法一个页面复制过来试,想找出问题所在,

结果出乎我的意料,奇迹般的不出现报错了,项目正常运行了

因为我自定义基座是复制过了,就怀疑是不是manifest.json/app模块没有勾选的原因才没有报错,我勾选还是没有报错

我最后得出的结论,应该是HBuilderX渲染的nvue框架的问题,在HBuilderX渲染的nvue是UNiCloud经过封装的,有可能我们在写代码的时候,用到哪些需要去修改nvue渲染框架的时候.然后方法废弃.但是nuve框架修改过的方法没改回来,下面说说我这中间用哪些功能,
unipush2.0
plus.nativeObj.View
loadBase64Data
getDirectory
我自己怀疑是这些跟修改nvue框架有关系,

总结一下,不管nvue是vue2,vue3都是用相同的方法,就能解决这个报错, 新建一个同类型的项目,根据上述进行修改,

1.自建页面(pages) 就直接复制文件过来, 然后pages.json复制代码过来, 最好是直接复制内容,而不是复制文件,

  1. pages.json,store,,App.vue,main.js 复制代码过来,最好不要直接复制文件

解决问题的小伙伴分享一下经验

收起阅读 »

uniapp 切到后台websocket自动断开

unipush WEBSOCKET

我这边是通过websocket接收信息然后使用uni个推推送消息,但现在只要app切到后台websocket就会断开连接,请问有什么好的解决方法让app在后台websocket也不断开吗

我这边是通过websocket接收信息然后使用uni个推推送消息,但现在只要app切到后台websocket就会断开连接,请问有什么好的解决方法让app在后台websocket也不断开吗

uniapp 全埋点实现思路【uni-cli】

uniapp
  • 背景
    a. 目前公司针对C端项目埋点要求较高,在项目中手动埋点使得代码冗余杂长;
    b. 其他基于原生开发小程序已实现全埋点处理,为了统一需要再uni也采用相同方案;

  • 思路
    拦截点击、页面访问等事件,统一上报埋点信息

  • 方案
    调试跟踪发现基于uni-cli开发项目,最终编译成原生小程序代码,核心处理是在common/vendor.js;
    而common_vendor目前并未找到在运行时能够拦截处理的方案,感兴趣的同学也可以研究一下;
    继续跟踪,点击事件是执行patchMPEvent方法处理,咱们只需要对该方案做处理即可达到相同效果;
    其他事件思路同理;

  • 代码

    // plugin/tlog.ts  
    import { PluginOption } from 'vite';  
    /** 点击后拦截插入代码,event为点击对象 */  
    const injectClickCode = `  
    console.log(event);  
    if(event.type === 'tap'){  
    tlog?.track("auto_track_click",'auto',{message: 'just a demo click'});  
    };  
    `;  
    export const VitePluginInjectTlogAutoTrack: () => PluginOption = () => ({  
    name: 'auto-tlog-track',  
    renderChunk(code, chunk) {  
    let tempCode = code;  
    if (chunk.fileName === 'common/vendor.js') {  
      const regx = new RegExp(/patchMPEvent\(event\) {([\s\S]*)/);  
      tempCode = code.replace(regx, `patchMPEvent(event){  
        ${injectClickCode};  
      $1`);  
    }  
    return tempCode;  
    }  
    });
    // vite.confg.ts  
    import { VitePluginInjectTlogAutoTrack } from './plugins/tlog';  
    export default defineConfig(({ command, mode }) => ({  
    plugins: [uni(), VitePluginInjectTlogAutoTrack()]  
    }));
继续阅读 »
  • 背景
    a. 目前公司针对C端项目埋点要求较高,在项目中手动埋点使得代码冗余杂长;
    b. 其他基于原生开发小程序已实现全埋点处理,为了统一需要再uni也采用相同方案;

  • 思路
    拦截点击、页面访问等事件,统一上报埋点信息

  • 方案
    调试跟踪发现基于uni-cli开发项目,最终编译成原生小程序代码,核心处理是在common/vendor.js;
    而common_vendor目前并未找到在运行时能够拦截处理的方案,感兴趣的同学也可以研究一下;
    继续跟踪,点击事件是执行patchMPEvent方法处理,咱们只需要对该方案做处理即可达到相同效果;
    其他事件思路同理;

  • 代码

    // plugin/tlog.ts  
    import { PluginOption } from 'vite';  
    /** 点击后拦截插入代码,event为点击对象 */  
    const injectClickCode = `  
    console.log(event);  
    if(event.type === 'tap'){  
    tlog?.track("auto_track_click",'auto',{message: 'just a demo click'});  
    };  
    `;  
    export const VitePluginInjectTlogAutoTrack: () => PluginOption = () => ({  
    name: 'auto-tlog-track',  
    renderChunk(code, chunk) {  
    let tempCode = code;  
    if (chunk.fileName === 'common/vendor.js') {  
      const regx = new RegExp(/patchMPEvent\(event\) {([\s\S]*)/);  
      tempCode = code.replace(regx, `patchMPEvent(event){  
        ${injectClickCode};  
      $1`);  
    }  
    return tempCode;  
    }  
    });
    // vite.confg.ts  
    import { VitePluginInjectTlogAutoTrack } from './plugins/tlog';  
    export default defineConfig(({ command, mode }) => ({  
    plugins: [uni(), VitePluginInjectTlogAutoTrack()]  
    }));
收起阅读 »

解决小程序打包后主包过大问题

打包 小程序

小程序使用了分包,但是会发现每次主包没怎么增加东西,分包增加页面后,主包也变大了

原因:在项目文件夹查看项目打包后的根目录下的common文件夹里的vendor.js,你会发现它变大了,为什么会变大,原来是它把分包的依赖也给打包进去了,比如你在分包使用require引入的给打包到vendor.js里了,这就是导致明明主包都没有超过2M,打包后却超过的原因。

那么我们如何解决这个问题呢,如何让分包的依赖就打包在分包里,别打包到主包里,其实只要添加一个配置及可以了,
打开manifest.json,在“mp-weixin”里添加代码

"optimization":{   
      "subPackages":true  
 }

就可以啦

继续阅读 »

小程序使用了分包,但是会发现每次主包没怎么增加东西,分包增加页面后,主包也变大了

原因:在项目文件夹查看项目打包后的根目录下的common文件夹里的vendor.js,你会发现它变大了,为什么会变大,原来是它把分包的依赖也给打包进去了,比如你在分包使用require引入的给打包到vendor.js里了,这就是导致明明主包都没有超过2M,打包后却超过的原因。

那么我们如何解决这个问题呢,如何让分包的依赖就打包在分包里,别打包到主包里,其实只要添加一个配置及可以了,
打开manifest.json,在“mp-weixin”里添加代码

"optimization":{   
      "subPackages":true  
 }

就可以啦

收起阅读 »

打自定义基座必须用开发者证书

真机调试 自定义基座

windows环境hbuilderx链接苹果手机真机调试,打自定义基座调试必须用开发者证书。

windows环境hbuilderx链接苹果手机真机调试,打自定义基座调试必须用开发者证书。