找回密码
 立即注册

想从头开发一个Android原生APP需要学习什么技术?

| 2023-3-9 18:00 阅读 73028 评论 3

大一新(旧)生,学了半年的c,以开辟一个简单的简单的日志+打卡类app为方针,想借此提升一下编程的才能,叨教该怎样计划线路(不求快,想渐渐写),感谢Ort

  • kvxqewf 2023-3-9 18:03
    首先,确定下你手头的设备,手机是iPhone还是Android,笔记本是MAC还是WINDOWS,这涉及到真机调试。如果是Andorid手机,原生开发建议用JAVA,入门使用《第一行代码》就足够了,笔记本是mac或windows都可以

    如果是iPhone,你得有台mac,或者装个黑苹果,语言用swift

    另外,APP开发这一块属于大前端,你还得学习下后端开发,如果用android,就用Java spring boot开发后端好了,统一了语言。
  • xieyx_2003 2023-3-9 18:03
    巧了,我今年也自己写了一个时间块工具记录自己的作息


    随手截图了这个月的数据,暴露了本月疯狂偷懒的事实

    因为我本职是个java民工,所以就用了自己最趁手的java技术栈(spring boot2,jpa,mysql)搭了服务,前端因为只是给自己用所以完全不考虑美观和复杂UI问题,用了最土的原生html\js\css搭配点jquery。加上我自己买的云服务器+域名,我可以自由在电脑、手机,公司、家里随时打开这个页面记上一笔。(虽然这个应用只给我自己用,没有公开访问,不过我还在上面搭了个wordpress博客,感兴趣的朋友可以去看看)这算是对我个人而言比较理想的方案,对于刚步入大学初学的题主,可能暂时没有条件完整实现这套方案,没关系,我们可以一步一步来,在积累成果的同时提升和进步:
    实现核心逻辑需要:c语言或者任意感兴趣顺手的语言,简单的输入输出知识。这一步几乎不用学任何额外内容,用大一的c语言知识也能够完成。咱们需要的是什么,本质是一个数据录入与展示的系统,只要有地方能输入数据,存起来,然后在需要的时候读出来就好。用c语言简单的写一个命令行小作业也能做到。这部分逻辑在后面若干个版本的升级迭代中,一直都会存在下去。
    2. 持久化数据存储需要:数据结构、文件读写、数据库原理这一步可以考虑一些数据结构的处理和展示了,比如录入的时候是一条一条的数据,但是展示的时候要统计成图表或者变换格式,这些数据该怎么存,怎么加工?这里面就涉及了数据结构的处理了。什么地方用链表,什么地方用树,怎么做更方便,怎么做更高效都是需要考虑的问题。用命令行实现的1.0版本每次关闭再打开就什么也不记得了,这就需要把数据持久化,也就是写入到文件或者数据库来保存,这一步需要学会文件读写的操作,大部分语言也都自带io库,调用一下就能轻松把记录写成一个txt文件了,有点追求可以再学习下xml或者json格式,更加严格准确的记录信息。除了写入文件,也可以直接写入数据库,会需要用到数据库链接库和工具,然后掌握sql语言。其实写入文件或者数据库各有优劣,作为一个轻量应用其实不是必须要用到数据库,现在很多手机app也是直接写入文件的方式来记录(所谓清除手机缓存也就是删除这些记录文件)
    3. 实现可视化数据需要:对应语言的图形UI库,或者基于html的各种前端框架2.0版本的数据可以录入保存了,写一些简单的逻辑也能读出来,但是如果只用命令行,就只能跟电脑一问一答,看到的内容挺不直观的,这时候就需要图形化UI来展示信息。包括c语言在内的大部分语言都自带UI库,引入以后可以写出一些有图有按钮的应用程序了!其实到这一步已经可以做很多东西了,其中最容易引起人兴趣的自然是做一个游戏出来,我当年初学java的时候就是用写桌面应用的swing框架楞写了几个小游戏出来(贪吃蛇、扫雷、flappy bird甚至打飞机)。有一个一直没有直面的问题到这里也该考虑了:到底该用什么技术、语言、框架?这个世界真的很丰富多彩,写一个简单的程序也有无数种途径来实现,至于该做出什么选择,往往是由需求来决定的:使用html+js的web前端,好处是可以跨平台,并且各平台实现效果相对统一,一次编写处处应用,缺点是很难自己记录数据,往往需要服务端来进一步处理。web前端也有很多细分领域,从最精简的手写html,到jquery之类的古典库,到vue、react等现代框架。使用苹果、安卓的原生应用,好处是充分利用平台特性实现复杂的功能,容易获取读写权限来记录数据,缺点也就是会局限在自己的平台,其他平台没法用。苹果会用到objective c和swift,安卓会用到java和kotlin(另外谷歌近几年尝试做了基于dart语言的flutter框架,试图提供跨平台的能力)如果不拘泥于移动端,pc端还有更多桌面应用的框架,例如c#.net的wpm,c++的qt,其实回到最开始用c语言写的小程序不也是其中一类么。至此我们3.0的应用已经:有图形界面甚至有动画特效,能在本地写入文件记录数据或者连接数据库存储信息(可以使用sqlite超轻量化的本地数据库方案,免去单独搭一个数据库服务器的功夫)。
    4. 搭建服务端需要:编写一个服务端程序,网络工程知识、运维知识其实3.0的版本给自己用也完全足够了,比如用安卓写了发个apk到自己手机上安装,或者写一套html放到电脑或者手机文件夹里,打开index.html访问。这样偶尔打开自己写的程序弄一弄,美滋滋。再进一步也就是最终的需求了,把存储放到云端,实现跨平台多端访问,心情好还能做个账号系统给别人也玩一玩。前面很多地方都提到了使用数据库来记录信息,但是如果实际尝试就会发现,好不容易成功运行了数据库服务,但是只有在电脑上,或者同一个局域网的其他设备才能连接,出个门就一无所用了。为了实现随时随地的信息存取,我们就需要搭建服务器了。其实现在相比10年前,现在真的容易太多了,各种云服务商贴着脸推销他们的一步到位全套服务,最低配置的价格也就几十块,学生新人还有各种免费的机会。域名其实也不是必须的,毕竟自己用的话直连ip也不是问题。服务端也就是一般说的后端,跟前端一样有很多技术架构可以选择,这里就不逐一介绍了,感兴趣可以自己去搜索一波。至于服务器,可以学一波linux命令行操作,也可以整个windows server远程桌面把文件拖上去双击启动,看需要和经费吧。我是被公司的服务器折磨了很久,已经烂熟各种基本操作,所以自己在linux上部署web服务,搭个nginx代理转发。新人学习尝试不必强求,毕竟上面说的这些每一个领域深入进去都是一个巨坑,时间肯定是不够用的,只管挑着自己感兴趣的部分折腾就好。
    至此我们终于完成了比较理想的4.0版本。题主看到这个回答激动不已,回去立即开工,发现虽然这段回答敲了好多字,但是具体的内容却都是一笔带过,每推进一行,都要查阅好多额外资料,学得很是漫长痛苦,但是题主作为一个有着锲而不舍精神的人,硬啃下来了这块大骨头,1.0,2.0,3.0,4.0,一转眼题主就变成了大四临近毕业的人,回想起来真是一段充实的时光啊,带着这份内容丰富的作品简历,题主也顺利拿到了实习offer,走上了专业开发的道路,可喜可贺。
  • 12012cn 2023-3-9 18:01
    想法不错。我们来慢慢看需求分析简单分析一下问题的需求



    大体分2个需求,日记和打卡。分别对日记和打卡「增删查改」。可以知道大概需要什么样的操作。简单起见,减轻交互需求,能用列表就用列表来操作。
    功能分析从Android端(客户端)出发。需要具备最基础的编辑文本功能(还不涉及图片)。如果数据存储在本地,Android内需要使用数据库。数据库存储日记和打卡的记录。这时我们知道Android端涉及 界面,数据库
    如果数据存储在服务器上,需要掌握数据库的操作方法。mysql或者mongodb。后台框架自选,spring,nodejs或者其他框架此时Android那边需要加上网络访问
    规划路线可以看到我们前面已经面临了一些选择。数据库选哪种?框架选哪种?不同的框架使用的编程语言也不同。Android开发语言选Kotlin还是Java?如果服务端想用spring,Android端可以优先用Java。减轻一点学习量。而且学会Java后再去学kotlin也很快。按照最简单的情况来估计。可以看下图

    这是比较简单的路径。需要结合个人实际情况,学习意愿,发展规划,课程安排来做调整。
    慢工出细活。最长的路也是最快的路。
