Name Last Update
.hbuilderx Loading commit data...
alarm-subpackage/alarm-detail Loading commit data...
api Loading commit data...
components Loading commit data...
config Loading commit data...
constant Loading commit data...
device-subpackage/device-detail Loading commit data...
feedback-subpackage/feedback Loading commit data...
js_sdk/wa-permission Loading commit data...
locale Loading commit data...
login-subpackage Loading commit data...
pages Loading commit data...
plugins Loading commit data...
static Loading commit data...
store Loading commit data...
style Loading commit data...
sysnotify-subpackage/sys-notify Loading commit data...
uni_modules Loading commit data...
.gitignore Loading commit data...
App.vue Loading commit data...
README.md Loading commit data...
androidPrivacy.json Loading commit data...
main.js Loading commit data...
manifest.json Loading commit data...
package-lock.json Loading commit data...
package.json Loading commit data...
pages.json Loading commit data...
template.h5.html Loading commit data...
uni.scss Loading commit data...

目录结构及重要文件说明

版本:v1.0.8_release

目录结构

说明

此项目采用的是使用uniapp开发的微信小程序和app,目前兼容app端(android),微信小程序。

项目大致结构如下所示:

├── components // 公共组件 ├── config
│   ├── baseUrl.js // 基础配置(域名、系统信息等) │   ├── amap-wx.js // 此小程序使用到的地图插件 │   ├── common.js // 通用js(小程序更新、app缓存、扫码、定位等) │   ├── componentConfig.js // app升级配置接口(预留,暂时没用到) │   ├── h5Utils.js // h5通用js(包含h5公众号登录等,预留,暂时没用到) │   ├── login.js // 登录js(预留,暂时没用到) │   ├── pay.js // 支付js(预留,暂时没用到) │   └── request.js // 接口配置(基于uview配置) ├── api // 此项目使用到的所有api统一管理 ├── pages // 项目页面 │   ├── index // 首页 │   └── device // 设备 │   └── alert // 告警 │   └── personal // 我的 ├── alarmSubPage // 告警小程序分包页面 │   ├── alarmDetailSubPage
├── deviceSubPage // 设备小程序分包页面 │   ├── deviceDetailSubPage
├── sysNotifySubPage // 通知小程序分包页面 │   ├── sysNotifyPage
├── publicLoginSubPage // 登录小程序分包页面 │   ├── other // 其余页面(包括忘记密码等) │   ├── public // 登录页面 ├── feedBackSubPage // 意见反馈小程序分包页面 │   ├── feedback
├── plugins // 功能js ├── js_sdk // android判断是否有权限插件 ├── static // 静态图片文件 ├── store // vuex ├── style │ ├── common.scss // 公共样式文件 │ └── iconfont.scss // 图标样式 ├── uni_modules
│ ├── mescroll-uni // mescroll分页(此项目所有的分页都基于此) │ ├── uview-ui // uview2.0 │ ├── luyi-tree // 组织结构插件 │ ├── qiun-data-charts // 图表插件 │ ├── uni-popup // 弹出层插件 │ ├── uni-datetime-picker // 时间日期选择插件 ├── unpackage // 项目编译后的文件 ├── App.vue // 项目基础文件 ├── main.js // 项目基础文件 ├── manifest.json // 项目基础文件 ├── uni.scss // 项目基础文件 ├── pages.json // 项目基础文件json ├── README.md // 项目介绍md └── template.h5.html // h5自定义模板

配置文件

请求相关配置

请求相关配置文件在该项目结构的config文件夹内,重要的包括baseUrl.js和request.js等,其中baseUrl.js里包括对服务端的配置项,

只需要修改这些为您自己的服务器地址即可(baseUrl 、baseDrawioUrl、baseWebSocketUrl、socketPrefix )。

request.js里是基于uview封装的服务端请求文件,包括配置服务端api地址、请求超时配置,请求拦截和响应拦截等

配置示例
const baseUrl = "http://xxx.xxx.xxx.xxx:xxx/xxx";
const baseDrawioUrl = "http://xxx.xxx.xxx.xxx:xxx/xxx-xxx";
const baseWebSocketUrl = "xxx.xxx.xxx.xxx:xxx";
const socketPrefix = "ws";
配置项说明

baseUrl:服务端 api地址

baseDrawioUrl :组态地址 注意端口

baseWebSocketUrl :服务端 websocket地址

socketPrefix :websocket 注意前缀 ((https, wss),( http, ws))

注意:socketPrefix在https情况下使用wss,http使用ws

其他通用配置

