HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

failed to execute git

Git

git 推送的时候出错
fatal: the remote end hung up unexpectedly Everything up-to-date

解决方法

修改提交缓存大小为500M,或者更大的数字
git config --global http.postBuffer 524288000

继续阅读 »

git 推送的时候出错
fatal: the remote end hung up unexpectedly Everything up-to-date

解决方法

修改提交缓存大小为500M,或者更大的数字
git config --global http.postBuffer 524288000

收起阅读 »

关于hx选中文本自动复制粘贴问题的解决方案

复制粘贴 粘贴 复制 双击粘贴

问题

目前,windows上某些划词类软件(如豆包有道词典夸克钉钉等), 可能和hx的快捷键发生功能冲突,造成hx选中文本时划词软件触发“ctrl+insert”的hx快捷键。

排查

关闭这些软件, 注意是彻底关闭程序。关闭后,看下是否正常? 如果正常,可以使用下面的解决方案解决问题。

解决方案1

关闭这些软件的划词功能

解决方案2

打开hx菜单的工具->自定义快捷键,右侧用户设置内添加如下内容:

  {  
    "key": "ctrl+insert",  
    "command": "editor.action.clipboardCopyAction",  
    "override": true  
  },

也可以将command替换成您认为不影响使用的其他功能

继续阅读 »

问题

目前,windows上某些划词类软件(如豆包有道词典夸克钉钉等), 可能和hx的快捷键发生功能冲突,造成hx选中文本时划词软件触发“ctrl+insert”的hx快捷键。

排查

关闭这些软件, 注意是彻底关闭程序。关闭后,看下是否正常? 如果正常,可以使用下面的解决方案解决问题。

解决方案1

关闭这些软件的划词功能

解决方案2

打开hx菜单的工具->自定义快捷键,右侧用户设置内添加如下内容:

  {  
    "key": "ctrl+insert",  
    "command": "editor.action.clipboardCopyAction",  
    "override": true  
  },

也可以将command替换成您认为不影响使用的其他功能

收起阅读 »

live-pusher开启补光灯

闪光灯 live_pusher

this.livePusher.toggleTorch()

this.livePusher.toggleTorch()

请问实名认证审核要多久,周末审核吗

审核

请问实名认证审核要多久,周末审核吗

请问实名认证审核要多久,周末审核吗

【报Bug】我之前发布的文章,为啥下面的评论,你们官方都删除了

隐私

【报Bug】我之前发布的文章,为啥下面的评论,你们官方都删除了???

【报Bug】我之前发布的文章,为啥下面的评论,你们官方都删除了???

cli项目使用vscode开发的一些自动化配置及问题

HBuilderX vscode vue_cli

package.json 中 scripts 如下

"scripts": {  
    "dev:h5": "uni",  
    "build:h5": "uni build",  
    "dev:mp-weixin": "concurrently 'uni -p mp-weixin' 'node adt.js'",  
    "build:mp-weixin": "uni build -p mp-weixin && node adt.js",  
    "dev:app": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app' 'node adt.js'",  
    "build:app": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app && node adt.js",  
    "dev:app-android": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app-android' 'node adt.js'",  
    "build:app-android": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app-android && node adt.js",  
    "dev:app-ios": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app-ios' 'node adt.js'",  
    "build:app-ios": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app-ios && node adt.js",  
    "dev:app-harmony": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app-harmony' 'node adt.js'",  
    "build:app-harmony": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app-harmony && node adt.js"  
  }

1、concurrently 为npm命令多线程执行库 可以全局安装或项目下安装
开发模式下 uni编译命令不会结束, 直接使用 && 串行执行,造成后续 node命令 不能执行 ; 如果使用& 并行执行 开发模式 下后续没法监控变化 ;使用这个库可以解决问题
2、UNI_OUTPUT_DIR 为改变编译输出目录 一定要写到 uni命令之前 ,否则无效

adt.js 脚本 放到根目录 代码如下

