HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

nui-app h5微信分享的jweixin demo

微信分享 分享插件

第一步:npm install jweixin-module --save
第二步:在main.js里或者具体的页面这样写

import jswx from 'jweixin-module/out/index.js'  
 let wx_config = “后台返回的config”  

                     jswx.config(  
                     {  
                         debug:false,  
                         appId:wx_config.appId, // 必填,公众号的唯一标识  
                         timestamp:wx_config.timestamp , // 必填,生成签名的时间戳  
                         nonceStr: wx_config.nonceStr, // 必填,生成签名的随机串  
                         signature: wx_config.signature,// 必填,签名  
                         jsApiList:wx_config.jsApiList // 必填,需要使用的JS接口列表          
                     }                                 
                     );  
            jswx.ready(()=>{  
                                          //分享给朋友  
                    jswx.onMenuShareTimeline({  
                        title: 'xxxx', // 分享标题  
                        link: 'https://www.xxx.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致  
                        imgUrl: 'https:///www.xxx.com/icon.png', // 分享图标  
                        success: function () {  
                        // 用户点击了分享后执行的回调函数  
                    },  
                     });      
                                         //分享朋友圈  
                     jswx.onMenuShareAppMessage({  
                            title: 'xxxx', // 分享标题  
                            desc: 'xxxx', // 分享描述  
                            link: 'https://www.xxx.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致  
                        imgUrl: 'https:///www.xxx.com/icon.png', // 分享图标  
                            success: function () {  
                             uni.showToast({  
                                    title: '分享成功',  
                                    duration: 2000  
                                });  
                            }  
                            });  
                })  

//以上

亲测可用,再有问题就是后台的锅了,怼他们。。。。。还有一个,如果一切正常报:invalid Signature ,那有可能是后台需要获取你前端当前页面的href,否则一直会报这个错,你获取window.location.href给它,如果是tp5的话,应该是

$url = ‘当前链接(前端获取分享那页的链接:window.location.href,传过来这里)’//这步非常重要,官方文档都没有的  
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";  

    $signature = sha1($string);

生成签名的这个位置

最终效果

继续阅读 »

第一步:npm install jweixin-module --save
第二步:在main.js里或者具体的页面这样写

import jswx from 'jweixin-module/out/index.js'  
 let wx_config = “后台返回的config”  

                     jswx.config(  
                     {  
                         debug:false,  
                         appId:wx_config.appId, // 必填,公众号的唯一标识  
                         timestamp:wx_config.timestamp , // 必填,生成签名的时间戳  
                         nonceStr: wx_config.nonceStr, // 必填,生成签名的随机串  
                         signature: wx_config.signature,// 必填,签名  
                         jsApiList:wx_config.jsApiList // 必填,需要使用的JS接口列表          
                     }                                 
                     );  
            jswx.ready(()=>{  
                                          //分享给朋友  
                    jswx.onMenuShareTimeline({  
                        title: 'xxxx', // 分享标题  
                        link: 'https://www.xxx.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致  
                        imgUrl: 'https:///www.xxx.com/icon.png', // 分享图标  
                        success: function () {  
                        // 用户点击了分享后执行的回调函数  
                    },  
                     });      
                                         //分享朋友圈  
                     jswx.onMenuShareAppMessage({  
                            title: 'xxxx', // 分享标题  
                            desc: 'xxxx', // 分享描述  
                            link: 'https://www.xxx.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致  
                        imgUrl: 'https:///www.xxx.com/icon.png', // 分享图标  
                            success: function () {  
                             uni.showToast({  
                                    title: '分享成功',  
                                    duration: 2000  
                                });  
                            }  
                            });  
                })  

//以上

亲测可用,再有问题就是后台的锅了,怼他们。。。。。还有一个,如果一切正常报:invalid Signature ,那有可能是后台需要获取你前端当前页面的href,否则一直会报这个错,你获取window.location.href给它,如果是tp5的话,应该是

$url = ‘当前链接(前端获取分享那页的链接:window.location.href,传过来这里)’//这步非常重要,官方文档都没有的  
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";  

    $signature = sha1($string);

生成签名的这个位置

最终效果

收起阅读 »

公告:uni-app V3版本公测;小米商店/应用宝隐私问题公告;关于Apple发布的App Updates for HTML5 Apps 的说明

公告

关于Apple发布的 App Updates for HTML5 Apps 的说明

