开园第一篇 - 论移动开发环境 IOS与Android的差异
首先,在真正写技术之前做个自我简介。本人08年开始学c语言 一年后,转vc++。开始接触MFC MFC做了两年。转眼11年了我考上了一个不知名的大专。搞C++发现没有市场了因为当时酷狗腾讯的软件已经日益成熟。想去打市场已经十分艰难(当时,自己很天真以为自己会做出个东西然后出去创业)而后,我卖了我的诺基亚N73买了一部三星galaxy ace(5830)就这样我开始走上了我的Google不归路。2012年我终于做出了我的第一个精品应用(所谓的精品应用是以工程师思维来看的 至少在我的5830上是飞一样的运行)并上架了Google play。俩个月之后,我发现我被Google坑了。不在中国玩了。Google退出中国了。我X,不带这么玩的啊!之后出现了两家Android应用市场。当时我就决定哪家也不上。你看看现在的Android市场是不是很赞同我的做法?之后很长一段时间我都没碰过Android除了学校作业之外。然后我也没闲着,我在研究mfc+c++9自定义用户界面,现在发现directUI比自己写底层OpenGL简单多了。不知不觉大三了,经过一番挣扎之后,做了半年Android外包。实习自费去了某大城市生活。由于实习的工资你懂得。逼得无奈继续外包吧。某一天我接了一个cocos2dx的项目这个项目如同神一样,改变了我的整个职业生涯。让我接触了apple,它让我知道了,什么叫真正的一处编译到处执行。边做cocos2dx边学习这object-c就这样IOS做到了现在。本人会以swift为主,oc辅助来写这个博客外带一点服务器知识。
好了,废话少说切入正题。目前的移动端开发真的是太乱了。如果说这样会加速市场的多元化那么Android市场真的是太多元化了。叫个手机公司就做应用市场之后靠隐私赚钱。上个应用求爷爷告奶奶的。这样的软件市场以个人开发者的角度来看真的太难了。我宁愿多花点时间去做苹果。苹果在软件方面方便太多了。不用去考虑屏幕适配问题。通常Android做完一个ui效果各种测试各种莫名其妙的崩溃还有奇葩的分辨率(note,note2)和奇葩的屏幕造型(s6 edge,note edge)真的烦死了。
以上是两大阵营的用户体验差异,接下来是开发差异个人Android喜欢用原生API+jni C++11写Android这种方法优势在于源码效率高,不过缺点也很多。比如,调试难、入门要求高;分块测试内容太多的时候很容易遗忘某些库。相比之下我更喜欢oc+c++11的IOS应用。由于oc不是基于java机制,oc和c++11融合的时候比Android好太多了运行效率根本不在一个数量级(jni)原理再怎么优化也不可能比直接执行来的快。
UI开发:两大阵营的ui方面都支持丰富的自定义扩展,几乎可以达到完全自定义每个控件
下面我就来说一下Android和IOS的缺点,优点我就不说了看看IOS和Android的缺点你更能接受哪个阵营
Android4.0我认为是Android的第一个正式版之前全是bata版各种卡 各种慢我就不多喷了 Android4.0不装Google play而是装的厂家应用商店。结果带来的问题就是AndroidAPP质量管理不严,很多APP靠隐私靠推送赚钱,Android的APP始终没有一个严格的管理办法。
Android的内存管理4.0~4.3无论开发者怎么遵循Android desgin 也终究没有解决内存泄露问题。好在 Android4.3把这个问题解决了。
再反过头来看5.0 5.0固然不错但除了Google亲儿子又有几个能用上呢?所以这就衍生出了另外一个问题,如何做好Android的兼容性?一提到这个问题估计很多开发者都很头疼吧?当然这不是今天的重点,关于这个问题以后有机会再聊。
说说IOS的缺点吧,IOS国内的学习资料比较少。开发必须用Mac os x 这在一定程度上提升了开发入门的门槛。况且苹果在IOS7以前IOS的生态是封闭的。几乎很少看到IOS的周边产品。IOS7开始逐渐开放生态。
以上纯为个人观点,不代表任何公司或组织
开园第一篇 - 论移动开发环境 IOS与Android的差异的更多相关文章
- android 串口开发第一篇:搭建ndk开发环境以及第一个jni调用程序
一:ndk环境搭建 1:开发环境 我使用的是android studio 2.3.3版本,搭建ndk开发环境比较简单,打开File----Settings----Appearance&Beha ...
- 开园第一篇---有关tensorflow加载不同模型的问题
写在前面 今天刚刚开通博客,主要想法跟之前某位博主说的一样,希望通过博客园把每天努力的点滴记录下来,也算一种坚持的动力.我是小白一枚,有啥问题欢迎各位大神指教,鞠躬~~ 换了新工作,目前手头是OCR项 ...
- bookStore案例第一篇【部署开发环境、解决分类模块】
前言 巩固Servlet+JSP开发模式,做一个比较完整的小项目 成果图 该项目包含了两个部分,前台和后台. 前台用于显示 后台用于管理 该项目可分为5个模块来组成:分类模块,用户模块,图书模块,购买 ...
- 第一篇:php开发环境
Window: 1.XAMPPhttps://www.apachefriends.org/index.html 2.WampServerhttp://www.wampserver.com/ Linux ...
- 第一篇 Windows 8 开发Windows Metro style app环境配置
半 饱问 题 到 我 这 里 为 止! 第一篇 Windows 8 开发Windows Metro style app环境配置 2012-09-24 08:24 by 半饱, 1289 阅读, 3 ...
- 第一章 搭建Qt开发环境
第一章 搭建Qt开发环境 1.到http://download.qt-project.org/archive/上下载Qt的源码包.我下载的是qt-everywhere-opensource-src-4 ...
- 第一篇:打造专属开发工具Eclipse篇
第一篇:打造专属开发工具Eclipse篇 eclipse 优化 1.动画很酷,但如果可以的话,我总是在所有的工具中禁用动画.所以classic或者window classic主题是我最常用的主题 , ...
- Eclipse搭建Android开发环境并运行Android项目
Eclipse搭建Android开发环境并运行Android项目 (详细) 安装环境: window 10 64位 安装工具: JDK.Eclipse.SDK.ADT 安装步骤: 1.JAVA JDK ...
- [Android] 环境配置之基础开发环境(SDK/Android Studio)(转)
[Android] 环境配置之基础开发环境(SDK/Android Studio) 博客: blog.csdn.net/qiujuer 网站: www.qiujuer.net 开源库: Geniu ...
随机推荐
- CSS的两大重点
一.属性:通过属性的复杂叠加才能做出漂亮的网页 二.选择器:通过选择器找到对应的标签设置样式,选择器的作用是:选择对应的标签,为之添加样式 1>标签选择器:根据标签签名找到标签 div{ ...
- Native wifi API使用
写于博客园,自己迁过来: 一.WlanOpenHandle打开一个客户端句柄 DWORD WINAPI WlanOpenHandle( __in DWORD dwClientVersion, __re ...
- matlab神经网络实验
第0节.引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集.Iris数据集可以在http://en.wikipedia.org/wiki/Iris_flower_data_set ...
- jQuery multiselect的使用
1,下载插件 https://github.com/ehynds/jquery-ui-multiselect-widget
- plsql很好用的自定义设置【转载】
本文是转载的,目的是方便自已随时可以查看.转载地址:http://blog.itpub.net/24496241/viewspace-740917/ 目的:方便自已随时可以查看 1.格式化SQL语句在 ...
- 写出易调试的SQL—西科软件
1.前言 上篇 写出易调试的SQL , 带来了一些讨论, 暴露了不能重用执行计划和sql注入问题, 十分感谢园友们的建议 . 经过调整后 ,将原来的SQLHelper 抓SQL 用做调试环境用, 发布 ...
- iOS 上架被拒原因保存
一.后台一直在获取用户的定位,需要给用户电池消耗提示 Your app uses the Location Background mode but does not include the requi ...
- app 要求字体使用楷体,使用字体包
1,下载字体包 http://www.3987.com/xiazai/6/fonts/36616.html#down 2. studio中src\main\创建assets\fonts,存放 ...
- Java基础知识系列——日期
日期类型也是在编程中经常用到的一种数据类型. Java中的日期类型为Date. 另外需要记住三个类: java.text.SimpleDateFormat; java.util.Calendar; j ...
- 合并两个排好序的链表(c++)
#include<iostream> struct node{ int payload; node* next; node(int payload){this->payload=pa ...