其他通用配置文件也在项目结构的config文件夹内,主要是与其他功能配合使用,比如地图、小程序更新、app更新等。

  1. amap-wx.js 是uniapp里使用微信小程序地图的配置,里面的配置包含高德地图控制台里申请的key值,把配置好的key值以对象形式传进去即可
   const amapFile = require('@/config/amap-wx.js');
   import { gdMapRequiredKey } from '@/config/gdMapConfig.js';
   var myAmapFun = new amapFile.AMapWX({ key: gdMapRequiredKey });
  1. h5Utils.js 是与h5相关的 ,里面包含浏览器端h5判断是否是微信客户端
   // 浏览器判断是否微信
   export const isWechat = () => {
    let ua = navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == "micromessenger") {
        //console.log('是微信客户端')  
        return true;  
    }else{
           //console.log('不是微信客户端')  
           return false;  
       }
   };
  1. pay.js 是与支付相关的(预留,此项目没使用到,如需使用请自行完成相应逻辑编写),里面包含了小程序和app的支付,小程序支持微信、支付宝、百度、头条等

  2. gdMapConfig.js 是高德地图的key配置项,你在高德地图控制台里申请的key值(配置你自己申请的key),请自行参考官方文档进行配置https://console.amap.com/dev/key/app

注意:如您要使用地图相关功能这是必须配置的,云打包配置即可,离线打包不需要配置,离线打包有对应的配置

  1. 高德地图key配置示例:
   const gdMapRequiredKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  1. common.js 大部分是与app相关的,比如app计算缓存、清理缓存、获取扫码信息等,此项目大部分没有使用这些(预留,如需使用请自行完成相应逻辑编写)

开发环境搭建及源码运行

开发环境搭建

此项目是基于uniapp官方插件库的一个开源项目为基础进行修改搭建,使用vue2和uview2.0,开发工具使用的uniapp官方工具HBuilder。

uview2.0地址:

image-20230106111713829

注意事项

注意:HBuilder X的版本,建议采用比较稳定的版本进行开发,版本选择不当,可能会影响到您使用hbuilder进行离线打包或者不支持一些最新功能

建议开发版本:HBuilder X 3.6.15.20221228

源码运行

运行环境

手机模拟器运行

uniapp运行到app中,有两种方式:模拟器、真机

运行方式 优势 劣势
模拟器 方便 界面有时候显示模糊,好多功能缺失,比如Android模拟器不能确定电池电量水平和充电状态、模拟器不能震动,真机上才有效果等
真机 分辨率显示清楚,反应及时 android版本不同,可能出现此项目不能在真机上运行,建议android版本12

建议运行方式:真机

点击运行到手机或模拟器 =>运行到Android App基座 即可image-20230106164953952

注意:配置ADB路径设置,不同第三方的模拟器,端口不一样。

或者您也可以下载第三方的模拟器比如mumu、夜神等,这里给出网易mumu模拟器下载链接

常用的模拟器和对应端口号:

image-20230106110511901

真机运行

如果您要运行在真机上,只需您的数据线连上您的电脑和手机,并且手机开启开发者选项的usb调式和其他权限,点击运行android app基座即可,uniapp会自行检测您的手机并运行。

微信模拟运行

运行在微信小程序上,点击运行到小程序模拟器=>微信开发者工具 即可,建议勾选运行时,是否压缩代码(是),这样uniapp编译好微信小程序源码体积会小很多。

image-20230106110937928

注意:要打开微信开发者工具的端口,否则uniapp这边检测不到导致项目运行失败

开启微信开发者工具端口,如下图所示:

image-20230106111514259

打开微信小程序配置,配置appid,如下图所示:

微信截图_20230106172639

注意:微信小程序appid为您在官方微信公众平台上申请的

打包部署

微信小程序端打包部署

uniapp都给您编译好了微信小程序源码,主要的配置是在微信开发者工具和微信公众平台上。

微信开发者工具配置

需要您先运行在微信开发者工具上,勾选相关选项,如下图所示:

image-20230106112356036

微信公众平台配置(小程序)

微信截图_20230106150400

上传小程序包

填写您的版本号和备注,建议写详细一些,点击上即可。

image-20230106113210688

注意:版本号和备注,可以按照官方推荐的来命名,方便您后续发版本好管理。

版本管理

点击提交审核,审核是否通过以及审核时间,参考腾讯官方。

微信截图_20230106171800

成员管理

当官方审核通过好,要使用者体验,你要在成员管理里添加体验用户,点击成员管理 =》所有成员 即可

微信截图_20230106171503

添加体验人员即可,如图所示:

image-20230106171601731

点击添加,弹出如下图所示,填写体验人员微信号即可

注意:体验人员是有人数限制的

image-20230106171635773