详见:https://ask.dcloud.net.cn/article/36654

重磅:uni-app V3版本公测,App端性能、功能大幅提升

更快的启动速度、更多vue语法支持、更方便的开发体验,详见:https://ask.dcloud.net.cn/article/36599

小米应用商店/应用宝隐私管理问题公告

微信小程序2.9.3基础库,input事件失效

微信基础库2.9.3版本在微信开发者工具模拟器端,存在input事件失效的Bug,真机运行没问题。

该Bug影响uni-app在微信开发者工具模拟器端的运行测试(同样真机运行没问题),具体表现有:

  • input事件不触发
  • 表单双向数据绑定失效

该问题目前微信官方已受理(详见微信社区),目前建议开发者临时手动降低基础库版本为2.9.2uni-app今天也会发布紧急更新版,将微信基础库版本策略由默认最新修改为2.9.2,临时解决微信平台的Bug。

阿里小程序IDE官方内嵌uni-app,为开发者提供多端开发服务

详见:https://ask.dcloud.net.cn/article/36485

老版iOS基座过期无法安装的公告

老版HBuilder及HBuilderX 2.3.3.20190923以下的版本,由于iOS企业证书过期,会导致真机运行时默认基座无法安装到iOS设备。需升级新版HBuilderX,详见:https://ask.dcloud.net.cn/article/36523

HBuilderX(alpha)云端打包提交AppStore报WARNING ITMS-90703的公告

详见:https://ask.dcloud.net.cn/article/36588

uni-app 2.3 新版使用注意

uni-app升级,可能会导致老版代码无法正常运行。这并非DCloud所愿,引发这类问题的原因包括:

  1. 三方平台升级,比如iOS13升级导致很多问题,还引发微信等sdk升级的连锁反应
  2. 因为性能问题。为了让应用性能更高,重构了某些实现,废弃了影响性能的写法。比如废弃非自定义组件模式。
    最近新版升级注意详见下:
    • 2.3.4起,tabbar改为纯原生方式实现,无法再通过plus.webview获取tabbar。并且App端高度从之前的56px调整为50px,目前是为了和H5端统一(H5一直是50px)。如需调节回原来的56px,可以在pages.json里配置高度(后期其他端也会支持高度设置,如果不想各端一致,可以使用条件编译)。之前版本iOS上tabbar页面在内存不足时会白屏,也一同解决了
    • 2.3.4起,内置了bindingx,无需再手动import npm库。直接uni.requireNativePlugin('bindingx')即可使用。
    • 2.3.4起,微信的新版分享登录支付SDK升级,要求配置通用链接,否则会打包失败,详见https://ask.dcloud.net.cn/article/36445
    • 5+App或uni-app的web-view组件在iOS上默认改为WKWebview后,会产生跨域导致的联网失败问题、本地跨目录Http请求失败问题、js原生加密失效、拍照等大内存占用操作白屏等问题,详见:https://ask.dcloud.net.cn/article/36348
    • uni-app H5平台 新增 icon 组件,导致 uni-icon 不显示的问题,详见:https://ask.dcloud.net.cn/article/36404
    • 升级后运行到小程序平台,提示 tongji.dcloud.io 不在安全域名名单的问题:这是因为新增了uni统计,一份报表看全端数据,详见 https://tongji.dcloud.io。在小程序端,使用uni统计需在安全域名名单中新增 tongji.dcloud.io 。如不需要uni统计,可在manifest中关闭。开通和关闭详见:https://ask.dcloud.net.cn/article/36303
    • 新版默认为自定义组件模式,而老版如果manifest不指定则是非自定义组件模式。如果新版无法编译老项目大多因为这个原因。详见:https://ask.dcloud.net.cn/article/36385
    • 2.3.4起,Android平台Webview窗口先隐藏(hide)再添加(append)到父窗口后仍然会显示的Bug,导致mui中tabbar-webview显示有问题。2.3.8版本已修复。

iOS13适配

iOS13适配工作已完成,请升级新版2.3.5。

  • 关于iOS13上uni-app页面无法滚动的问题,详见https://ask.dcloud.net.cn/article/36410
  • 微信等三方SDK伴随iOS13都升级了,在HBuilderX 2.3.4中已经升级完毕,iOS平台提交云端打包需要配置通用链接(Universal Link),否则会打包失败,详见https://ask.dcloud.net.cn/article/36445
  • 2.2.5版-2.3.3版,iOS上带tab的页面在手机内存不足时可能出现白屏,在HBuilderX 2.3.4 中已修复。

