热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

不到一个月用业余时间撸了个App

起因虽然是个程序员,但是从来没做过Android和iOS应用的开发。但是一直有一个想法,想开发一个自己的App并且发布。为此,也做了一些

起因

虽然是个程序员,但是从来没做过 Android 和 iOS 应用的开发。但是一直有一个想法,想开发一个自己的 App 并且发布。
为此,也做了一些了解,发布到 Apple App Store 需要开发者账号,这个账号每年 99 刀,在这不得不吐槽一句太贵了,还不是终身,而是每年 99 刀,尤其对于我这种非专业 iOS 开发者来说,又没那么多应用发布,就有些不值得。所以只能转 Android 平台了,也了解了一下国内的众多安卓应用市场,这里也得吐槽一下,国内的 Android 市场太混乱了,每家都有一个,每家有每家的要求和政策。但是基本上都是需要软著的,这个是没办法绕过去的。所以,必须要去申请一个软著(目前还在申请中)。然后,国外的 Android 商店就是 Google Play 了,开发者账号25刀,并且还是终身的(不得不说,对于开发者来说很良心啊)。这么便宜,我也就申请了一个,准备也发布到 Google Play上。


相识

去年底的时候,无意中看到了 Flutter,它是 Google 开源的 UI 工具包,可以让开发者通过一套代码库,高效的构建多平台精美应用,现在可以说是全平台支持了,移动、Web、桌面和嵌入式平台都支持。真是非常强大啊。后边也一直有关注和了解,发现使用的人也越来多,我也尝试了安装和跑通了官方的 Demo。Flutter 本身就提供了非常多的漂亮内置组件,让你即使在没有美工设计的情况下,程序员自己都能非常方便的设计出好看界面。这就非常适合我这种不会画图和设计的程序员了。而且Flutter 还有很多开源的第三方 Package 包,在这里可以找到各种工具包,避免重复造轮子。

总之,Flutter 给我的感觉就是很强大,结合本身自带基础组件和第三方 Package 包,能够大大提高开发者的效率。只是有两点:1、Flutter 使用的是 Dart 语言,这个语言比较小众,不过有编程基础的学起来非常快,边用边学,基本很快就能上手。2、Dart 代码的谜之嵌套,代码可能会嵌套 n 多层,在修改的时候可能会比较麻烦,不过使用 AndroidStudio 和 VS Code 编辑器都提供了非常方便的快捷键,也基本能解决这个问题。


开始

我是在这个十一假期正式开始这个 App 的开发。都说熟悉一门新的框架,从一个 Todolist 开始。我这次也不例外,也是一个 Todo 类应用。

因为我也想通过这个 App 熟悉整个 Flutter 的框架和一个完整 App 的开发流程。所以我给自己的这款 App 确定了以下功能,在确定功能的同时还要调研实现这个功能需要那些技术和平台支持,比如说实现注册和登录功能,那就需要有服务器,自己也没写过服务器,所以就找有没有提供类似功能支持的平台。最后国内我找到了两家提供支持的平台 LeanCloud 和 Bmob,通过比较最后我选择了 LeanCloud,两家功能差不多(当然不止是注册登录功能,还有很多服务),我只是根据我自己的需求选择了其中一家。国外当然是首选 Firebase 了,免费,功能强大(可惜国内不支持)。最后我确定了以下功能和技术选型:


  • 注册登录功能(国内 LeanCloud,国外 Firebase)
  • Todo list 功能,todo 提醒功能
  • 笔记本功能
  • 主题切换
  • 多语言切换

主要就是以上几个主要功能,下面带你们来看一下,没有美工,一个程序员使用 Flutter 能做出来什么样的界面。


登录

登录本来打算实现邮件密码登录和手机号验证码登录,微信、QQ等第三方登录。奈何调研之后发现,手机验证码是需要付费的,本人穷屌丝一枚,无奈只能放弃手机验证码登录;微信和QQ等第三方登录大都需要企业资质,无奈个人开发者也只能放弃(当然,如果你确实需要可以个人注册公司,或者找第三方挂靠)。最后只能使用邮件和密码登录了。国外也是使用邮件密码登录,不过还接入了 Google 第三登录(后续会加上FB,Twitter等),不需要什么资质和条件,在这不得不说一下,国外貌似对个人开发者更加友好。

然后就是忘记密码,通过邮件重置密码。下面是截图:

BMGPdH.png


Todo

Todo 可以创建一个 Todo list 列表,然后列表里添加具体的 Todo 事项,Todo 列表可以收起和展开,可以为不同的 Todo 列表设置不同的颜色来区分,具体的 Todo 事项可以添加提醒功能。大体就这么多。来看一下应用内截图。

BMGCee.png
BM8zQK.png
BMGSsO.png


笔记

可以把一些重要的东西或者内容记下来,随你使用,自己记日记,写作文都没问题。

BM8vz6.png


设置

