项目背景
该项目是鸿蒙早期项目,什么是早期项目?众所周知,HarmonyOS 2.0是在2020年9月10日发布的。我们做这项目是2021年大学上学期移动开发课程学习的。在当时,网上资料一片空白,视频也是寥寥无几,官方教学视频是需要付费的,因此我们的资料只凭借一份官方文档还有安卓版项目资料。
并且,鸿蒙开发也未完善,目前来说,鸿蒙主流框架arkUI算是比较成熟的框架了,但是在当时,我们只有原生Java与原生JavaScript做页面开发,总的来说,身为学生的我和我的室友,做出这几个鸿蒙应用可以说是我们智慧的结晶。
我们一个学期一共开发了两款鸿蒙app,一款是家教预约平台,另一款是接下来要说的扫码点餐。
前期准备
硬件设备
- 一个搭载鸿蒙系统的手机
扫码点餐需要用到摄像头,模拟器没有摄像头!!!
鸿蒙:
- IDE
- DevEco Studio
Java:
- IDE
- IDEA
- JDK11
数据库:
- MySQL5.6
- Navicat(可视化工具)
注意事项
请使用本地模拟器而不是远程模拟器,因为远程模拟器在公网上,访问不了内网后端,除非你也将后端搭建在公网上(阿里云或者内网穿透)。
不要把鸿蒙本地模拟器跟后端同时搭建在自己电脑上测试,原因如下:
- 模拟器开不了摄像头无法测试
- 鸿蒙跟后端在同一网段会出现跨域调用(啥是跨域调用自己百度)
当初我们在做这个项目时有阿里云服务器,所以就没有写代码允许跨域调用,所以想解决第二点有以下方法:
- 写代码允许跨域调用(根本解决办法)
- 使用真机调试(这天然的使鸿蒙与后端不在同一网段,而且已经有许多同学成功了)
- 将后端搭建在公网上(亲测有效,有两种方法:一是使用阿里云,二是内网穿透)
- 将鸿蒙与后端搭建在同一局域网下的不同IP上(理论来说可行)
正式步骤
Git下来两个仓库并打开
把我码云上的两个仓库Git下来,具体操作不用多说,到你的工作目录下右键打开Git Bash敲命令:
服务端:git clone https://gitee.com/abyss_Jim/order_system_server.git
客户端:git clone https://gitee.com/abyss_Jim/order_system_app.git
然后分别用IDEA与DevEco Studio打开
服务端
首先来看服务端,因为采用的框架是SpringBoot,所以所有的配置都在配置文件中,因此我们要修改的就是application.properties
如上图,项目端口如果冲突可以修改;数据库IP需要修改;数据库账号密码也需要修改。
数据库
首先用Navicat连接你的MySQL数据库
sql脚本在这(还有服务端那个图里面的session建表sql):
建好表后,如果表中没有数据,那么先得输入数据(session表不用输入数据),如果已经存在数据,则可以跳过。
客户端
在该目录下的所有java页面中寻找一串字符串URL
例如在MainAbilitySlice.java中:
修改url中的IP地址和端口号即可
再次提醒:是所有页面的url都需要修改
然后我们进行真机调试即可!!!(真机调试请查看官方文档)
写在最后
这个项目真的是我和我搭档的心血之作,虽然在现在的鸿蒙开发看来,原生java页面开发已经落伍,甚至有点low,但是在当时鸿蒙开发未兴起,网上资料一片空白的情况下,凭借一份官方文档与一个安卓版的扫码点餐就做出来鸿蒙版扫码点餐是非常不容易的,我们踩了无数的坑。
有人说鸿蒙不是安卓的套壳吗?套壳移植一个项目有什么难的,我只能笑笑!!!因为我在开发的过程中,我最大的感受就是安卓开发很简单很随意,而鸿蒙有一大堆的条条框框,我印象最深的就是多线程运行任务,安卓只需要调用一个函数即可在两个进程通信,即在子线程修改主线程的页面数据;但鸿蒙不同,任务分发器也就算了,还需要异步的,在子线程想要修改主线程还要经过大量操作;其实我不也知道谁好谁不好,因为我不知道鸿蒙繁琐的操作是不是使系统稳定性更强还是啥的。不过总的一点就是,鸿蒙和安卓还是有很大区别的!!!
我写这篇博客的原因:
- 有同学搭建我的项目时出了很多问题向我请教
- 同时我也希望我的项目能够被大家参考,拥有更多的价值
最后再展示一下的我的项目界面
你好,就是,我用那个华为的开发工具做的UI会很卡顿,请问你手机演示是因为这个原因吗
不是,卡顿是因为网络的原因,你可以使用本地模拟器呀,不i过就是要注意跨域的问题,我用手机确实不卡,主要的原因是电脑太大了,懒得带!
Git下来好多文件没了是为啥?
您好 可以请问这个鸿蒙前端为什么我git下来导入什么都没有啊??
请问可以问你一些关于运行这个项目的相关问题吗?因为我在devEco studio上运行不出来😅
具体是什么问题呢,后端搭建了吗?
后端已经按照你上面的改了。devEco studio这边报这个错误Gradle sync failed: Could not get unknown property ‘legacyApkOptions’ for extension ‘ohos’ of type com.huawei.ohos.build.AppExtension.
请参阅 IDE 日志以获取更多详细信息(帮助|显示日志) (10 s 761 ms)
你这发的太简略了,你应该定位到具体语句上我才好判断,编译错误,可以考虑是不是gradle版本不对或者项目依赖包的问题,总之不好判断,你加我QQ吧,这上面效率太低,QQ看我右边作者栏。
不好意思啊,现在才看到你的回复。问题我已经解决了,谢谢你的回复以及项目上的参考!
没事,Gitee求关注与星星!!!(☆ω☆)