const fs = require('fs');  
const path = require('path');  
const { execSync } = require('child_process');  
const npmEvent = process.env.npm_lifecycle_event;  
let cli;  
if (process.platform === 'win32') {//Windows  
    if (npmEvent.includes('mp-weixin')) {  
        cli = 'C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.exe';  
    } else {  
        cli = 'C:\\Program Files\\DCloud\\HBuilderX\\cli.exe';  
    }  
} else if (process.platform === 'darwin') {//MacOS  
    if (npmEvent.includes('mp-weixin')) {  
        cli = '/Applications/wechatwebdevtools.app/Contents/MacOS/cli';  
    } else {  
        cli = '/Applications/HBuilderX.app/Contents/MacOS/cli';  
    }  
}  
let project;  
let cls;  
const envEvent = npmEvent.split(':')[0];  
if (npmEvent.includes('mp-weixin')) {//微信小程序  
    project = path.resolve(__dirname, `dist/${envEvent}/mp-weixin`);  
    cls = `${cli} open --project ${project}`;  
} else {//APP  
    project = path.resolve(__dirname, `dist/${envEvent}/${process.env.npm_package_name}-app-${envEvent}`);  
   cls = `${cli} open && ${cli} project open --path ${project}`;  
}  

if (fs.existsSync(project)) {  
    execSync(cls);  
} else {  
    let startTime = Date.now();  
    const checkProject = () => {  
        if (fs.existsSync(project)) {  
            execSync(cls);  
        } else {  
            const elapsedTime = Date.now() - startTime;  
            if (elapsedTime < 300 * 1000) {  
                setTimeout(checkProject, 1000);  
            } else {  
                console.error('编译失败,请检查代码后重新执行。');  
            }  
        }  
    };  
    checkProject();  
}

windows下 工具路径可能不对 (安装目录 找到 cli 路径 替换即可 )

问题:上面的是 cls 的命令代码 在 vscode 直接执行 是没问题的 ,但是 如果 使用 HBuilderX 打开的这个项目 就没法执行 cls 的命令代码(注 如果 使用cli命令启动的 HBuilderX 好像没问题)

继续阅读 »

package.json 中 scripts 如下

"scripts": {  
    "dev:h5": "uni",  
    "build:h5": "uni build",  
    "dev:mp-weixin": "concurrently 'uni -p mp-weixin' 'node adt.js'",  
    "build:mp-weixin": "uni build -p mp-weixin && node adt.js",  
    "dev:app": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app' 'node adt.js'",  
    "build:app": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app && node adt.js",  
    "dev:app-android": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app-android' 'node adt.js'",  
    "build:app-android": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app-android && node adt.js",  
    "dev:app-ios": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app-ios' 'node adt.js'",  
    "build:app-ios": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app-ios && node adt.js",  
    "dev:app-harmony": "concurrently 'UNI_OUTPUT_DIR=dist/dev/${npm_package_name}-app-dev uni -p app-harmony' 'node adt.js'",  
    "build:app-harmony": "UNI_OUTPUT_DIR=dist/build/${npm_package_name}-app-build uni build -p app-harmony && node adt.js"  
  }

1、concurrently 为npm命令多线程执行库 可以全局安装或项目下安装
开发模式下 uni编译命令不会结束, 直接使用 && 串行执行,造成后续 node命令 不能执行 ; 如果使用& 并行执行 开发模式 下后续没法监控变化 ;使用这个库可以解决问题
2、UNI_OUTPUT_DIR 为改变编译输出目录 一定要写到 uni命令之前 ,否则无效

adt.js 脚本 放到根目录 代码如下

const fs = require('fs');  
const path = require('path');  
const { execSync } = require('child_process');  
const npmEvent = process.env.npm_lifecycle_event;  
let cli;  
if (process.platform === 'win32') {//Windows  
    if (npmEvent.includes('mp-weixin')) {  
        cli = 'C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.exe';  
    } else {  
        cli = 'C:\\Program Files\\DCloud\\HBuilderX\\cli.exe';  
    }  
} else if (process.platform === 'darwin') {//MacOS  
    if (npmEvent.includes('mp-weixin')) {  
        cli = '/Applications/wechatwebdevtools.app/Contents/MacOS/cli';  
    } else {  
        cli = '/Applications/HBuilderX.app/Contents/MacOS/cli';  
    }  
}  
let project;  
let cls;  
const envEvent = npmEvent.split(':')[0];  
if (npmEvent.includes('mp-weixin')) {//微信小程序  
    project = path.resolve(__dirname, `dist/${envEvent}/mp-weixin`);  
    cls = `${cli} open --project ${project}`;  
} else {//APP  
    project = path.resolve(__dirname, `dist/${envEvent}/${process.env.npm_package_name}-app-${envEvent}`);  
   cls = `${cli} open && ${cli} project open --path ${project}`;  
}  

