从小白到独立开发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,所以自身的进步只在知识点上,解决问题就那几种方法。
知识是学不完的,知识也都是类似的,但知识的深度也是无止境的。 有句话说过:知识的广度和深度是相辅相成的,知识的广度促进你往更深的方向挖掘,知识的深度又可以让你融汇贯通到更广的领域。

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

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

目录
相关文章
|
16天前
|
Android开发
Android MediaTek 平台增加UART接口的红外模块支持,支持NEC红外遥控
Android MediaTek 平台增加UART接口的红外模块支持,支持NEC红外遥控
12 0
|
29天前
|
传感器 人工智能 监控
Uni-app智慧工地数据大屏可视化监管平台源码带APP
智慧工地的核心是数字化,它通过传感器、监控设备、智能终端等技术手段,实现对工地各个环节的实时数据采集和传输,如环境温度、湿度、噪音等数据信息,将数据汇集到云端进行处理和分析,生成各种报表、图表和预警信息,帮助管理人员了解工地的实时状况,及时做出决策和调整,
48 0
|
1月前
|
缓存 编解码 测试技术
基于iOS平台的高效图片处理技术实践
【4月更文挑战第7天】 在移动应用开发领域,图片处理是一个常见且要求高性能的功能模块。特别是在iOS平台上,由于其封闭的生态系统和用户对流畅体验的高期待,开发者需采用高效的图片处理技术以满足应用的性能需求。本文将探讨一种针对iOS平台优化的图片处理流程,涉及图像加载、缓存策略、异步处理以及图形渲染等关键技术点,旨在为iOS应用提供一个低内存消耗、高效率的图片处理解决方案。
|
2月前
|
API 开发工具 Android开发
iOS 和 Android 平台的开发有哪些主要区别?
iOS与Android开发区别:iOS用Objective-C/Swift,App Store唯一下载渠道;Android用Java/Kotlin,多商店发布(如Google Play、华为市场)。设计上,iOS简洁一致,Android灵活可定制。开发工具,iOS用Xcode,Android用Android Studio。硬件和系统多样性,iOS统一,Android复杂。权限管理、审核流程及API各有特点,开发者需依据目标平台特性进行选择。
36 3
|
16天前
|
存储 缓存 安全
基于iOS平台的高效图片缓存策略实现
【4月更文挑战第22天】 在移动应用开发中,图片资源的加载与缓存是影响用户体验的重要因素之一。尤其对于iOS平台,由于设备存储空间的限制以及用户对流畅性的高要求,设计一种合理的图片缓存策略显得尤为关键。本文将探讨在iOS环境下,如何通过使用先进的图片缓存技术,包括内存缓存、磁盘缓存以及网络请求的优化,来提高应用的性能和响应速度。我们将重点分析多级缓存机制的设计与实现,并对可能出现的问题及其解决方案进行讨论。
|
8天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
11天前
|
人工智能 安全 Android开发
【专栏】探索未来:Android 与 iOS 在人工智能时代的融合与创新
【4月更文挑战第27天】在人工智能时代,Android和iOS两大移动操作系统巨头正加速融合与创新。Android以其开放性占据广阔市场,集成AI功能如语音助手;而iOS以其稳定性和生态优势,如Siri,提供卓越体验。两者在AI技术、应用场景上相互借鉴,拓展至医疗、教育等领域,并逐步打通生态系统。然而,技术竞争、数据隐私和标准不一是挑战,新市场需求、技术创新和产业合作则带来机遇。未来,二者将继续推动AI发展,为社会进步贡献力量。
|
15天前
|
存储 缓存 编解码
实现iOS平台的高效图片缓存策略
【4月更文挑战第23天】在移动应用开发领域,尤其是图像处理密集型的iOS应用中,高效的图片缓存策略对于提升用户体验和节省系统资源至关重要。本文将探讨一种针对iOS平台设计的图片缓存方案,该方案通过结合内存缓存与磁盘缓存的多层次结构,旨在优化图片加载性能并降低内存占用。我们将深入分析其设计理念、核心组件以及在实际场景中的应用效果,同时对比其他常见缓存技术的优势与局限。
|
16天前
|
存储 缓存 算法
实现iOS平台的高效图片缓存策略
【4月更文挑战第22天】在移动应用开发中,图片资源的处理是影响用户体验的重要因素之一。特别是对于图像资源密集型的iOS应用,如何有效地缓存图片以减少内存占用和提升加载速度,是开发者们面临的关键挑战。本文将探讨一种针对iOS平台的图片缓存策略,该策略通过结合内存缓存与磁盘缓存的机制,并采用先进的图片解码和异步加载技术,旨在实现快速加载的同时,保持应用的内存效率。
|
1天前
|
开发工具 Android开发
rk平台Android12屏幕永不休眠
rk平台Android12屏幕永不休眠
9 1