HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

【请谨慎使用】h5打包之后,不支持本地file协议打开

uniapp

以下介绍的方式 请谨慎使用 现在是可以用,以后是不一定,风险是会有的。

1、路由模式选择 hash

2、开始打包

3、打包之后的文件夹 ,找到 /static/js/index.****.js

4、搜索 base:"/" 修改成 base:"./"

5、重要的事情说几遍,未得官方认可,风险是会有的

继续阅读 »

以下介绍的方式 请谨慎使用 现在是可以用,以后是不一定,风险是会有的。

1、路由模式选择 hash

2、开始打包

3、打包之后的文件夹 ,找到 /static/js/index.****.js

4、搜索 base:"/" 修改成 base:"./"

5、重要的事情说几遍,未得官方认可,风险是会有的

收起阅读 »

hbuilderX 无连接手机,无法检测到手机

今天遇到软件更新,以我以往的性格是爱答不理的,只是这次手欠点一下,导致手机系统也还原了问题也没搞定,话不多说进入主题

问题1:adb.exe 无故关闭

问题2:Hbuilder 基座无法安装,安装失败

试过网上各种大神的各种方法几乎都试试过了,依然无用...

有个简单粗暴的解决方法,Hbuilder 从官网重新下载一个(所有设置都是原始的,防止你百度到的的设置方法有问题),二下载一个"360手机助手或应用宝"
其它安正常USB连接就行

继续阅读 »

今天遇到软件更新,以我以往的性格是爱答不理的,只是这次手欠点一下,导致手机系统也还原了问题也没搞定,话不多说进入主题

问题1:adb.exe 无故关闭

问题2:Hbuilder 基座无法安装,安装失败

试过网上各种大神的各种方法几乎都试试过了,依然无用...

有个简单粗暴的解决方法,Hbuilder 从官网重新下载一个(所有设置都是原始的,防止你百度到的的设置方法有问题),二下载一个"360手机助手或应用宝"
其它安正常USB连接就行

收起阅读 »

毕业(真实版本)《格里菲斯大学毕业文凭|Griffith真实毕业一样证书

《格里菲斯大学毕业文凭》【 微/Q:896091910——WeChat:hsh12688】《Griffith毕业文凭》【留信网认证&博士&硕士&海归&本科&排名&成绩单】

《格里菲斯大学毕业文凭》【 微/Q:896091910——WeChat:hsh12688】《Griffith毕业文凭》【留信网认证&博士&硕士&海归&本科&排名&成绩单】

毕业(真实版本)《昆士兰大学毕业|UQ真实毕业一样

《昆士兰大学毕业》【 微/Q:896091910——WeChat:hsh12688】《UQ毕业》【留信网认证&博士&硕士&海归&本科&排名&成绩单】

《昆士兰大学毕业》【 微/Q:896091910——WeChat:hsh12688】《UQ毕业》【留信网认证&博士&硕士&海归&本科&排名&成绩单】

【iOS上架】APP专用密码app-specific password的生成

iOS iOS打包

APP专用密码app-specific password是专门用于上传ipa文件的一种密码,是一种苹果的安全机制!

现在苹果开发者账号开启了双重认证,提交ipa文件时候都需要这个密码!

特点:

不会失效

可以生成多个(忘记了可以重新申请)

不同的APP上架通用(无需重复生成)

下面是生成步骤

1、首先打开apple id管理中心

https://appleid.apple.com/zh_CN

登录苹果开发者账号

2、登录进去后找到安全项目,点击生成专用密码。

密码标签随便输入,123,app等之类的都行。

点击创建生成,(注意密码标签不是专用密码,是由苹果系统生成的一串密码)专用密码就是下面这个样子的密码,把这个密码复制,打开Appuploader

如果是Appuploader软件进行上传ipa(Appuploader软件可以帮助在Windows电脑直接申请iOS证书和上传ipa)

打开AU软件点击右上角(下图箭头处),进入设置,把上传专用密码复制上去,同时勾选上保存密码,点击Save保存,然后再回去提交ipa上传就可以正常上传了。

继续阅读 »

APP专用密码app-specific password是专门用于上传ipa文件的一种密码,是一种苹果的安全机制!