最后就是设置里边,可以切换深浅两种主题,切换不同的语言,还有退出登录。

BMGpLD.png
BMYwGR.jpg


推荐

在整个开发的过程中我把我用的一些好用的工具和网站推荐给大家。


技术类:

  • Flutter 官网
  • Flutter 社区中文资源
  • Flutter 实战电子书
  • Flutter Dart packages
  • LeanCloud 后端云支持
  • FlutterFire

美术类:

  • 阿里巴巴矢量图标库
  • Material Design
  • Android Asset Studio
  • 图标工厂
  • hotpot

最后我要隆重介绍一下这个 AI 设计工具:Hotpot ,因为现在上传 Google Play 需要上传 Google Play Feature Graphics 和 Screenshots,也就是一张置顶大图还有应用截图,但是我又不会 PS ,最后在网上找到这个工具网站,功能十分强大,直接网页在线设计,提供了很多模板,我上边的屏幕截图就是在这个网站设计的,是不是很漂亮。通过 Promo code 可以免费使用。

这个还有一个小插曲,因为 Promo code 需要去国外各大社交等网站找,或者在 FB,Twitter 分享后获得,我有点等不及,所以直接付了 1 美金来设计和下载,但是设计完之后需要连接外网才能保存和下载,结果就是我的没能下载成功,然后我就发邮件联系网站,后面我们通过网页聊天窗口交流,我使用我蹩脚的英文,一边利用翻译软件一边交流,快到最后解决的时候发现了对方是美籍华人,懂中文只是不太好,后边我们果断使用中文交流了,我还教了他很多说中文需要注意的地方。最后他帮我下载了设计图,并送了我一个免费七天的无限下载 code。


总结

现在国内和国外的第一个版本都已经开发完成了,国外的已经发布到 Google Play,目前正在审核中,貌似现在这个特殊时期审核时间大大加长了,不知道什么时候才能过。国内的还在申请软著中。不过我已经使用蒲公英内测分发了,感兴趣的小伙伴可以去这里下载安装:https://www.pgyer.com/JdvS 。或者扫下面二维码,安装密码:1111

BMNZNQ.png

蒲公英内测每个版本下载次数限制为 10 次/天,如果不能下载可以使用百度云下载:
链接: https://pan.baidu.com/s/1WP3xGRqoi0aFSt5AZaaqwA 提取码: 82q5

我一个从来没接触过移动开发的人,从十月一开始到今天二十多天,每天也就利用业余的一两个小时,从学习查资料,调研技术,选择平台,美术资源等等一个人搞定。可见 Flutter 还是能大大提高开发者效率的,如果是从事移动开发,肯定会比我更快。在这个过程我也学习了很多,也有很大的收获,最后完成的时候也有很大的成就感,虽然只是一个简单的工具类应用。


推荐阅读
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 本文详细介绍了Python的multiprocessing模块,该模块不仅支持本地并发操作,还支持远程操作。通过使用multiprocessing模块,开发者可以利用多核处理器的优势,提高程序的执行效率。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • C++中类的内外定义及内联函数详解
    本文详细介绍了C++中的类内定义与类外定义,以及内联函数的使用方法和注意事项。通过实例说明了不同定义方式的优缺点,并探讨了编译器对内联函数的处理机制。 ... [详细]
  • 本文作者分享了在某大型IToIP解决方案提供商参与多个项目开发的经验与感悟,特别是在软件工程方法论上的思考,提出了对现有开发模式的见解及改进建议。 ... [详细]
  • 本文介绍了iOS应用开发的主要框架,包括Foundation、UIKit、CoreData及CoreGraphics等,并探讨了开发iOS应用所需的硬件和软件环境,以及推荐的编程语言。 ... [详细]
  • 本文详细介绍了中心方形数的概念及其计算方法,并提供了多种编程语言下的实现代码。 ... [详细]
  • 本文探讨了一种方法,通过开发C#应用程序来拦截并处理从遗留系统发出的Http请求,该系统原本依赖于已停止服务的Web服务。解决方案涉及使用代理技术或HTTP监听器来捕获和重定向这些请求。 ... [详细]
  • 本文探讨了如何使用 JavaScript 解决 LeetCode 上的一道经典算法题——寻找和为指定值 s 的所有连续正整数序列。文章提供了详细的代码实现及算法分析。 ... [详细]
  • ANSI最全介绍linux终端字体改变颜色等ANSI转义序列维基百科,自由的百科全书由于国内不能访问wiki而且国内关于ANSI的介绍都是简短的不能达到,不够完整所以转wiki到此 ... [详细]
  • Linux系统中高效解决高Buff/Cache占用问题
    本文详细探讨了在Linux系统中遇到的高Buff/Cache占用问题及其解决方案,提供了手动清除与定时任务自动化处理的方法。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • C基本语法C程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象-对象具有状态和行为 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
author-avatar
Joql
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有