if (fs.existsSync(project)) {  
    execSync(cls);  
} else {  
    let startTime = Date.now();  
    const checkProject = () => {  
        if (fs.existsSync(project)) {  
            execSync(cls);  
        } else {  
            const elapsedTime = Date.now() - startTime;  
            if (elapsedTime < 300 * 1000) {  
                setTimeout(checkProject, 1000);  
            } else {  
                console.error('编译失败,请检查代码后重新执行。');  
            }  
        }  
    };  
    checkProject();  
}

windows下 工具路径可能不对 (安装目录 找到 cli 路径 替换即可 )

问题:上面的是 cls 的命令代码 在 vscode 直接执行 是没问题的 ,但是 如果 使用 HBuilderX 打开的这个项目 就没法执行 cls 的命令代码(注 如果 使用cli命令启动的 HBuilderX 好像没问题)

收起阅读 »

关于右键菜单

右键菜单的 复制、剪切,就好了。整那么一长串文字干啥?不觉得是脱裤子放屁吗?

右键菜单的 复制、剪切,就好了。整那么一长串文字干啥?不觉得是脱裤子放屁吗?

uniApp获取通话记录

经验分享

uniApp获取通话记录

首先讲一个大坑

要拿到通过记录真机调试时候必须前给足权限,必须打包成自定义基座再测试!!!!!!一定要先打包!!!!

必要权限

首先勾取manifest.json里APP模块里通讯录权限
添加以下权限

<uses-feature android:name="android.permission.READ_CONTACTS"/>  
<uses-permission android:name="android.permission.READ_CALL_LOG"/>

为了怕遗漏我把我所有的权限都放出来提供参考

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>  
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
<uses-permission android:name="android.permission.VIBRATE"/>  
<uses-permission android:name="android.permission.READ_LOGS"/>  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
<uses-feature android:name="android.hardware.camera.autofocus"/>  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
<uses-permission android:name="android.permission.CAMERA"/>  
<uses-permission android:name="android.permission.CALL_PHONE"/>  
<uses-feature android:name="android.permission.READ_CONTACTS"/>  
<uses-permission android:name="android.permission.READ_CALL_LOG"/>  
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>  
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>  
<uses-permission android:name="android.permission.WAKE_LOCK"/>  
<uses-permission android:name="android.permission.FLASHLIGHT"/>  
<uses-feature android:name="android.hardware.camera"/>  
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>  
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>  
<uses-permission android:name="android.permission.READ_CONTACTS"/>  

然后打包制作自定义基座

获取通话记录代码

我也是从其他地方粘的

getCalllog(){  
                var CallLog = plus.android.importClass('android.provider.CallLog');  
                var Activity = plus.android.runtimeMainActivity();  
                var ContentResolver = plus.android.importClass('android.content.ContentResolver');  
                var resolver = Activity.getContentResolver();  
                plus.android.importClass(resolver);  
                var String = plus.android.importClass("java.lang.String");  
                var cs = resolver.query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);  
                var talist = [];  
                uni.showLoading({  
                    title: "匹配通话记录中.."  
                });  
                var count = 0; // 记录多少条 用于处理循环跳出  
                while (plus.android.invoke(cs, "moveToNext")) {  
                    count++;  
                    talist.push({  
                        xm: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.CACHED_NAME)),  
                        telphone: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.NUMBER)),  
                        duration: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.DURATION)),  
                        date: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.DATE)),  
                        type: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.TYPE))  
                    });  
                    if(count > 50){  
                        break;  
                    }  
                }  
                uni.hideLoading();  
                console.info("talist",talist);  
            },
继续阅读 »

uniApp获取通话记录

首先讲一个大坑

要拿到通过记录真机调试时候必须前给足权限,必须打包成自定义基座再测试!!!!!!一定要先打包!!!!