现在苹果开发者账号开启了双重认证,提交ipa文件时候都需要这个密码!

特点:

不会失效

可以生成多个(忘记了可以重新申请)

不同的APP上架通用(无需重复生成)

下面是生成步骤

1、首先打开apple id管理中心

https://appleid.apple.com/zh_CN

登录苹果开发者账号

2、登录进去后找到安全项目,点击生成专用密码。

密码标签随便输入,123,app等之类的都行。

点击创建生成,(注意密码标签不是专用密码,是由苹果系统生成的一串密码)专用密码就是下面这个样子的密码,把这个密码复制,打开Appuploader

如果是Appuploader软件进行上传ipa(Appuploader软件可以帮助在Windows电脑直接申请iOS证书和上传ipa)

打开AU软件点击右上角(下图箭头处),进入设置,把上传专用密码复制上去,同时勾选上保存密码,点击Save保存,然后再回去提交ipa上传就可以正常上传了。

收起阅读 »

【开源】BookChatApp ,uni-app 开发的通用书籍阅读手机App,同时支持编译成各平台小程序

介绍

通用书籍阅读APP,BookChat 的 uni-app 实现版本,支持多端分发,编译生成 Android 和 iOS 手机APP以及各平台的小程序。

使用BookChatApp,您可以轻松地将您的电子书、文档手册和在线书籍分发到各个小程序平台,以及编译生成手机APP发布到各大手机软件市场供用户下载和使用。

升级日志

  • 修复登录前后,banner关于我们的链接跳转不一样的问题
  • iOS首次打开APP未授权网络访问的时候,首页每隔3秒轮询请求内容,避免出现空白
  • 横幅大小,BookStack管理后台可控,APP根据后端设定的横幅宽高比例调整横幅大小
  • 内容阅读 blockquote 标签优化

相关链接

BookChatApp 开源地址

  • Gitee: https://gitee.com/truthhun/BookChatApp
  • GitHub: https://github.com/truthhun/BookChatApp

BookChatApp 下载体验

目前BookChatApp已经编译成了iOS APP 和 Android APP,iOS版已上架APP store,Android版也托管到了蒲公英提供下载体验。

地址: https://www.bookstack.cn/app

图片预览

继续阅读 »

介绍

通用书籍阅读APP,BookChat 的 uni-app 实现版本,支持多端分发,编译生成 Android 和 iOS 手机APP以及各平台的小程序。

使用BookChatApp,您可以轻松地将您的电子书、文档手册和在线书籍分发到各个小程序平台,以及编译生成手机APP发布到各大手机软件市场供用户下载和使用。

升级日志

  • 修复登录前后,banner关于我们的链接跳转不一样的问题
  • iOS首次打开APP未授权网络访问的时候,首页每隔3秒轮询请求内容,避免出现空白
  • 横幅大小,BookStack管理后台可控,APP根据后端设定的横幅宽高比例调整横幅大小
  • 内容阅读 blockquote 标签优化

相关链接

BookChatApp 开源地址

  • Gitee: https://gitee.com/truthhun/BookChatApp
  • GitHub: https://github.com/truthhun/BookChatApp

BookChatApp 下载体验

目前BookChatApp已经编译成了iOS APP 和 Android APP,iOS版已上架APP store,Android版也托管到了蒲公英提供下载体验。

地址: https://www.bookstack.cn/app

图片预览

收起阅读 »

uni-app 云打包安装后白屏,自我总结

白屏 云打包 App打包 uni_app

前面因为项目更新 ,我也遇到了这个问题,以前一直打包问题。这次打包安装后白屏
我自己在网上找,在官网找答案。搞了4天,人都懵了。
好了话不多说。
我把自己解决方法说一下:
我引入了某些不支持的外部js。我引的其中一个js 里面就在报错,我也是醉了 。删除后 减少了部分报错 。
我新建了一个项目 把需要用到的js css pages文件放进去。pages.json文件不要动 或者只放一个初始页,看报不报错。
然后一部分一部分的把页面弄进去。然后就正常了。
可能描述的不是很清楚。
有遇到同样问题的小伙伴不知道怎么解决可以问我。QQ:472014848
也希望能帮到你们