iOS13引发了Appstore审核的2个政策变化,需注意

uni-app 2.3 重要更新如下:

  • 新增了uni统计,一份报表看全端数据,详见 https://tongji.dcloud.io
    在小程序端,使用uni统计需在安全域名名单中新增 tongji.dcloud.io 。如不需要uni统计,可在manifest中关闭。开通和关闭详见:https://ask.dcloud.net.cn/article/36303
  • 新增 wxs
  • nvue支持vuex
  • App平台 适配 iOS13
  • App平台 优化 页面背景样式生效时机,解决深色背景等特定场景下,页面切换时闪白的问题
  • App平台 优化 Android上使用tab的应用降低内存占用,转场动画和页面滚动更平顺
  • App平台 修复 个推SDK引起的蓝牙权限影响Appstore审核的问题以及隐私政策引发Google Play Store下架问题
  • App平台 支持原生凸起的tabbar
  • App平台 支持打包时原生混淆加密nvue文件
  • App平台 适配 MIUI11,解决toast背景为白色,导致前景色无法看清的问题

关于2019年11月1日起,uni-app不再支持非自定义组件模式的公告:

详见:https://ask.dcloud.net.cn/article/36385

DCloud帮Vue官网提供免费Vue视频教程:

详见:https://ask.dcloud.net.cn/article/36363

vue conf大会上DCloud CTO崔红保的演讲

uni-app的性能为什么高于微信原生开发和其他小程序框架?来看这个视频讲解框架底层的原理:
https://v.qq.com/x/page/r0886mn8v6l.html

继续阅读 »

关于Apple发布的 App Updates for HTML5 Apps 的说明

详见:https://ask.dcloud.net.cn/article/36654

重磅:uni-app V3版本公测,App端性能、功能大幅提升

更快的启动速度、更多vue语法支持、更方便的开发体验,详见:https://ask.dcloud.net.cn/article/36599

小米应用商店/应用宝隐私管理问题公告

微信小程序2.9.3基础库,input事件失效

微信基础库2.9.3版本在微信开发者工具模拟器端,存在input事件失效的Bug,真机运行没问题。

该Bug影响uni-app在微信开发者工具模拟器端的运行测试(同样真机运行没问题),具体表现有:

  • input事件不触发
  • 表单双向数据绑定失效

该问题目前微信官方已受理(详见微信社区),目前建议开发者临时手动降低基础库版本为2.9.2uni-app今天也会发布紧急更新版,将微信基础库版本策略由默认最新修改为2.9.2,临时解决微信平台的Bug。

阿里小程序IDE官方内嵌uni-app,为开发者提供多端开发服务

详见:https://ask.dcloud.net.cn/article/36485

老版iOS基座过期无法安装的公告

老版HBuilder及HBuilderX 2.3.3.20190923以下的版本,由于iOS企业证书过期,会导致真机运行时默认基座无法安装到iOS设备。需升级新版HBuilderX,详见:https://ask.dcloud.net.cn/article/36523

HBuilderX(alpha)云端打包提交AppStore报WARNING ITMS-90703的公告

详见:https://ask.dcloud.net.cn/article/36588

uni-app 2.3 新版使用注意

