Showing
1 changed file
with
378 additions
and
12 deletions
1 | -## ThingsKit物联网小程序、app | |
2 | -## 兼容小程序、app、h5 | |
1 | +## 目录结构及重要文件说明 | |
3 | 2 | |
4 | -### 项目结构 | |
3 | +### 目录结构 | |
5 | 4 | |
5 | +#### 说明 | |
6 | + | |
7 | +此项目采用的是使用uniapp开发的微信小程序和app,目前兼容app端(android),微信小程序。 | |
8 | + | |
9 | +项目大致结构如下所示: | |
10 | + | |
11 | +```` | |
6 | 12 | ``` |
7 | -├── components // 组件 | |
13 | +├── components // 公共组件 | |
8 | 14 | ├── config |
9 | 15 | │ ├── baseUrl.js // 基础配置(域名、系统信息等) |
16 | +│ ├── amap-wx.js // 此小程序使用到的地图插件 | |
10 | 17 | │ ├── common.js // 通用js(小程序更新、app缓存、扫码、定位等) |
11 | -│ ├── componentConfig.js // app升级配置接口 | |
12 | -│ ├── h5Utils.js // h5通用js(包含h5公众号登录等) | |
13 | -│ ├── login.js // 登录js | |
14 | -│ ├── pay.js // 支付js | |
18 | +│ ├── componentConfig.js // app升级配置接口(预留,暂时没用到) | |
19 | +│ ├── h5Utils.js // h5通用js(包含h5公众号登录等,预留,暂时没用到) | |
20 | +│ ├── login.js // 登录js(预留,暂时没用到) | |
21 | +│ ├── pay.js // 支付js(预留,暂时没用到) | |
15 | 22 | │ └── request.js // 接口配置(基于uview配置) |
23 | +├── api // 此项目使用到的所有api统一管理 | |
16 | 24 | ├── pages // 项目页面 |
17 | 25 | │ ├── index // 首页 |
18 | 26 | │ └── device // 设备 |
19 | 27 | │ └── alert // 告警 |
20 | 28 | │ └── personal // 我的 |
29 | +├── alarmSubPage // 告警小程序分包页面 | |
30 | +│ ├── alarmDetailSubPage | |
31 | +├── deviceSubPage // 设备小程序分包页面 | |
32 | +│ ├── deviceDetailSubPage | |
33 | +├── sysNotifySubPage // 通知小程序分包页面 | |
34 | +│ ├── sysNotifyPage | |
35 | +├── publicLoginSubPage // 登录小程序分包页面 | |
36 | +│ ├── other // 其余页面(包括忘记密码等) | |
37 | +│ ├── public // 登录页面 | |
38 | +├── feedBackSubPage // 意见反馈小程序分包页面 | |
39 | +│ ├── feedback | |
21 | 40 | ├── plugins // 功能js |
22 | -├── static // 图片文件 | |
41 | +├── js_sdk // android判断是否有权限插件 | |
42 | +├── static // 静态图片文件 | |
23 | 43 | ├── store // vuex |
24 | 44 | ├── style |
25 | 45 | │ ├── common.scss // 公共样式文件 |
26 | 46 | │ └── iconfont.scss // 图标样式 |
27 | 47 | ├── uni_modules |
28 | -│ ├── fan-canvas // 绘图通用方法 | |
29 | -│ ├── mescroll-uni // mescroll分页 | |
48 | +│ ├── mescroll-uni // mescroll分页(此项目所有的分页都基于此) | |
30 | 49 | │ ├── uview-ui // uview2.0 |
31 | -│ └── zhouWei-APPUpdate // app更新升级(wgt) | |
50 | +│ ├── luyi-tree // 组织结构插件 | |
51 | +│ ├── qiun-data-charts // 图表插件 | |
52 | +│ ├── uni-popup // 弹出层插件 | |
53 | +│ ├── uni-datetime-picker // 时间日期选择插件 | |
32 | 54 | ├── unpackage // 项目编译后的文件 |
33 | 55 | ├── App.vue // 项目基础文件 |
34 | 56 | ├── main.js // 项目基础文件 |
... | ... | @@ -38,3 +60,347 @@ |
38 | 60 | ├── README.md // 项目介绍md |
39 | 61 | └── template.h5.html // h5自定义模板 |
40 | 62 | ``` |
63 | + | |
64 | +```` | |
65 | + | |
66 | +### 配置文件 | |
67 | + | |
68 | +#### 请求相关配置 | |
69 | + | |
70 | +请求相关配置文件在该项目结构的config文件夹内,重要的包括baseUrl.js和request.js等,其中baseUrl.js里包括对服务端的配置项, | |
71 | + | |
72 | +只需要修改这些为您自己的服务器地址即可(baseUrl 、baseDrawioUrl、baseWebSocketUrl、socketPrefix )。 | |
73 | + | |
74 | +request.js里是基于uview封装的服务端请求文件,包括配置服务端api地址、请求超时配置,请求拦截和响应拦截等 | |
75 | + | |
76 | +##### 配置示例 | |
77 | + | |
78 | +```js | |
79 | +const baseUrl = "http://xxx.xxx.xxx.xxx:xxx/xxx"; | |
80 | +const baseDrawioUrl = "http://xxx.xxx.xxx.xxx:xxx/xxx-xxx"; | |
81 | +const baseWebSocketUrl = "xxx.xxx.xxx.xxx:xxx"; | |
82 | +const socketPrefix = "ws"; | |
83 | +``` | |
84 | + | |
85 | +##### 配置项说明 | |
86 | + | |
87 | +**baseUrl**:服务端 api地址 | |
88 | + | |
89 | +**baseDrawioUrl** :组态地址 注意端口 | |
90 | + | |
91 | +**baseWebSocketUrl** :服务端 websocket地址 | |
92 | + | |
93 | +**socketPrefix** :websocket 注意前缀 ((https, wss),( http, ws)) | |
94 | + | |
95 | +> 注意:socketPrefix在https情况下使用wss,http使用ws | |
96 | + | |
97 | +#### 其他通用配置 | |
98 | + | |
99 | +其他通用配置文件也在项目结构的config文件夹内,主要是与其他功能配合使用,比如地图、小程序更新、app更新等。 | |
100 | + | |
101 | +1. amap-wx.js 是uniapp里使用微信小程序地图的配置,里面的配置包含高德地图控制台里申请的key值,把配置好的key值以对象形式传进去即可 | |
102 | + | |
103 | + ```js | |
104 | + const amapFile = require('@/config/amap-wx.js'); | |
105 | + import { gdMapRequiredKey } from '@/config/gdMapConfig.js'; | |
106 | + var myAmapFun = new amapFile.AMapWX({ key: gdMapRequiredKey }); | |
107 | + ``` | |
108 | + | |
109 | +2. h5Utils.js 是与h5相关的 ,里面包含浏览器端h5判断是否是微信客户端 | |
110 | + | |
111 | + ```js | |
112 | + // 浏览器判断是否微信 | |
113 | + export const isWechat = () => { | |
114 | + let ua = navigator.userAgent.toLowerCase(); | |
115 | + if (ua.match(/MicroMessenger/i) == "micromessenger") { | |
116 | + //console.log('是微信客户端') | |
117 | + return true; | |
118 | + }else{ | |
119 | + //console.log('不是微信客户端') | |
120 | + return false; | |
121 | + } | |
122 | + }; | |
123 | + ``` | |
124 | + | |
125 | + | |
126 | + | |
127 | +3. pay.js 是与支付相关的(预留,此项目没使用到,如需使用请自行完成相应逻辑编写),里面包含了小程序和app的支付,小程序支持微信、支付宝、百度、头条等 | |
128 | + | |
129 | +4. gdMapConfig.js 是高德地图的key配置项,你在高德地图控制台里申请的key值(配置你自己申请的key),请自行参考官方文档进行配置https://console.amap.com/dev/key/app | |
130 | + | |
131 | + > 注意:如您要使用地图相关功能这是必须配置的,云打包配置即可,离线打包不需要配置,离线打包有对应的配置 | |
132 | + | |
133 | +5. 高德地图key配置示例: | |
134 | + | |
135 | + ```js | |
136 | + const gdMapRequiredKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' | |
137 | + ``` | |
138 | + | |
139 | +6. common.js 大部分是与app相关的,比如app计算缓存、清理缓存、获取扫码信息等,此项目大部分没有使用这些(预留,如需使用请自行完成相应逻辑编写) | |
140 | + | |
141 | + | |
142 | +## 开发环境搭建及源码运行 | |
143 | + | |
144 | +### 开发环境搭建 | |
145 | + | |
146 | +此项目是基于uniapp官方插件库的一个开源项目为基础进行修改搭建,使用vue2和uview2.0,开发工具使用的uniapp官方工具HBuilder。 | |
147 | + | |
148 | +uview2.0地址:[](https://www.uviewui.com/guide/demo.html) | |
149 | + | |
150 | + | |
151 | + | |
152 | +#### 注意事项 | |
153 | + | |
154 | +> 注意:HBuilder X的版本,建议采用比较稳定的版本进行开发,版本选择不当,可能会影响到您使用hbuilder进行离线打包或者不支持一些最新功能 | |
155 | +> | |
156 | +> 建议开发版本:HBuilder X 3.6.15.20221228 | |
157 | + | |
158 | +### 源码运行 | |
159 | + | |
160 | +#### 运行环境 | |
161 | + | |
162 | +##### 手机模拟器运行 | |
163 | + | |
164 | +uniapp运行到app中,有两种方式:**模拟器、真机** | |
165 | + | |
166 | +| 运行方式 | 优势 | 劣势 | | |
167 | +| -------- | ------------------------ | ------------------------------------------------------------ | | |
168 | +| 模拟器 | 方便 | 界面有时候显示模糊,好多功能缺失,比如Android模拟器不能确定电池电量水平和充电状态、模拟器不能震动,真机上才有效果等 | | |
169 | +| 真机 | 分辨率显示清楚,反应及时 | android版本不同,可能出现此项目不能在真机上运行,建议android版本12 | | |
170 | + | |
171 | +> 建议运行方式:真机 | |
172 | + | |
173 | +点击**运行到手机或模拟器 =>运行到Android App基座** 即可 | |
174 | + | |
175 | +> 注意:配置ADB路径设置,不同第三方的模拟器,端口不一样。 | |
176 | +> | |
177 | +> 或者您也可以下载第三方的模拟器比如mumu、夜神等,这里给出网易mumu[模拟器下载链接](https://mumu.163.com/) | |
178 | + | |
179 | +常用的模拟器和对应端口号: | |
180 | + | |
181 | + | |
182 | + | |
183 | +##### 真机运行 | |
184 | + | |
185 | +如果您要运行在真机上,只需您的数据线连上您的电脑和手机,并且手机开启开发者选项的usb调式和其他权限,点击运行android app基座即可,uniapp会自行检测您的手机并运行。 | |
186 | + | |
187 | +##### 微信模拟运行 | |
188 | + | |
189 | +运行在微信小程序上,点击**运行到小程序模拟器=>微信开发者工具** 即可,建议勾选运行时,是否压缩代码(是),这样uniapp编译好微信小程序源码体积会小很多。 | |
190 | + | |
191 | + | |
192 | + | |
193 | +> 注意:要打开微信开发者工具的端口,否则uniapp这边检测不到导致项目运行失败 | |
194 | + | |
195 | +开启微信开发者工具端口,如下图所示: | |
196 | + | |
197 | + | |
198 | + | |
199 | +打开微信小程序配置,配置appid,如下图所示: | |
200 | + | |
201 | + | |
202 | + | |
203 | +> 注意:微信小程序appid为您在官方[微信公众平台](https://mp.weixin.qq.com/)上申请的 | |
204 | + | |
205 | +## 打包部署 | |
206 | + | |
207 | +### 微信小程序端打包部署 | |
208 | + | |
209 | +uniapp都给您编译好了微信小程序源码,主要的配置是在微信开发者工具和微信公众平台上。 | |
210 | + | |
211 | +#### 微信开发者工具配置 | |
212 | + | |
213 | +需要您先运行在微信开发者工具上,勾选相关选项,如下图所示: | |
214 | + | |
215 | + | |
216 | + | |
217 | +#### 微信公众平台配置(小程序) | |
218 | + | |
219 | + | |
220 | + | |
221 | +#### 上传小程序包 | |
222 | + | |
223 | +填写您的版本号和备注,建议写详细一些,点击上即可。 | |
224 | + | |
225 | + | |
226 | + | |
227 | +> 注意:版本号和备注,可以按照官方推荐的来命名,方便您后续发版本好管理。 | |
228 | + | |
229 | +#### 版本管理 | |
230 | + | |
231 | +点击提交审核,审核是否通过以及审核时间,参考腾讯官方。 | |
232 | + | |
233 | + | |
234 | + | |
235 | +#### 成员管理 | |
236 | + | |
237 | +当官方审核通过好,要使用者体验,你要在成员管理里添加体验用户,点击**成员管理** =》**所有成员** 即可 | |
238 | + | |
239 | + | |
240 | + | |
241 | +添加体验人员即可,如图所示: | |
242 | + | |
243 | + | |
244 | + | |
245 | +点击添加,弹出如下图所示,填写体验人员微信号即可 | |
246 | + | |
247 | +> 注意:体验人员是有人数限制的 | |
248 | + | |
249 | + | |
250 | + | |
251 | +点击体验版,会弹出二维码,发给您身边的同事或朋友进行扫码体验即可,之后发布版本操作也是一样。 | |
252 | + | |
253 | + | |
254 | + | |
255 | +可以配置项目启动路径 | |
256 | + | |
257 | +> 注意:可以修改路径,项目启动路径 | |
258 | + | |
259 | + | |
260 | + | |
261 | + | |
262 | + | |
263 | +### app端(android)打包部署 | |
264 | + | |
265 | +uniapp打包成app,有两种方式:**云打包**、**离线打包** | |
266 | + | |
267 | +| 打包方式 | 优势 | 劣势 | | |
268 | +| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | |
269 | +| 云打包 | 在HBuilderX中配置好各种参数后(如第三方SDK参数等),云端打包会自动完成配置 | 1.打包要排队,2.打包次数有限制 | | |
270 | +| 离线打包 | 无限制打包次数,打包时间快 | 1.离线打包支持混淆功能,只对vue文件,nvue文件不起作用,2.SDK配置较繁琐 | | |
271 | + | |
272 | +> 建议打包方式:云打包 | |
273 | + | |
274 | +#### 云打包 | |
275 | + | |
276 | +android端这边您可以采用uniapp官方自带云打包 | |
277 | + | |
278 | +> 注意:你要先注册登录,地址是[开发者中心](https://dev.dcloud.net.cn/pages/app/detail/info) | |
279 | + | |
280 | +找到您的项目 | |
281 | + | |
282 | +> 注意:可以直接输入应用名称搜索 | |
283 | + | |
284 | + | |
285 | + | |
286 | +点击对应应用即可 | |
287 | + | |
288 | + | |
289 | + | |
290 | +点开**我的应用** =》**Android云端证书**,android云端证书需要您自行配置,请参考官方文档[Android平台云端打包证书使用说明 - DCloud问答](https://ask.dcloud.net.cn/article/35985#server)。 | |
291 | + | |
292 | +配置好后,点击**原生App-云打包** | |
293 | + | |
294 | + | |
295 | + | |
296 | +弹出如下配置,配置**Android包名**和勾选**使用云端证书**和勾选**快速安心打包**即可,其余配置根据您自己项目需要进行配置。 | |
297 | + | |
298 | + | |
299 | + | |
300 | +> 注意:android包名要注意去掉下划线,采用这种格式uni.(这里填写appid去掉下划线) | |
301 | +> | |
302 | +>  | |
303 | + | |
304 | +这些都配置好后,点击打包即可。 | |
305 | + | |
306 | +> 注意: 云打包是有打包次数限制的,不是无数次的,1天只能打包【5次】,第六次需要收费(大概2¥一次)。 | |
307 | +> | |
308 | +> 打包时间长度不受控,高峰期排队时长可能需要 【几个小时】以上 | |
309 | + | |
310 | +打包后的位置在 | |
311 | + | |
312 | + | |
313 | + | |
314 | +发给使用者进行体验即可。 | |
315 | + | |
316 | +#### 离线打包 | |
317 | + | |
318 | +离线打包需要您安装android studio工具和官方sdk | |
319 | + | |
320 | + | |
321 | + | |
322 | +离线打包官方是有教程的,很仔细。我也是按照官方文档来配置的,请自行查阅,按照官方步骤来操作即可。 | |
323 | + | |
324 | +这些官方都是提供的,下载即可,注意您的hbuilder版本,给出了官方链接,[参考官方文档进行配置即可](https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android.html#) | |
325 | + | |
326 | +> 注意:要下载对应版本的app离线sdk,3.1.10版本时要申请appkey的,官方有文档,[请自行查阅]( | |
327 | + | |
328 | +https://nativesupport.dcloud.net.cn/AppDocs/usesdk/appkey.html#) | |
329 | + | |
330 | +这是官方的目录。您使用这个即可,用android studio打开即可。 | |
331 | + | |
332 | + | |
333 | + | |
334 | +这里您要点击**原生App--本地打包**=》**生成本地打包App资源** | |
335 | + | |
336 | + | |
337 | + | |
338 | +点击原生app本地打包这个选项,生成本地打包资源,生成本地打包资源后复制给android studio那边的目录下即可 | |
339 | + | |
340 | + | |
341 | + | |
342 | +> 注意:把生成好的资源全部复制到app目录下即可 | |
343 | + | |
344 | + | |
345 | + | |
346 | +修改打包后的app图标和启动图 | |
347 | + | |
348 | + | |
349 | + | |
350 | +图标名字命名为icon.png,启动图命名为splash.png,android studio会自动寻找这两个图片地址。 | |
351 | + | |
352 | +如果您的uniapp开发的app需要地图、需要使用摄像头、录音、视频、webview等,那么您需要按照官方文档来配置,官方上是有针对离线打包如何把这些模板集成到项目里的,给出了官方链接,请自行查阅,[比如定位](https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/geolocation.html) | |
353 | + | |
354 | +您要把定位相关的jar包或者aar包复制到libs目录下即可,对应的包官方都有,您自行复制即可。 | |
355 | + | |
356 | + | |
357 | + | |
358 | +然后您按照官方文档配置即可,其他模块也是一样的配置,官方都有,直接复制粘贴到项目即可。 | |
359 | + | |
360 | +还需要配置android签名,给出了官方链接,您自己**配置的key和password**,请您自己要记得,不要乱填写,下面是要是使用的,如何配置,请自行查阅 [签名](https://ask.dcloud.net.cn/article/35777) | |
361 | + | |
362 | +> 注意:生成的签名信息不要乱填写,方便记忆,下面是要使用的。 | |
363 | + | |
364 | +安装官方文档操作即可。保存到项目目录下 | |
365 | + | |
366 | + | |
367 | + | |
368 | +命名按照您自己喜欢的方式命名即可,打开build.gradle添加如下符合gradle格式的代码 | |
369 | + | |
370 | +```groovy | |
371 | +signingConfigs { | |
372 | + config { | |
373 | + keyAlias 'yunteng' | |
374 | + keyPassword 'yunteng' | |
375 | + storeFile file('yunteng.keystore') | |
376 | + storePassword 'yunteng' | |
377 | + v1SigningEnabled true | |
378 | + v2SigningEnabled true | |
379 | + } | |
380 | + } | |
381 | +``` | |
382 | + | |
383 | + | |
384 | + | |
385 | +还是打开build.gradle文件 | |
386 | + | |
387 | +添加如下代码,这是打包后生成的文件名字,比如ThingsKit-V1.0.0.apk | |
388 | + | |
389 | +``` | |
390 | +android.applicationVariants.all { | |
391 | + variant -> | |
392 | + variant.outputs.all { | |
393 | + outputFileName = "ThingsKit-V1.0.0.apk" | |
394 | + } | |
395 | + } | |
396 | +``` | |
397 | + | |
398 | + | |
399 | + | |
400 | +配置好了后点击**Build Bundle(s) / APK(s)**=》**Build APK(s)**即可 | |
401 | + | |
402 | + | |
403 | + | |
404 | +生成后的文件在这个目录下,上传到您自己的服务器上或者直接发给使用者,让使用者使用即可,如果您需要上线到应用商店,请自行查询官方文档和各大应用商店的关于上线的要求即可,[这里给出一个参考链接](https://zhuanlan.zhihu.com/p/389302743) | |
405 | + | |
406 | + | |
\ No newline at end of file | ... | ... |