这是我使用自定义基座打包后控制台输出的:
28:26.868 21494 21515 E console : [ERROR] reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->ReferenceError: Can't find variable: Intl
17:28:30.343 28:26.868 21494 21515 E console : getTemplateInfo== template md5 24d45a4c7bc9db516aa05f75cde2f95a length 7129312 base64 md5 JNRaTHvJ21FqoF91zeL5Wg== response header {"templateSourceBase64MD5":["JNRaTHvJ21FqoF91zeL5Wg=="],"templateSourceMD5":["24d45a4c7bc9db516aa05f75cde2f95a"]}

继续阅读 »

前面因为项目更新 ,我也遇到了这个问题,以前一直打包问题。这次打包安装后白屏
我自己在网上找,在官网找答案。搞了4天,人都懵了。
好了话不多说。
我把自己解决方法说一下:
我引入了某些不支持的外部js。我引的其中一个js 里面就在报错,我也是醉了 。删除后 减少了部分报错 。
我新建了一个项目 把需要用到的js css pages文件放进去。pages.json文件不要动 或者只放一个初始页,看报不报错。
然后一部分一部分的把页面弄进去。然后就正常了。
可能描述的不是很清楚。
有遇到同样问题的小伙伴不知道怎么解决可以问我。QQ:472014848
也希望能帮到你们

这是我使用自定义基座打包后控制台输出的:
28:26.868 21494 21515 E console : [ERROR] reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->ReferenceError: Can't find variable: Intl
17:28:30.343 28:26.868 21494 21515 E console : getTemplateInfo== template md5 24d45a4c7bc9db516aa05f75cde2f95a length 7129312 base64 md5 JNRaTHvJ21FqoF91zeL5Wg== response header {"templateSourceBase64MD5":["JNRaTHvJ21FqoF91zeL5Wg=="],"templateSourceMD5":["24d45a4c7bc9db516aa05f75cde2f95a"]}

收起阅读 »

H5发布访问页面空白

按照官网流程发布,放到服务器根目录,这个时候访问就是空白页面。我一直以为是我这边发布的时候配置有问题,到处找解决办法,打了N次包都不行。最后是因为服务器的地址指向没有指向我打包的h5文件,直接指向了服务器的根目录。这个时候改一下地址指向访问页面就出来了(例:www.xxx.com:8000/服务器根目录/h5)

继续阅读 »

按照官网流程发布,放到服务器根目录,这个时候访问就是空白页面。我一直以为是我这边发布的时候配置有问题,到处找解决办法,打了N次包都不行。最后是因为服务器的地址指向没有指向我打包的h5文件,直接指向了服务器的根目录。这个时候改一下地址指向访问页面就出来了(例:www.xxx.com:8000/服务器根目录/h5)

收起阅读 »

Android离线SDK解决使用UniPush和个推推送违反谷歌应用商店(GooglePlay)个人和敏感信息政策的问题

uniapp

自Android-SDK@2.3.4.70239_20191014版开始,离线SDK更新google play版个推SDK,解决了提交google play违反相关政策的问题。

新版SDK添加aps-igexin-gp-release.aar和aps-unipush-gp-release.aar,打包应用上传google play时,替换原aps-igexin-release.aar或aps-unipush-release.aar。注意,google play版SDK与原版SDK存在冲突,所以使用时只能保留其中一个。

AndroidManifest.xml配置

google play版UniPush配置

在AndroidManifest.xml中添加如下配置。

        <activity  
            android:name="com.igexin.sdk.PrivacyActivity"  
            android:exported="false"/>  
google play版个推配置

在原个推离线配置基础上将如下配置添加到AndroidManifest.xml中。原个推配置参考:Android平台离线打包推送插件配置或SDK中的Feature-Android.xls文件。

        <service  
            android:name="io.dcloud.feature.apsGt.GTPushDevService"  
            android:exported="true"  
            android:label="PushService"  
            android:process=":pushservice" />  
        <activity  
            android:name="com.igexin.sdk.PrivacyActivity"  
            android:exported="false"/>  

aps-igexin-gp-release.aar和aps-unipush-gp-release.aar位于离线SDK/libs下。