uni-app升级,可能会导致老版代码无法正常运行。这并非DCloud所愿,引发这类问题的原因包括:

  1. 三方平台升级,比如iOS13升级导致很多问题,还引发微信等sdk升级的连锁反应
  2. 因为性能问题。为了让应用性能更高,重构了某些实现,废弃了影响性能的写法。比如废弃非自定义组件模式。
    最近新版升级注意详见下:
    • 2.3.4起,tabbar改为纯原生方式实现,无法再通过plus.webview获取tabbar。并且App端高度从之前的56px调整为50px,目前是为了和H5端统一(H5一直是50px)。如需调节回原来的56px,可以在pages.json里配置高度(后期其他端也会支持高度设置,如果不想各端一致,可以使用条件编译)。之前版本iOS上tabbar页面在内存不足时会白屏,也一同解决了
    • 2.3.4起,内置了bindingx,无需再手动import npm库。直接uni.requireNativePlugin('bindingx')即可使用。
    • 2.3.4起,微信的新版分享登录支付SDK升级,要求配置通用链接,否则会打包失败,详见https://ask.dcloud.net.cn/article/36445
    • 5+App或uni-app的web-view组件在iOS上默认改为WKWebview后,会产生跨域导致的联网失败问题、本地跨目录Http请求失败问题、js原生加密失效、拍照等大内存占用操作白屏等问题,详见:https://ask.dcloud.net.cn/article/36348
    • uni-app H5平台 新增 icon 组件,导致 uni-icon 不显示的问题,详见:https://ask.dcloud.net.cn/article/36404
    • 升级后运行到小程序平台,提示 tongji.dcloud.io 不在安全域名名单的问题:这是因为新增了uni统计,一份报表看全端数据,详见 https://tongji.dcloud.io。在小程序端,使用uni统计需在安全域名名单中新增 tongji.dcloud.io 。如不需要uni统计,可在manifest中关闭。开通和关闭详见:https://ask.dcloud.net.cn/article/36303
    • 新版默认为自定义组件模式,而老版如果manifest不指定则是非自定义组件模式。如果新版无法编译老项目大多因为这个原因。详见:https://ask.dcloud.net.cn/article/36385
    • 2.3.4起,Android平台Webview窗口先隐藏(hide)再添加(append)到父窗口后仍然会显示的Bug,导致mui中tabbar-webview显示有问题。2.3.8版本已修复。

iOS13适配

iOS13适配工作已完成,请升级新版2.3.5。

  • 关于iOS13上uni-app页面无法滚动的问题,详见https://ask.dcloud.net.cn/article/36410
  • 微信等三方SDK伴随iOS13都升级了,在HBuilderX 2.3.4中已经升级完毕,iOS平台提交云端打包需要配置通用链接(Universal Link),否则会打包失败,详见https://ask.dcloud.net.cn/article/36445
  • 2.2.5版-2.3.3版,iOS上带tab的页面在手机内存不足时可能出现白屏,在HBuilderX 2.3.4 中已修复。

iOS13引发了Appstore审核的2个政策变化,需注意

uni-app 2.3 重要更新如下:

  • 新增了uni统计,一份报表看全端数据,详见 https://tongji.dcloud.io
    在小程序端,使用uni统计需在安全域名名单中新增 tongji.dcloud.io 。如不需要uni统计,可在manifest中关闭。开通和关闭详见:https://ask.dcloud.net.cn/article/36303
  • 新增 wxs
  • nvue支持vuex
  • App平台 适配 iOS13
  • App平台 优化 页面背景样式生效时机,解决深色背景等特定场景下,页面切换时闪白的问题
  • App平台 优化 Android上使用tab的应用降低内存占用,转场动画和页面滚动更平顺
  • App平台 修复 个推SDK引起的蓝牙权限影响Appstore审核的问题以及隐私政策引发Google Play Store下架问题
  • App平台 支持原生凸起的tabbar
  • App平台 支持打包时原生混淆加密nvue文件
  • App平台 适配 MIUI11,解决toast背景为白色,导致前景色无法看清的问题

关于2019年11月1日起,uni-app不再支持非自定义组件模式的公告:

详见:https://ask.dcloud.net.cn/article/36385

DCloud帮Vue官网提供免费Vue视频教程:

详见:https://ask.dcloud.net.cn/article/36363

vue conf大会上DCloud CTO崔红保的演讲

uni-app的性能为什么高于微信原生开发和其他小程序框架?来看这个视频讲解框架底层的原理:
https://v.qq.com/x/page/r0886mn8v6l.html

收起阅读 »

uni-app微信小程序运行

微信小程序 小程序 uniapp 微信开发者工具

uni-app微信小程序运行

github地址,喜欢的可以star下哦

新手可能使用uni-app开发时,想在微信开发者工具预览,经常会遇到各种问题,在此写一个操作步骤

新手可能遇到过这个的问题

操作步骤

运行微信开发者工具前需要一些配置

创建uni-app项目这里步骤忽略了。。。,默认你们已经创建好了uni-app项目了

步骤一

步骤二

步骤三

步骤四

步骤五

这样就代表运行成功了,赶快去试试吧

继续阅读 »

uni-app微信小程序运行

github地址,喜欢的可以star下哦

新手可能使用uni-app开发时,想在微信开发者工具预览,经常会遇到各种问题,在此写一个操作步骤

新手可能遇到过这个的问题

操作步骤

运行微信开发者工具前需要一些配置

