草庐IT

Android 项目必备(三十)-->从 0 到 1 开发一个属于自己的 App

Kevin-Dev 2023-04-07 原文


文章目录

一、前言

一个 Android 开发者的真正蜕变,要从真正做一个属于自己的 App 开始,只有自己一个人摸索、研究,真正靠自己踏上这条路,才能尝尽这条路上的酸甜苦辣,才会成长!

二、做一个什么样的 App?

这是一个很难确定的事情,因为如果你有一个好的想法,好到做出来就有大量用户,好到不用推广就能吸到万千粉丝,那么,你还做个屁的练手App 啊,直接去创业不就好了!也不用自己开发啊,招人啊,自己当老板呀 是吧!现在这个时候,基本上各个领域都已经有了相对成熟,独霸一方的 App 存在,所以我们不要想着,做一个 App 就能让自己流芳百世,一举成名了。

所以在功能上,不需要太苛求,做自己喜欢的就好,你只要想着,反正也不会大火就好了。

三、数据从哪里获取?

对于一个移动端的开发者来说,这其实是一个很痛苦的问题,因为我们擅长于把从服务端的获取的数据展示在 App 上,却不擅长创造数据。

纵观现在的市场,不难得知,一个没有后台支持的 App,是走不长远的。

所以,必须让我们的应用有后台数据的支持。那么问题来了,我们如何获取 App 上需要显示的数据?

1. 直接使用现成的网络云服务器

现在市场上有的 Bmob 后端云LeanCloud ,他们提供的服务是差不多的,对于 Android 开发者来说,我们只需要集成他们的 SDK,就可能很轻松的实现建表,对表中的数据进行 CRUD 。

对于一个应用来说,用户体系往往是最重要的,有了用户,你才能往深层方向发展。Bmob 也想到了这一点,从创建一个项目开始,它就默认创建了一个自己的用户体系,SDK 也提供了很方便的用户管理的接口,包括发送手机验证码,对验证码的校验,用户注册,用户登录,用户重置密码,用户邮箱验证等等,这对于一个移动端开发者来说,简直就是福音,也一定程度上解决了 App 用户体系的常见问题。

2. 直接使用免费的公共接口

3. 自己搭建后台服务器
这当然是最好的一种方式,不管是数据,服务都是可控的,安全的。

首先,你需要学习去开发服务器端的代码,你还需要学习数据库相关的很多知识。当你摸爬滚打一段时间开发出一套后台接口之后,你还需要搭建一个线上的服务器,那么就意味着你需要购买一个云服务器,买完服务器之后,你需要在服务器里面搭建一个自己的代码运行的环境,然后你需要把你开发的代码部署到服务器上去…除此之外,买服务器意味着你要花钱,可能后面还需要买oss存储服务,cdn加速等等,还需要花更多的钱。而且,而且,而且这所有的所有,你需要自己摸索,遇到问题只能自己解决,这是很痛苦的。好在我是在阿里云购买的服务器,(其实还有很多其他平台,比如腾讯云,京东云等等),阿里的工单系统服务着实很好,响应也很快,技术服务也很到位,在一定程度上帮我解决了很多问题,在此表示感谢。

四、从 0 到 1,我们需要从何开始?

1. 正常的开发流程
对于企业项目的开发,粗糙的流程一般是:产品经理收到需求,与后台开发人员进行沟通,确定功能点,然后根据需求设计出原型,将原型交付给 UI 设计师,与此同时,后台开发人员开发出对应的 API 接口,UI 设计师设计完成给予前端开发人员,前端开发人员先设计出页面,再与后台开发者对接 API 接口,将数据展示出来并完成具体功能的开发,最后上线。

Android 项目必备(八)–> APP 的开发流程

2. 非正常的开发流程

可是我们是一个人开发呀。

所以我们不太适用上面的开发流程。我们最开始需要做的是需求分析,我们需要确定,初始版本需要哪些功能,其次在移动端和服务端两个开发点做选择,到底是先开发移动端还是先开发服务端,这个就因人而异了,有的人喜欢先用假数据开发出一个模板,等到数据来了之后再进行填充,而对于我,我就不喜欢这样,反正都是要做的,多做一个模板的版本,就要多花时间,所以决定先写服务器。

服务端开发完成之后,再写客户端,在开发客户端的时候,对于页面的设计,一方面靠自己想,另一方面,靠模仿别的 App。当服务端和客户端都开发完成并完成测试之后,就要开始搭建线上服务器环境了,当环境搭建完成并完成代码的部署之后,就要开始着手上线操作了。

五、正式进入开发中

1. 功能构想

2. 构建一个 Android 应用
对于 app 页面来说,我们主要是自己设计加上模仿别人的 app ,多体验别人的 app ,把别人好的交互,好的设计引用的自己的应用里面。

注意:不是所有的交互都适合自己的应用,借鉴也要适可而止,否则会不伦不类。

在图标上面,一来可以找做 UI 的朋友设计,二来可以在专业的网站上去获取。比如 iconfont,基本上常用功能的图标都能在这里找到。还可以对图标进行简单的处理,比如颜色,大小,十分方便。

3. 注意

  • 应用内更新
    这个功能是必须在第一版就有的,因为这个功能是保证已安装你应用的用户能够第一时间获取你应用更新信息的基石。
    Android 项目必备(二十九)–>App 在线升级与更新

  • 分享功能
    这个模板不是必须要有的,但是却是最好能有的功能。为什么这么说呢?所谓物以类聚人以群分,我们的好朋友,用户的好朋友都是有着相似兴趣爱好的,当其中一个用户使用了你的APP,觉得很好玩的时候,他有可能也想分享给他的好朋友体验,这样一来,你可以不费吹灰之力,通过用户就能为你再生用户,岂不是美滋滋?
    【Android – 项目必备】使用友盟集成 QQ、微信、微博等第三方分享与登录

  • 意见反馈
    这个模块是一定要有的,因为作为个人开发者来说,你是没有很多时间来测试的,你也没有特别多的测试机来进行测试,所以,你更需要的是广大用户来帮助你测试,所以当他们在使用的过程中,遇到问题的时候,他们需要一个入口来反馈。而且当用户在使用的过程中,可能会有体验不佳的情况,或者他有更好的意见需要反馈,都需要一个入口来反馈,毕竟一个应用是需要在市场上进行不断的磨合才能越来越好。

  • 崩溃信息收集
    这个也是必须要有的,就跟前面说的一样,有些bug是在特定的机型上面才会出现的,如果你没有这个机型,那么你在开发的过程中就不会发现这个bug,所以你就需要使用一个插件来收集用户在使用的过程中出现的崩溃信息,比如日常开发中常用的移动时代首选Bug 管理系统

六、测试/修复 Bug

其实这是一个很蛋疼的事情,因为如果是我自己测试,我大脑会促使我按我的逻辑来操作,那么会有个屁的 bug 啊,这也就是为什么公司要招测试的原因吧。毕竟要找个比较贴近用户的人来操作才会找到问题所在,所以,我只能请我女票测了。

七、项目已经完成,提交应用市场?

八、关于软著

现在越来越注重版权看,所以我觉得不论你是基于练手走流程,还是真的想开发一个 APP,实现自己的价值,都有必要为你的应用去申请一个软著,就像给你的孩子上户口一样。而且有很多开放平台在你没有软著的时候,都会刻意不让你过。

有关Android 项目必备(三十)-->从 0 到 1 开发一个属于自己的 App的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  3. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  4. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  5. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  6. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  7. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  8. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  9. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  10. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

随机推荐