必要权限

首先勾取manifest.json里APP模块里通讯录权限
添加以下权限

<uses-feature android:name="android.permission.READ_CONTACTS"/>  
<uses-permission android:name="android.permission.READ_CALL_LOG"/>

为了怕遗漏我把我所有的权限都放出来提供参考

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>  
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
<uses-permission android:name="android.permission.VIBRATE"/>  
<uses-permission android:name="android.permission.READ_LOGS"/>  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
<uses-feature android:name="android.hardware.camera.autofocus"/>  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
<uses-permission android:name="android.permission.CAMERA"/>  
<uses-permission android:name="android.permission.CALL_PHONE"/>  
<uses-feature android:name="android.permission.READ_CONTACTS"/>  
<uses-permission android:name="android.permission.READ_CALL_LOG"/>  
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>  
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>  
<uses-permission android:name="android.permission.WAKE_LOCK"/>  
<uses-permission android:name="android.permission.FLASHLIGHT"/>  
<uses-feature android:name="android.hardware.camera"/>  
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>  
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>  
<uses-permission android:name="android.permission.READ_CONTACTS"/>  

然后打包制作自定义基座

获取通话记录代码

我也是从其他地方粘的

getCalllog(){  
                var CallLog = plus.android.importClass('android.provider.CallLog');  
                var Activity = plus.android.runtimeMainActivity();  
                var ContentResolver = plus.android.importClass('android.content.ContentResolver');  
                var resolver = Activity.getContentResolver();  
                plus.android.importClass(resolver);  
                var String = plus.android.importClass("java.lang.String");  
                var cs = resolver.query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);  
                var talist = [];  
                uni.showLoading({  
                    title: "匹配通话记录中.."  
                });  
                var count = 0; // 记录多少条 用于处理循环跳出  
                while (plus.android.invoke(cs, "moveToNext")) {  
                    count++;  
                    talist.push({  
                        xm: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.CACHED_NAME)),  
                        telphone: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.NUMBER)),  
                        duration: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.DURATION)),  
                        date: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.DATE)),  
                        type: plus.android.invoke(cs, "getString", plus.android.invoke(cs, "getColumnIndex", CallLog.Calls.TYPE))  
                    });  
                    if(count > 50){  
                        break;  
                    }  
                }  
                uni.hideLoading();  
                console.info("talist",talist);  
            },
收起阅读 »

全栈开发在线接单(有团队)

uniapp 外包接单 外包

uniapp项目开发在线接单,可定制,可二开,时间充裕,保质保量
有需要请联系 vx : docxxlsx

uniapp项目开发在线接单,可定制,可二开,时间充裕,保质保量
有需要请联系 vx : docxxlsx

记录一个支付宝小程序问题:切换组件出现生命周期不存在

组件 tabbar 支付宝小程序

最近写一个支付宝、微信、h5三端互通 的程序,用uniapp开发,

然后涉及到不同身份,不同的主页,所以原生的TabBar理所当然的GG,接着就自己定义了一个tabBar组件;然后发现了狗屎,,,小程序不支持component动态组件,,,就只能v-if切换组件的方式实现tabBar了;

接着,由于一开始使用的原生tabBar,所以页面是放在pages下面的,改成组件切换后,tabBar里切换的组件页面在支付宝小程序全部失去生命周期-.-||,绝了。

一开始以为是v-if的问题,后面排查完,改一个路径即可,换到components下

特此记录,狗屎小程序!!!

继续阅读 »

最近写一个支付宝、微信、h5三端互通 的程序,用uniapp开发,

然后涉及到不同身份,不同的主页,所以原生的TabBar理所当然的GG,接着就自己定义了一个tabBar组件;然后发现了狗屎,,,小程序不支持component动态组件,,,就只能v-if切换组件的方式实现tabBar了;

接着,由于一开始使用的原生tabBar,所以页面是放在pages下面的,改成组件切换后,tabBar里切换的组件页面在支付宝小程序全部失去生命周期-.-||,绝了。

一开始以为是v-if的问题,后面排查完,改一个路径即可,换到components下

特此记录,狗屎小程序!!!

收起阅读 »