创建uni-app项目这里步骤忽略了。。。,默认你们已经创建好了uni-app项目了

步骤一

步骤二

步骤三

步骤四

步骤五

这样就代表运行成功了,赶快去试试吧

收起阅读 »

Windows申请iOS证书p12及描述文件mobileprovision

iOS打包

使用自己证书打包iOS时需要上传两个iOS证书文件p12及描述文件mobileprovision

以申请一份iOS发布证书为例,iOS发布证书用于上架!

一、申请iOS发布证书(p12文件)

Windows申请iOS证书需要用到Appuploader这个软件

如果还没安装Appuploader先安装好

Appuploader下载链接

1.1、登录软件后,点击证书进入,点击右下角+ADD选择,下拉选择发布证书

证书名称:不要中文、随意设置

邮箱:随意

密码:证书的密码、比如设置123这样,不用很复杂,记好、打包时要用、很重要

应用id:这里不用选

点击ok创建。

1.2、创建成功后,找到刚创建的发布证书(iOS Distribution这个类型的就是发布证书,如果之前创建过请看过期时间就知道哪个是新创建的了),点击p12 文件,下载保存.p12证书文件到电脑。

二、创建iOS发布描述文件(.mobileprovision文件)

2.1、返回Appuploader首页,选择描述文件。

2.2、点击+ ADD,对应选择发布版profile

应用id:选择对应的id(又称套装id,appid,BundleID,包名)

证书:选中全部就行

Devices:设备这里不像选开发版profile时会出现,发布版不用选。

输入名称:不要中文,随意,123之类的就行,注意不要跟之前申请过的名称一样),点击ok创建。

2.3、选择刚创建的发布版描述文件(iOS Distribution这个类型的就是发布描述文件,找刚创建的输入的名称),点击Download下载,保存到电脑

得到了p12及描述文件mobileprovision上传打包即可!

AppID:填写申请描述文件时选择的应用id

profile文件,选择上传配置文件.mobileprovision

私钥证书,上传.p12文件

私钥密码,输入创建p12设置的密码。

然后点击打包。

继续阅读 »

使用自己证书打包iOS时需要上传两个iOS证书文件p12及描述文件mobileprovision

以申请一份iOS发布证书为例,iOS发布证书用于上架!

一、申请iOS发布证书(p12文件)

Windows申请iOS证书需要用到Appuploader这个软件

如果还没安装Appuploader先安装好

Appuploader下载链接

1.1、登录软件后,点击证书进入,点击右下角+ADD选择,下拉选择发布证书

证书名称:不要中文、随意设置

邮箱:随意

密码:证书的密码、比如设置123这样,不用很复杂,记好、打包时要用、很重要

应用id:这里不用选

点击ok创建。

1.2、创建成功后,找到刚创建的发布证书(iOS Distribution这个类型的就是发布证书,如果之前创建过请看过期时间就知道哪个是新创建的了),点击p12 文件,下载保存.p12证书文件到电脑。

二、创建iOS发布描述文件(.mobileprovision文件)

2.1、返回Appuploader首页,选择描述文件。

2.2、点击+ ADD,对应选择发布版profile

应用id:选择对应的id(又称套装id,appid,BundleID,包名)

证书:选中全部就行

Devices:设备这里不像选开发版profile时会出现,发布版不用选。

输入名称:不要中文,随意,123之类的就行,注意不要跟之前申请过的名称一样),点击ok创建。

2.3、选择刚创建的发布版描述文件(iOS Distribution这个类型的就是发布描述文件,找刚创建的输入的名称),点击Download下载,保存到电脑

得到了p12及描述文件mobileprovision上传打包即可!

AppID:填写申请描述文件时选择的应用id

profile文件,选择上传配置文件.mobileprovision

私钥证书,上传.p12文件

私钥密码,输入创建p12设置的密码。

然后点击打包。

收起阅读 »

在mui.confirm 弹出框中调用mui.back()方法栈溢出问题

文中使用vue.js+mui,重写返回方法,返回上一页前执行方法。
监听 参数变化,true时调用返回方法。
主要代码:

//重写返回方法  
var oldback = mui.back;  

mui.back = function() {  

    rockVue.savaBeforBack();  

};  