继续阅读 »

自Android-SDK@2.3.4.70239_20191014版开始,离线SDK更新google play版个推SDK,解决了提交google play违反相关政策的问题。

新版SDK添加aps-igexin-gp-release.aar和aps-unipush-gp-release.aar,打包应用上传google play时,替换原aps-igexin-release.aar或aps-unipush-release.aar。注意,google play版SDK与原版SDK存在冲突,所以使用时只能保留其中一个。

AndroidManifest.xml配置

google play版UniPush配置

在AndroidManifest.xml中添加如下配置。

        <activity  
            android:name="com.igexin.sdk.PrivacyActivity"  
            android:exported="false"/>  
google play版个推配置

在原个推离线配置基础上将如下配置添加到AndroidManifest.xml中。原个推配置参考:Android平台离线打包推送插件配置或SDK中的Feature-Android.xls文件。

        <service  
            android:name="io.dcloud.feature.apsGt.GTPushDevService"  
            android:exported="true"  
            android:label="PushService"  
            android:process=":pushservice" />  
        <activity  
            android:name="com.igexin.sdk.PrivacyActivity"  
            android:exported="false"/>  

aps-igexin-gp-release.aar和aps-unipush-gp-release.aar位于离线SDK/libs下。

收起阅读 »

小程序包括uniapp针对安全区域env(safe-area-inset-*)兼容

安全区 css uniapp

以前做webapp的时候,在uc手机浏览器及个别浏览器下使用constant(safe-area-inset-top)和env(safe-area-inset-top)会有不兼容情况,甚至出现样式错误
于是在:root下去定义css变量。
但是小程序或者uniapp下是是不可以的。那么,真的要uni-app 全面屏适配(iphoneX适配)及安全区设置一样写3条css兼容吗?
其实不用,将page替换:root即可,上代码


page {  
    --safe-area-inset-top: 0px;  
    --safe-area-inset-right: 0px;  
    --safe-area-inset-bottom: 0px;  
    --safe-area-inset-left: 0px;  

}  

@supports (top: constant(safe-area-inset-top)) {  
    page {  
        --safe-area-inset-top: constant(safe-area-inset-top);  
        --safe-area-inset-right: constant(safe-area-inset-right);  
        --safe-area-inset-bottom: constant(safe-area-inset-bottom);  
        --safe-area-inset-left: constant(safe-area-inset-left);  
    }  

}  

@supports (top: env(safe-area-inset-top)) {  
    page {  
        --safe-area-inset-top: env(safe-area-inset-top);  
        --safe-area-inset-right: env(safe-area-inset-right);  
        --safe-area-inset-bottom: env(safe-area-inset-bottom);  
        --safe-area-inset-left: env(safe-area-inset-left);  
    }  
}  

```用法:  
1、margin-top: var(--status-bar-height);  
2、height: calc(100vh - 88rpx - 100rpx - var(--safe-area-inset-bottom) - var(--status-bar-height));
继续阅读 »

以前做webapp的时候,在uc手机浏览器及个别浏览器下使用constant(safe-area-inset-top)和env(safe-area-inset-top)会有不兼容情况,甚至出现样式错误
于是在:root下去定义css变量。
但是小程序或者uniapp下是是不可以的。那么,真的要uni-app 全面屏适配(iphoneX适配)及安全区设置一样写3条css兼容吗?
其实不用,将page替换:root即可,上代码


page {  
    --safe-area-inset-top: 0px;  
    --safe-area-inset-right: 0px;  
    --safe-area-inset-bottom: 0px;  
    --safe-area-inset-left: 0px;  

}  

@supports (top: constant(safe-area-inset-top)) {  
    page {  
        --safe-area-inset-top: constant(safe-area-inset-top);  
        --safe-area-inset-right: constant(safe-area-inset-right);  
        --safe-area-inset-bottom: constant(safe-area-inset-bottom);  
        --safe-area-inset-left: constant(safe-area-inset-left);  
    }  

}  

@supports (top: env(safe-area-inset-top)) {  
    page {  
        --safe-area-inset-top: env(safe-area-inset-top);  
        --safe-area-inset-right: env(safe-area-inset-right);  
        --safe-area-inset-bottom: env(safe-area-inset-bottom);  
        --safe-area-inset-left: env(safe-area-inset-left);  
    }  
}  

```用法:  
1、margin-top: var(--status-bar-height);  
2、height: calc(100vh - 88rpx - 100rpx - var(--safe-area-inset-bottom) - var(--status-bar-height));
收起阅读 »