文章点评
2022-04-26 09:16
APP运营 手机GIF动画制作软件哪个好?6款手机GIF制作APP推荐
  我们经常能看到视频做成的GIF动画表情,以前GIF动画智能通过电脑软件制作,不过如 <详情>
2022-04-26 10:02
APP运营 推荐10个超级棒的英语学习APP
现代社会的人,基本上已经没有办法不接触英语了,英语作为世界最通行的语言,就算在国 <详情>
2022-04-26 10:07
APP运营 App开发、小程序开发该如何选择技术开发公司?
术业有专攻。一个好的开发团队对做好一款App至关重要,好的团队会有专业且标准的需求 <详情>
2022-04-26 10:28
APP运营 如何用手机远程协助长辈?我找出了6个最佳方法!(免ROOT ...
最近我婆婆头一次换了部智能手机,难免这也得教那也得教但毕竟没办法随时亲身面授,我 <详情>
2022-04-26 10:46
APP运营 如何在M1的MacBook中安装手机App?| 竟有点实用!
这篇文章的主题其实非常简单,就是在M1的MacBook上安装手机的App。但一开始我觉得这个 <详情>
2022-04-26 10:51
APP运营 推荐16个非常棒的在线学习APP
现在的人们,每天日常生活中,基本上是已经完全离不开手机了,我也经常玩手机,在手机 <详情>
2022-04-26 11:07
APP运营 手机App确实在偷听你谈话,方法死都想不到
早在去年就有用户发现:只要和朋友聊天时提到某样商品,打开购物软件,立刻就会收到相 <详情>
2022-04-26 12:53
APP运营 市场部、运营部、品牌部,别傻傻分不清楚!
摘要:市场、运营、品牌、公关、新媒体、策划……,如何区分这些似是而非的职能,看这 <详情>
2022-04-26 12:56
APP运营 运营知识应该从何学习?
先学理论,再get技能,最后用学到的这些运营理论+技能做出真实有数据的运营项目,完整 <详情>
2022-04-26 13:18
APP运营 搞用户运营的看过来!蔚来、理想、小鹏、威马APP用户 ...
我是做社区运营工作的。上个星期我在面试社区运营的候选人,我问她在国内你认为运营最 <详情>