var rockVue = new Vue({  
    el: '#rockdeep',  
    data: {  
        issave : false,  
    },  
    methods : function(){  

         savaBeforBack : function(){  
                 var self = this;  
                 mui.confirm('有数据未保存,是否保存', '提示', ['取消', '确认'], function(e) {  
            if(e.index) {  
                self.issave = true;               
            } else {                  
                   self.issave = true;  
            }  

        }, 'div');  

          },  

    },  
    watch : {  
        issave : function(val){  
           if(val){  
                oldback();  
            }  

        },      

    }  
})
继续阅读 »

文中使用vue.js+mui,重写返回方法,返回上一页前执行方法。
监听 参数变化,true时调用返回方法。
主要代码:

//重写返回方法  
var oldback = mui.back;  

mui.back = function() {  

    rockVue.savaBeforBack();  

};  

var rockVue = new Vue({  
    el: '#rockdeep',  
    data: {  
        issave : false,  
    },  
    methods : function(){  

         savaBeforBack : function(){  
                 var self = this;  
                 mui.confirm('有数据未保存,是否保存', '提示', ['取消', '确认'], function(e) {  
            if(e.index) {  
                self.issave = true;               
            } else {                  
                   self.issave = true;  
            }  

        }, 'div');  

          },  

    },  
    watch : {  
        issave : function(val){  
           if(val){  
                oldback();  
            }  

        },      

    }  
})
收起阅读 »

金华地区,工作室、个人接单 uniapp html5plus、网站、原生app外包接单

金华地区,工作室、个人兼职接单 uniapp h5+、网站、原生app外包接单

案例:http://withtime.net
QQ:261732321

金华地区,工作室、个人兼职接单 uniapp h5+、网站、原生app外包接单

案例:http://withtime.net
QQ:261732321

uniApp 安卓多环境打包基础配置

App离线打包 Android

uniApp安卓多环境配置

  1. Build.gradle
  2. AndroidMainfest.xml
  3. libs
  4. assets

Build.gradle

apply plugin: 'com.android.application'  

android {  
    compileSdkVersion 29  
    buildToolsVersion "29.0.1"  
    defaultConfig {  
        applicationId "com.testapp.uniappandroid"  
        minSdkVersion 16  
        targetSdkVersion 29  
        versionCode 1  
        versionName "1.0"  
        flavorDimensions ""  
        ndk {  
            abiFilters 'x86','armeabi-v7a'  //使用uniapp时必须同时选择二者或选其一  
        }  
    }  

    buildTypes {  
        release {  
            minifyEnabled false  
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'  
        }  
    }  

    //使用uniapp时,需复制下面代码  
    /*代码开始*/  
    aaptOptions {  
        additionalParameters '--auto-add-overlay'  
        //noCompress 'foo', 'bar'  
        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"  
    }  

    productFlavors {  

        first {  
            applicationId "com.demo.first"  
            manifestPlaceholders = [  
                    APP_ICON:"@drawable/icon",  
                    APP_NAME:"First"  
            ]  

        }  

        second {  
            applicationId "com.demo.second"  
            manifestPlaceholders = [  
                    APP_ICON:"@drawable/icon",  
                    APP_NAME:"Second"  
            ]  

        }  

    }  

    applicationVariants.all {variant ->  
        variant.outputs.all {output ->  
            output.outputFileName = "${variant.name}.apk"  
        }  
    }  
    /*代码结束*/  
}  

dependencies {  
    implementation fileTree(dir: 'libs', include: ['*.jar'])  

    /*uniApp依赖库*/  
    implementation fileTree(include: ['*.aar'], dir: 'libs')  
    implementation 'com.android.support:appcompat-v7:26.1.0'  
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'  
    /*uniapp所需库-----------------------开始*/  
    implementation 'com.android.support:recyclerview-v7:26.1.0'  
    implementation 'com.alibaba.android:bindingx-core:1.0.3'  
    implementation 'com.alibaba.android:bindingx_weex_plugin:1.0.3'  
    implementation 'com.squareup.okhttp:okhttp:2.3.0'  
    implementation 'com.squareup.okhttp:okhttp-ws:2.3.0'  
    implementation 'com.alibaba:fastjson:1.1.46.android'  
    implementation 'com.facebook.fresco:fresco:1.13.0'  
    implementation "com.facebook.fresco:animated-gif:1.13.0"  
    /*uniapp所需库-----------------------结束*/  
    // 基座需要,必须添加  
    implementation 'com.github.bumptech.glide:glide:4.9.0'  
}  

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="com.testapp.uniappandroid">  

    <application  
        android:name="io.dcloud.application.DCloudApplication"  
        android:allowClearUserData="true"  
        android:icon="${APP_ICON}"  
        android:label="${APP_NAME}"  
        android:largeHeap="true"  
        >  
        <activity  
            android:name="io.dcloud.PandoraEntry"  
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"  
            android:label="${APP_NAME}"  
            android:launchMode="singleTask"  
            android:hardwareAccelerated="true"  
            android:screenOrientation="user"  
            android:windowSoftInputMode="adjustResize" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  

                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  