实现扫描二维码和相册识别二维码 html5plus

扫码 HTML5+

废话不多说直接上源码,如有不足,请留言

<template>  
  <div class="scan">  
    <header>  
      <p @click="closeScan">返回</p>  
      <span>请扫码二维码</span>  
      <p @click="scanImg">相册</p>  
    </header>  
    <div id="bcid">  
      <div style="height:40%"></div>  
      <p class="tip">...载入中...</p>  
    </div>  
  </div>  
</template>

下面是js部分

<script type='text/ecmascript-6'>  
let scan = null;  
export default {  
  data() {  
    return {  
      codeUrl: ""  
    };  
  },  
  mounted() {  
    //跳转时自动开启  
    this.startRecognize();  
  },  
  methods: {  
    // 创建扫描控件  
    startRecognize() {  
      let that = this;  
      if (!window.plus) return;  
      scan = new plus.barcode.Barcode(  
        "bcid",  
        [plus.barcode.QR, plus.barcode.EAN8, plus.barcode.EAN13],  
        {  
          frameColor: "#009DE2",  
          scanbarColor: "#009DE2"  
        }  
      );  
      //scan.onmarked = onmarked;  

      // 开始扫描  
      //scan.start();  
      function onmarked(type, result, file) {  
        switch (type) {  
          case plus.barcode.QR:  
            type = "QR";  
            break;  
          case plus.barcode.EAN13:  
            type = "EAN13";  
            break;  
          case plus.barcode.EAN8:  
            type = "EAN8";  
            break;  
          default:  
            type = "其它" + type;  
            break;  
        }  
        result = result.replace(/\n/g, "");  
        that.codeUrl = result;  
        window.localStorage.codeUrl = result;  
       // alert(result);  
        //that.closeScan();  
      }  
    },  
    // 关闭返回  
    closeScan() {  
      if (!window.plus) return;  
      scan.close();  
      this.$router.push({ path: "/home" });  
    },  
    scanImg() {  
      // 从系统相册选择文件  
      if (!window.plus) return;  
      plus.gallery.pick(  
        function(path) {  
         // alert(path);  
          plus.barcode.scan(  
            path,  
            function(type, result) {  
             // alert("Scan success:(" + type + ")" + result);  
              window.localStorage.codeUrl2 = result;  
            },  
            function(e) {  
              console.log(e);  
              window.localStorage.codeUrl2 = e;  
              plus.nativeUI.alert("如果图片无法识别,请用扫码上传");  
            }  
          );  
        },  
        function(e) {  
          alert("取消选择图片");  
        },  
        { filter: "image" }  
      );  
    }  
  }  
};  
</script>

下面是样式可以自行写

<style lang="scss">  
.scan {  
  height: 100%;  
  #bcid {  
    width: 100%;  
    position: absolute;  
    left: 0;  
    right: 0;  
    top: 1rem;  
    bottom: 0;  
    text-align: center;  
    color: #fff;  
    background: #ccc;  
  }  
  header {  
    position: absolute;  
    display: flex;  
    justify-content: space-between;  
    font-size: 16px;  
    color:#009DE2;  
    left: 0.3rem;  
    top: 0;  
    right: 0.3rem;  
    height: 1rem;  
    line-height: 1rem;  
    z-index: 2;  
    span{  
      color: #000;  
    }  
  }  
}  
</style>

觉得有用就关注点个赞吧,么么哒

继续阅读 »

废话不多说直接上源码,如有不足,请留言

<template>  
  <div class="scan">  
    <header>  
      <p @click="closeScan">返回</p>  
      <span>请扫码二维码</span>  
      <p @click="scanImg">相册</p>  
    </header>  
    <div id="bcid">  
      <div style="height:40%"></div>  
      <p class="tip">...载入中...</p>  
    </div>  
  </div>  
