从小白到独立开发Android和IOS两种平台app过程与总结

简介: 16年上半年在帮老师,帮外面随便做点东西以便得到些生活费养活自己。下半年去外面公司待了一段时间,然后选择回来帮自己做个东西,历时三个月,独自完成安卓及IOS版本app的开发部分。

16年上半年在帮老师,帮外面随便做点东西以便得到些生活费养活自己。下半年去外面公司待了一段时间,然后选择回来帮自己做个东西,历时三个月,独自完成安卓及IOS版本app的开发部分。

开发过程与问题

我之前没了解过安卓和IOS开发,一开始对整个项目也没什么概念,脑袋中只知道要做个电商app,中间就是遇到各种问题,后来一步一步的做下去解决掉。我做的是电商app。整个过程学习占了大部分时间,修复Bug,还有重构代码。三个月大多数时间都只做这三件事。

学习安卓,看郭霖的《第一行代码》,再看点极客学院的安卓视频,这是快速做东西的号搭配。《第一行代码》我看了好几遍,我买了好几本安卓书,这本写的最好,我看的最多。极客学院的安卓视频,教的很浅,但是时间短,所以可以在短时间内知道一些安卓技术,然后结合第一行代码,不同就翻阅,google就可以做东西了。
学习IOS,看小码哥的ios视频,不懂就看。ios开发的我没遇到好书,关于Objective-C的,买本Objective-C的参考书就好了。

Android开发知识点

想要做一个完整的Android app,必须要会的东西。

  • Gradle 用来对安卓项目打包编译,项目的依赖,签名配置等。一个自动构建工具 (必须)
  • Activity,Fragment,ViewPager,ToolBar,BottomBar,Recyclerview。(必须) 这些要会用,理解的越深越好 (不同的App需要的组件可能不一样,我觉得这几个大部分的app都会用到吧)
  • Android的事件机制,事件的传递拦截等。
  • 布局控件,RelativeLayout,LineerLayout。一些布局的属性都要掌握 (必须)
  • 网络通信(我用的是Volley)(必须,一般app都要和后台通信吧)
  • 自定义简单的控件 (有些内置的控件,可能无法满足需求,需要自己定制简单的控件)

个人感觉会了上面的这些东西,做出一个App一般是足够的。

Android可能遇到的问题

  • ViewGroup和View的关系,经常出现childView alredy have a parent.you need to remove it's parent first.
  • Fragment的生命周期要理解的很深才行,不要以为看了google的官方文档上面的Fragment生命周期就以为懂了,后来不断的遇到问题,专门研究下会好点。
  • 布局过程也要深入了解下, 各种wrap_content,match_parent里面是怎么回事,布局文件里面的属性到底是怎么回事,要明白。

// 额外的工具库,让app变得更加强大

  • ButterKnife,这个很好用,用于绑定视图,可以少写不少代码
  • GSON 将JSON数据转换为JAVA的模型,或将模型转换为JSON数据传输给服务器
  • EventBus 这个库说的是可以更方便的进行android组件之间的通信,可是我基本没怎么用到
  • SmartTabLayout 这个可以自己换成其他的库,用于页面滑动,增强版的ViewPager。
  • 推送通知用的阿里的云推送
  • 分享用的 ShareSDK

两个多月,知识点学到了这些。这是做出一个完整的app需要的知识点。

IOS知识点

做完了Android开发之后,学习IOS,我的建议是先不要入门直接用Swift,当初我也是新手,徘徊要选Objective-C还是Swift得时候,听说Swift是更加现代化的工业级标准语言,吸收了Python还有现代流行语言特性,学起来更简单,我就首先学习的Swift,但是新手直接用Swift会出问题的。

  • Swift2.x和Swift3.x的版本不同,虽然是小的不同,但对刚学的新手,会让新手产生迷惑
  • Xcode的版本一直在变,我按照苹果官网给出的实例敲代码都无法运行,因为苹果官网给的实例程序是基于Swfit2.x好Xcode7.2的。 仅仅是一些小的版本差异,在Xcode8上就不能用。这对新手都比较致命,直接打击自信心。
  • Swfit的库并不多,资料也不是很多,在我搜很多资料的时候,大部分都是Objective-C的,而且从书店买的书大部分都是Objective-C的,基于Swift3.x版本的书几乎没有。
  • 我在用Swift的时候无法使用阿里百川的电商SDK接口,因为百川电商SDK用的是Objective-C开发的,大公司的IOS产品都是基于Objective-C开发的。
    ...

基于以上几条,如果新手学习IOS开发,现在我的建议是先学Objective-C,虽然会多写几行代码,但是资料多,有头绪,Swift3.x的碰到了问题,资料就很少。

做出一个IOSapp需要掌握的知识点:

  • 掌握UIViewController。
  • 掌握常见的视图,几乎所有的视图都是以UI开头的,UIView,UILabel,UIButton,UIImageView,UITable,UIScrollView等等。
  • 掌握几种常见的视图创建于加载的方式。从代码创建会麻烦,可以从XIB文件创建视图,从Xib初始化视图和从代码初始化视图调用的初始化方法不同。
  • 掌握Foundation框架,几乎绝大部分代码都要用到这个框架里的东西,里面的东西就是在我们熟悉的类型前面加上NS,代表NextStep公司的意思,了解了这,记住NSString,NSArray,NSNumber等等就容易了。
  • 掌握自动布局,这个很重要,会自动布局才能在不同的手机屏幕下做适配。
  • Objective-C的语法知识,刚开始会用起来比较怪,后来就好了。