点击体验版,会弹出二维码,发给您身边的同事或朋友进行扫码体验即可,之后发布版本操作也是一样。

微信截图_20230106171934

可以配置项目启动路径

注意:可以修改路径,项目启动路径

微信截图_20230106172010

app端(android)打包部署

uniapp打包成app,有两种方式:云打包离线打包

打包方式 优势 劣势
云打包 在HBuilderX中配置好各种参数后(如第三方SDK参数等),云端打包会自动完成配置 1.打包要排队,2.打包次数有限制
离线打包 无限制打包次数,打包时间快 1.离线打包支持混淆功能,只对vue文件,nvue文件不起作用,2.SDK配置较繁琐

建议打包方式:云打包

云打包

android端这边您可以采用uniapp官方自带云打包

注意:你要先注册登录,地址是开发者中心

找到您的项目

注意:可以直接输入应用名称搜索

微信截图_20230106173005

点击对应应用即可

微信截图_20230106151220

点开我的应用 =》Android云端证书,android云端证书需要您自行配置,请参考官方文档Android平台云端打包证书使用说明 - DCloud问答

配置好后,点击原生App-云打包

image-20230106151450824

弹出如下配置,配置Android包名和勾选使用云端证书和勾选快速安心打包即可,其余配置根据您自己项目需要进行配置。

image-20230106114112064

注意:android包名要注意去掉下划线,采用这种格式uni.(这里填写appid去掉下划线)

微信截图_20230106151826

这些都配置好后,点击打包即可。

注意: 云打包是有打包次数限制的,不是无数次的,1天只能打包【5次】,第六次需要收费(大概2¥一次)。

​ 打包时间长度不受控,高峰期排队时长可能需要 【几个小时】以上

打包后的位置在

image-20230106115337538

发给使用者进行体验即可。

离线打包

离线打包需要您安装android studio工具和官方sdk

image-20230106152454092

离线打包官方是有教程的,很仔细。我也是按照官方文档来配置的,请自行查阅,按照官方步骤来操作即可。

这些官方都是提供的,下载即可,注意您的hbuilder版本,给出了官方链接,参考官方文档进行配置即可

注意:要下载对应版本的app离线sdk,3.1.10版本时要申请appkey的,官方有文档,[请自行查阅](

https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey.html#)

这是官方的目录。您使用这个即可,用android studio打开即可。

image-20230106142312361

这里您要点击原生App--本地打包=》生成本地打包App资源

image-20230106142212364

点击原生app本地打包这个选项,生成本地打包资源,生成本地打包资源后复制给android studio那边的目录下即可

image-20230106120215395

注意:把生成好的资源全部复制到app目录下即可

image-20230106135007494

修改打包后的app图标和启动图

image-20230106135247537

图标名字命名为icon.png,启动图命名为splash.png,android studio会自动寻找这两个图片地址。

如果您的uniapp开发的app需要地图、需要使用摄像头、录音、视频、webview等,那么您需要按照官方文档来配置,官方上是有针对离线打包如何把这些模板集成到项目里的,给出了官方链接,请自行查阅,比如定位

您要把定位相关的jar包或者aar包复制到libs目录下即可,对应的包官方都有,您自行复制即可。

image-20230106143626019

然后您按照官方文档配置即可,其他模块也是一样的配置,官方都有,直接复制粘贴到项目即可。

还需要配置android签名,给出了官方链接,您自己配置的key和password,请您自己要记得,不要乱填写,下面是要是使用的,如何配置,请自行查阅 签名

注意:生成的签名信息不要乱填写,方便记忆,下面是要使用的。

安装官方文档操作即可。保存到项目目录下

image-20230106135818088

命名按照您自己喜欢的方式命名即可,打开build.gradle添加如下符合gradle格式的代码

signingConfigs {
        config {
            keyAlias 'yunteng'
            keyPassword 'yunteng'
            storeFile file('yunteng.keystore')
            storePassword 'yunteng'
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

image-20230106135913388

还是打开build.gradle文件

添加如下代码,这是打包后生成的文件名字,比如ThingsKit-V1.0.0.apk

android.applicationVariants.all {
        variant ->
            variant.outputs.all {
                outputFileName = "ThingsKit-V1.0.0.apk"
            }
    }

image-20230106140123787

配置好了后点击Build Bundle(s) / APK(s)=》Build APK(s)即可

image-20230106140405110

生成后的文件在这个目录下,上传到您自己的服务器上或者直接发给使用者,让使用者使用即可,如果您需要上线到应用商店,请自行查询官方文档和各大应用商店的关于上线的要求即可,这里给出一个参考链接

image-20230106140444634