</manifest>

3 libs

lib.5plus.base-release.aar  
uniapp-release.aar

4 assets

apps/   
data/
继续阅读 »

uniApp安卓多环境配置

  1. Build.gradle
  2. AndroidMainfest.xml
  3. libs
  4. assets

Build.gradle

apply plugin: 'com.android.application'  

android {  
    compileSdkVersion 29  
    buildToolsVersion "29.0.1"  
    defaultConfig {  
        applicationId "com.testapp.uniappandroid"  
        minSdkVersion 16  
        targetSdkVersion 29  
        versionCode 1  
        versionName "1.0"  
        flavorDimensions ""  
        ndk {  
            abiFilters 'x86','armeabi-v7a'  //使用uniapp时必须同时选择二者或选其一  
        }  
    }  

    buildTypes {  
        release {  
            minifyEnabled false  
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'  
        }  
    }  

    //使用uniapp时,需复制下面代码  
    /*代码开始*/  
    aaptOptions {  
        additionalParameters '--auto-add-overlay'  
        //noCompress 'foo', 'bar'  
        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"  
    }  

    productFlavors {  

        first {  
            applicationId "com.demo.first"  
            manifestPlaceholders = [  
                    APP_ICON:"@drawable/icon",  
                    APP_NAME:"First"  
            ]  

        }  

        second {  
            applicationId "com.demo.second"  
            manifestPlaceholders = [  
                    APP_ICON:"@drawable/icon",  
                    APP_NAME:"Second"  
            ]  

        }  

    }  

    applicationVariants.all {variant ->  
        variant.outputs.all {output ->  
            output.outputFileName = "${variant.name}.apk"  
        }  
    }  
    /*代码结束*/  
}  

dependencies {  
    implementation fileTree(dir: 'libs', include: ['*.jar'])  

    /*uniApp依赖库*/  
    implementation fileTree(include: ['*.aar'], dir: 'libs')  
    implementation 'com.android.support:appcompat-v7:26.1.0'  
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'  
    /*uniapp所需库-----------------------开始*/  
    implementation 'com.android.support:recyclerview-v7:26.1.0'  
    implementation 'com.alibaba.android:bindingx-core:1.0.3'  
    implementation 'com.alibaba.android:bindingx_weex_plugin:1.0.3'  
    implementation 'com.squareup.okhttp:okhttp:2.3.0'  
    implementation 'com.squareup.okhttp:okhttp-ws:2.3.0'  
    implementation 'com.alibaba:fastjson:1.1.46.android'  
    implementation 'com.facebook.fresco:fresco:1.13.0'  
    implementation "com.facebook.fresco:animated-gif:1.13.0"  
    /*uniapp所需库-----------------------结束*/  
    // 基座需要,必须添加  
    implementation 'com.github.bumptech.glide:glide:4.9.0'  
}  

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="com.testapp.uniappandroid">  

    <application  
        android:name="io.dcloud.application.DCloudApplication"  
        android:allowClearUserData="true"  
        android:icon="${APP_ICON}"  
        android:label="${APP_NAME}"  
        android:largeHeap="true"  
        >  
        <activity  
            android:name="io.dcloud.PandoraEntry"  
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"  
            android:label="${APP_NAME}"  
            android:launchMode="singleTask"  
            android:hardwareAccelerated="true"  
            android:screenOrientation="user"  
            android:windowSoftInputMode="adjustResize" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  

                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  

</manifest>

3 libs

lib.5plus.base-release.aar  
uniapp-release.aar

4 assets

apps/   
data/
收起阅读 »

西安急聘 混合APP开发者

招聘

西安招聘多端APP开发者,要求会Hbuildx,uniapp,mui,联系QQ:103249 TEL:17899105917

西安招聘多端APP开发者,要求会Hbuildx,uniapp,mui,联系QQ:103249 TEL:17899105917

uni-app 完美解决软键盘把fixed顶起问题