//额外的库

  • MJRefresh 表视图的增强工具
  • MJExtension 类似于Java的GSON,数据转模型的。
  • Masonry 很好用的代码自动布局库
  • AFNetworking 网络通信用的库
  • YPTabBarController 页面滑动效果用到的
  • Toast 类似于安卓的Toast,在屏幕的某个地方提示一条消息,类似于AlertView。

如果你曾先学习的是Objective-C,那么两个星期应该可以做出一个IOS app。一个星期用来学习Objective-C,一个星期用来动手写代码。

后台

我后台使用的是Laravel框架,优雅,简单。主要用了Laravel的以下几个功能

  • 掌握Request
  • 掌握Route,在路由文件里定义各种路由,由控制器处理
  • 数据库的控制部分,Laravel有ORM还有普通的数据库操作,我觉得普通的数据库操作就够了。
  • 中间件
  • Laravel的View部分,这个给非技术人员写一些页面以便非技术人员增删改查数据。这个要涉及前端了,好在我之前做过一段时间的前端。

Laravel是一个简单的优雅的后台框架,很好用,很好学。如果你的服务器用的是Nginx的话,那么还要做一些额外的配置。

整个App基本上就这么多东西,历时三个月从小白到一个人写后台,android ,ios端。创业团队……

Android与IOS对比

Android的官方文档非常全,语言只有好用的Java。IOS的缺点是Objective-C用起来很奇怪,Swift的资料又不多,苹果的官方文档又是过时的。

Android要适配多个版本的机型,刚开始app就不兼容低版本的Android app,后来7.0版本的App又有些不兼容……,而IOS的不管几s基本上没问题,除了IOS的操作系统版本变化,我只用了IOS 10的系统,其它的没用。

Android的控件很多,用起来有些麻烦,刚开始会经常崩溃,IOS的控件只有几个,但是每个控件都封装的很好,每个控件都提供了很多功能。

我觉得IOS学起来,开发起来更容易。
但Android用起来会更广泛,Java也比较通用,Android开始开源的,我觉得android做精的话,会更有趣一些。

总结

迫不得已,未毕业之际,加入一个创业团队,自己又不是科班出身,认识的搞IT的又少,只能扯开膀子自己干,学了三个月的时间,自己知识面上宽了不少,解决问题的能力强了不少,同时也意识到了一些问题。

做IT这一行,知识是学不完的,绝大部分问题都是类似的,你愿意去找总能找到问题的解决方案,但是因为绝大部分问题解决方式都类似,Google,StackOverFlow,所以自身的进步只在知识点上,解决问题就那几种方法。
知识是学不完的,知识也都是类似的,但知识的深度也是无止境的。 有句话说过:知识的广度和深度是相辅相成的,知识的广度促进你往更深的方向挖掘,知识的深度又可以让你融汇贯通到更广的领域。

现在知识点不够精是我的不足,但我不是那种蜻蜓点水到处学一点的人,我所学的东西都有做出成品出来。而且我是短时间内边学边做的。

路漫漫,东西做的不够精致,等于没做,在一个创业公司,东西做的不好,对自己也是致命的,不完完善优化……

相关文章
|
11天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
16天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
16天前
|
Android开发 Swift iOS开发
深入探索iOS与Android操作系统的架构差异及其对应用开发的影响
在当今数字化时代,移动设备已经成为我们日常生活和工作不可或缺的一部分。其中,iOS和Android作为全球最流行的两大移动操作系统,各自拥有独特的系统架构和设计理念。本文将深入探讨iOS与Android的系统架构差异,并分析这些差异如何影响应用开发者的开发策略和用户体验设计。通过对两者的比较,我们可以更好地理解它们各自的优势和局限性,从而为开发者提供有价值的见解,帮助他们在这两个平台上开发出更高效、更符合用户需求的应用。
|
25天前
|
安全 Android开发 数据安全/隐私保护
深入探讨iOS与Android系统安全性对比分析
在移动操作系统领域,iOS和Android无疑是两大巨头。本文从技术角度出发,对这两个系统的架构、安全机制以及用户隐私保护等方面进行了详细的比较分析。通过深入探讨,我们旨在揭示两个系统在安全性方面的差异,并为用户提供一些实用的安全建议。
|
2天前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
18天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
20天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
18天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
|
19天前
|
存储 XML JSON
探索安卓开发:从新手到专家的旅程
【10月更文挑战第36天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从零基础开始,逐步深入安卓开发的奥秘。无论你是编程新手,还是希望扩展技能的老手,这里都有适合你的知识宝藏等待发掘。通过实际的代码示例和深入浅出的解释,我们将解锁安卓开发的关键技能,让你能够构建自己的应用程序,甚至贡献于开源社区。准备好了吗?让我们开始吧!
26 2
|
20天前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!