</template>

下面是js部分

<script type='text/ecmascript-6'>  
let scan = null;  
export default {  
  data() {  
    return {  
      codeUrl: ""  
    };  
  },  
  mounted() {  
    //跳转时自动开启  
    this.startRecognize();  
  },  
  methods: {  
    // 创建扫描控件  
    startRecognize() {  
      let that = this;  
      if (!window.plus) return;  
      scan = new plus.barcode.Barcode(  
        "bcid",  
        [plus.barcode.QR, plus.barcode.EAN8, plus.barcode.EAN13],  
        {  
          frameColor: "#009DE2",  
          scanbarColor: "#009DE2"  
        }  
      );  
      //scan.onmarked = onmarked;  

      // 开始扫描  
      //scan.start();  
      function onmarked(type, result, file) {  
        switch (type) {  
          case plus.barcode.QR:  
            type = "QR";  
            break;  
          case plus.barcode.EAN13:  
            type = "EAN13";  
            break;  
          case plus.barcode.EAN8:  
            type = "EAN8";  
            break;  
          default:  
            type = "其它" + type;  
            break;  
        }  
        result = result.replace(/\n/g, "");  
        that.codeUrl = result;  
        window.localStorage.codeUrl = result;  
       // alert(result);  
        //that.closeScan();  
      }  
    },  
    // 关闭返回  
    closeScan() {  
      if (!window.plus) return;  
      scan.close();  
      this.$router.push({ path: "/home" });  
    },  
    scanImg() {  
      // 从系统相册选择文件  
      if (!window.plus) return;  
      plus.gallery.pick(  
        function(path) {  
         // alert(path);  
          plus.barcode.scan(  
            path,  
            function(type, result) {  
             // alert("Scan success:(" + type + ")" + result);  
              window.localStorage.codeUrl2 = result;  
            },  
            function(e) {  
              console.log(e);  
              window.localStorage.codeUrl2 = e;  
              plus.nativeUI.alert("如果图片无法识别,请用扫码上传");  
            }  
          );  
        },  
        function(e) {  
          alert("取消选择图片");  
        },  
        { filter: "image" }  
      );  
    }  
  }  
};  
</script>

下面是样式可以自行写

<style lang="scss">  
.scan {  
  height: 100%;  
  #bcid {  
    width: 100%;  
    position: absolute;  
    left: 0;  
    right: 0;  
    top: 1rem;  
    bottom: 0;  
    text-align: center;  
    color: #fff;  
    background: #ccc;  
  }  
  header {  
    position: absolute;  
    display: flex;  
    justify-content: space-between;  
    font-size: 16px;  
    color:#009DE2;  
    left: 0.3rem;  
    top: 0;  
    right: 0.3rem;  
    height: 1rem;  
    line-height: 1rem;  
    z-index: 2;  
    span{  
      color: #000;  
    }  
  }  
}  
</style>

觉得有用就关注点个赞吧,么么哒

收起阅读 »

uni框架中,有关H5页面设置ico,页面标题栏log小图标

第一步,在项目根目录创建index.html.

如图

然后再index.html中复制一下代码

这段代码,在官方文档中有 地址:https://uniapp.dcloud.io/collocation/manifest?id=%e5%ae%8c%e6%95%b4-manifestjson 有关自定义模板的

第二步,将ico图标放入根目录的/static/img 中,如图:

第三步,在创建的index.html文件中加入代码

第四步,在manifest.json中H5配置中配置自定义模板,如图:

最后,配置好之后,编译h5文件,放在本地服务器中预览,是否达到效果

继续阅读 »

第一步,在项目根目录创建index.html.

如图

然后再index.html中复制一下代码

这段代码,在官方文档中有 地址:https://uniapp.dcloud.io/collocation/manifest?id=%e5%ae%8c%e6%95%b4-manifestjson 有关自定义模板的

第二步,将ico图标放入根目录的/static/img 中,如图:

第三步,在创建的index.html文件中加入代码

第四步,在manifest.json中H5配置中配置自定义模板,如图:

最后,配置好之后,编译h5文件,放在本地服务器中预览,是否达到效果

收起阅读 »