弹出软键盘

出现问题,主要是以下两个方面导致:
1、fixed 定位问题
2、软键盘把viewport page整个高度缩小了。导致顶部去了

=====================================
知道了原理后,解决起来其实就很简单了;
1、 把 fixed 改成absolute
2、通过js计算,把父元素的高度,直接固定; 就可以解决了

继续阅读 »

出现问题,主要是以下两个方面导致:
1、fixed 定位问题
2、软键盘把viewport page整个高度缩小了。导致顶部去了

=====================================
知道了原理后,解决起来其实就很简单了;
1、 把 fixed 改成absolute
2、通过js计算,把父元素的高度,直接固定; 就可以解决了

收起阅读 »

Android 使用 Native.js 调用系统分享 文件给第三应用 QQ、微信 达到发送文件给朋友

Native.JS 系统分享 Android

当应用内,需要把图片或视频或压缩文件等等文件,发给第三方应用时,可以使用Native.js调用系统自带的分享功能来实现.

var main = plus.android.runtimeMainActivity();  
var Intent = plus.android.importClass("android.content.Intent");  
var Uri = plus.android.importClass("android.net.Uri");  
var File = plus.android.importClass("java.io.File");  
var shareIntent = new Intent(Intent.ACTION_SEND);  

var filePath=plus.io.convertLocalFileSystemURL("img/3.jpg"); //把应用内的文件路径转化为手机绝对路径  

shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(new File(filePath)));  
shareIntent.setType("*/*");//此处可发送多种文件  
//shareIntent.setType("application/pdf");//只发送pdf文件  

main.startActivity(Intent.createChooser(shareIntent,"分享文件"));  

http://www.html5-app.com/uploads/file/20181218/20181218193232344354.jpg

原文链接

继续阅读 »

当应用内,需要把图片或视频或压缩文件等等文件,发给第三方应用时,可以使用Native.js调用系统自带的分享功能来实现.

var main = plus.android.runtimeMainActivity();  
var Intent = plus.android.importClass("android.content.Intent");  
var Uri = plus.android.importClass("android.net.Uri");  
var File = plus.android.importClass("java.io.File");  
var shareIntent = new Intent(Intent.ACTION_SEND);  

var filePath=plus.io.convertLocalFileSystemURL("img/3.jpg"); //把应用内的文件路径转化为手机绝对路径  

shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(new File(filePath)));  
shareIntent.setType("*/*");//此处可发送多种文件  
//shareIntent.setType("application/pdf");//只发送pdf文件  

main.startActivity(Intent.createChooser(shareIntent,"分享文件"));  

http://www.html5-app.com/uploads/file/20181218/20181218193232344354.jpg

原文链接

收起阅读 »

iOS 离线集成编译报错解决方案汇总

iOS离线打包

此贴会持续更新,记录iOS离线集成常见编译报错及解决方案,方便大家排查问题

Q: Undefined symbols for architecture ... 如下图


A: 该类问题一般都是因为缺少依赖库导致编译报错,解决方法:仔细查看报错,""中提示的就是找不到的类名或定义的标识名,一般通过名字就能知道该类或标识属于哪个库中,然后将该库添加进来重新编译即可;如上图提示"_OBJCCLASS$_SKStoreProductViewController"类找不到,这个类是在 StoreKit.framework 中,将StoreKit.framework 添加进来即可;

Q: 'xxx' file not found


A: 此类问题根据报错即可知道,是由于 'xxx'文件找不到,一般都是自己不小心删除了,解决方法:从离线SDK中找到该文件,拖入到工程中;

继续阅读 »

此贴会持续更新,记录iOS离线集成常见编译报错及解决方案,方便大家排查问题

Q: Undefined symbols for architecture ... 如下图


A: 该类问题一般都是因为缺少依赖库导致编译报错,解决方法:仔细查看报错,""中提示的就是找不到的类名或定义的标识名,一般通过名字就能知道该类或标识属于哪个库中,然后将该库添加进来重新编译即可;如上图提示"_OBJCCLASS$_SKStoreProductViewController"类找不到,这个类是在 StoreKit.framework 中,将StoreKit.framework 添加进来即可;

Q: 'xxx' file not found


A: 此类问题根据报错即可知道,是由于 'xxx'文件找不到,一般都是自己不小心删除了,解决方法:从离线SDK中找到该文件,拖入到工程中;

收起阅读 »