基本上我需要你的建议我的好朋友:D
在过去的六个月里,我正在使用Titanium Appcelerator移动框架探索/学习/开发iOS应用。我的经历大多是好的或非常好的。
Titanium的一些负面部分会占用时间,尤其是在设备上进行测试时。当仅使用Xcode(本机)时,您的应用程序会立即在设备上启动,而使用Titanium时,您需要等待一段时间(1-2分钟)才能构建应用程序,然后将其安装到设备上(iTunes或iPhone配置)效用)。
基本上你可以用Javascript + Titanium进行原生的一切。如果Titanium不支持iOS框架的某些部分,您可以构建本机Objective-C模块并在Javascript代码中使用这些功能。
现在使用Titanium Appcelerator并使用Javascript构建应用程序我觉得非常舒服。我还为iOS构建了一些模块时学到了一些Objective-C。例如。我在我的第一个iOS应用DeviceMotion中使用的Spellery。
现在问题:
大多数公司只想要原生开发人员并且对Titanium持怀疑态度。 Titanium与其他跨平台SDK(例如PhoneGap)不同,因为在这里您实际使用本机组件(按钮,标签等),并且您的应用程序未在WebView中运行。但如果公司想要原生,那么你就不能强迫他们使用Titanium。
由于我想开发移动应用程序作为一项工作,我是否应该在最近六个月内深入探索Titanium并学习本地编写这些应用程序?
您对此有何看法,因为我认为学习/完善两者都没有意义?
我现在非常喜欢Appcelerator Titanium,所以这是一个非常重的决定。
答案 0 :(得分:11)
坦率地说,我仍然建议学习更多的Objective-C。它是一种非常强大的语言,它旨在让您更轻松地获得Apple认为必需品的许多内容(例如,动画,持久性,数据库,MVC)。 Apple已经非常严格地围绕Objective-C设计了他们的框架,并且为了真正使用它们,你必须使用他们的语言。另外,你知道其他什么语言?我是一个人,在使用C / C ++和脚本语言(Ruby)之后,发现Objective-C变得更加容易。这完全取决于您在应用中需要多少iOS。即使它Titanium可以让用户感觉到iOSy,iOSy代码实际上是非常有趣的编写和维护。它可以是一个非常漂亮的框架。
答案 1 :(得分:6)
我同意以前的答案中所说的一切,你似乎已经接受了回到光明的一面 - 很好的选择!
我想补充一点:不要把这六个月当作浪费。在您使用Titanium期间,您已经学习了很多技术细节,以及iOS的可能性和局限性,当您切换到Objective-C时,这些细节应该很有用。
答案 2 :(得分:6)
啊啊......我不确定我的答案是否会被stackoverflow管理员删除。对不起,我要花几分钟时间阅读这篇长篇回复(如果你有兴趣继续阅读)。
我在2010年创立了自己的公司。我们只在php,mysql,html,jquery网站上工作。随着移动平台越来越受到关注,我们开始研究基于Sencha Touch + PhoneGap的移动应用程序。 2011年底,我在Sencha Touch + PhoneGap培训了我的12位开发人员。您可以了解在新框架中学习和培训由12名开发人员组成的团队需要付出多少努力。
在开发了超过两十个基于PhoneGap的专业应用程序后,我们意识到它远离本机应用程序。只有一个例子就足够了 - PhoneGap应用程序需要更长的时间才能将初始html页面加载到webview中。在启动画面后出现一个空白的白色屏幕(在Android上它更可怕!)。在最近的手机版本中,它已经修复了。但谁正在使用phonegap知道它与真正的obj-c应用程序有多远。我们在PhoneGap + Sencha Touch框架中工作了一年。
我们停止了在PhoneGap工作并开始学习&在Titanium训练我的12个人。我知道从头开始另一个新框架是多么艰苦的工作。我们继续与钛合作2年,为iOS和Android开发了30多个成功的钛专业应用程序。我们专注于开发钛模块。例如,我们在iOS和Android上开发了PayPal钛模块。 (你一定是咯咯地笑,这真是太棒了!它已经由钛团队开发了)。不,不使用旧的MPL库。我们使用了最新的Paypal sdk 2.8.0,并且没有在线使用它的模块。
2014年中期,我们开始研发Tinder / Lovoo克隆类应用。我们为类似的动画开发了一个ti模块(通过实现UIView drawRect)。一切都很好。但是当它在iPhone上运行时,设备变得过热并且在动画页面上电池耗尽。我们创建了一个示例演示Xcode应用程序并应用相同的动画,在仪器中测试,一切都很好。内存或处理器没有过载,设备保持冷却,电池性能良好。我们尽一切可能使钛模块更好,没有运气。最后发现钛本身占据了巨大的空间来运行它自己庞大的框架,并且对于每个动作,它都会激发很多代理事件,并继续监听不必要的事件。复杂的UIView动画让它变得疯狂。这只是一个例子 - 在Android上它是一个很长的故事。
为什么公司决定使用Titanium?第一个答案是它的跨平台。你只需在js中编码,它就可以在iOS和Android上运行。哈哈..这么开玩笑!对于真正的专业应用来说,这不是真的。 Android版本有很多差异和错误,这是Android版本的更多工作量。实际上,我们永远不会使用与Android相同的iOS代码库精确副本。所以跨平台理论只适用于课堂项目。如果您不相信我制作一个简单的钛安卓项目来捕获图像,请将其上传到服务器上,然后再从服务器再次显示。拍摄星系S5,以横向模式(右侧的主页按钮)拍摄照片(非纵向模式),可以看到图像方向搞砸了。哦!我忘了,如果你在服务器上传图像,从钛安卓应用程序,图像扩展名变为.txt
在Obj-C中UINavigationController popToRootViewControllerAnimated方法是导航回主页的重要功能。这种方法在Titanium中不可用!
我们花了数百小时来解决这些尴尬的问题。我的开发团队厌倦了钛。
你现在肯定会问我,为什么我们一开始没有启动Obj-C?所有钛开发人员的答案都是一样的 - Javascript很简单,Web开发人员已经熟悉它了。这是一个大错误。我们将iPhone应用程序作为Web应用程序。一个Web应用程序在Web浏览器上运行,更特别是在iPhone上运行的iPhone上。 “Safari”本身就是一个移动应用程序,我们希望Web应用程序应该以相同的速度运行类似的视觉动画,这是不可能的。 CSS3动画永远不会与基于iOS矢量的UIView动画相同。
iOS不是框架或库,它是一个操作系统。 Titanium是一个用Obj-C编写的框架。你不能在钛中使用Xcode的Storyboard UI设计工具。 Xcode开发人员知道UI界面设计的“约束”是多么性感。使用约束的这种视觉吸引力在Titanium中完全缺失。虽然我们团队声称我们可以使用Ti.UI.FILL / SIZE等来完成约束。但是在我们转移到原生的Obj-C后,我们知道这个约束系统有多强大!
我只是把我的头发拉出来后悔为什么我害怕看着那些用方括号的Obj-C语法并跳回到钛金属。感觉就像你在几十年前就已经过去几十年了,只是看着Obj-C不熟悉的语法。幸运的是Swift在那里,现在在Xcode中编码更加容易。虽然它需要一些时间来获得现有的流行和强大的Obj-C库,如AFNetworking,MBProgressHUD,OpenCV迁移到Swift。
老实说,我真的觉得应该禁止Titanium,PhoneGap,Xamarin等跨平台框架。他们的执照应该停止。钛是否为您提供本机iOS或Android无法提供的任何额外功能?相反,有更少的功能和更多的错误。我不明白为什么,如何在这种现代化的前沿技术上将人们拉回到过去,没有人能阻止他们!如何引导开发人员走向错误方向是合法的?如果“今天”发布iOS 9,Titanium会在下周为您提供所有新API吗?决不。他们只是阻止你,让你必须使用他们有限的错误API,你需要为模块付费,这可以很容易地用本机代码完成。
如果你对javascript了解得很好,逻辑意义上很好,相信我你可以在很短的时间内学习Obj-C。到时候&你失去调试钛问题的努力,你可以在原生的Obj-C中变得更有效率。嗯..关于android我不会说那么高。 Cos Android永远不会与iOS相比。 iOS诞生于Mac OS,一个完善的桌面操作系统。你知道android。
不要陷入跨平台困境的陷阱。 Titanium API的负载仅适用于iOS,您知道为什么,Android设备便宜,硬件便宜,无法顺利运行动画。
最后,远离任何类型的平台并坚持使用纯粹的原生操作系统,无论一开始有多难,从长远来看,你会得到很好的回报,相信我!
对于Titanium团队,我查看了您的Obj-C和Java源代码。我尊重你们,你们在Obj-C,Java,node.js,python和javascript方面确实非常专业且经验丰富。但为什么?你为什么要把人引向错误的方向?你非常清楚浪费了多少时间来构建一个钛金属android / ios模块并进行测试。 你为什么不把你的努力变得更好。
答案 3 :(得分:4)
我敢打赌,其他很多人都会发布其他“重复”问题的帖子,以及他们自己的肆无忌惮的观点。所以我会把它留给他们,并提供我自己的经验。
我认为有充分理由深入了解这两者。原因如下:
Titanium让您可以非常快速地构建应用程序,并且每天都在变得越来越稳固。我最近构建了一个应用程序来直接比较Titanium,本机和几个竞争对手框架之间的开发时间。本地人大约一个半星期。竞争对手大约2周。钛是3天。这给了我很多时间来玩应用程序,使产品比竞争对手更好。我也能够在Android和Mobile Web上使用它。我有大约5个基于平台的条件,所以代码有很好的平价。
Native有你带来的优势。我想补充一点,你也可以访问平台提供的任何东西。了解本机将告知您如何构建应用程序(即使使用JavaScript),以及如何为这些应用程序构建模块。您也可以尝试打开Titanium生成的Xcode项目,并通过它直接在设备上运行。你可能需要做一个干净的构建(在Xcode中),但它比通过iTunes运行更快。
另外,我认为Objective-C本身就是一种优美的语言。它与我“长大”的代码(Java,C#,PHP,VB和其他一些代码)截然不同。习惯了它需要一段时间,但我很高兴我投入的时间。
免责声明:我为Appcelerator工作。希望您能够区分上述观点和事实。
答案 4 :(得分:3)
查看您感兴趣的职位发布,这应该回答您的问题。如果雇主正在寻找XCode的专业知识而对Titanium不感兴趣,那么请关注XCode ......
答案 5 :(得分:3)
添加到@Linuxios的优秀答案:
既然您声明要将移动开发作为职业进入,那么大多数人肯定会学习Objective-C,XCode和iOS SDK。最后,这取决于您,您的雇主,以及您的客户需求。但了解iOS是至关重要的。
另外,根据我的经验,如果应用程序很复杂,那么原生应该是可行的方法,如果没有其他原因而不是简单的调试,并且如你所说的那样,缩短了构建时间。
<强>更新强>: 另外还有一件事,如果性能是关键(即游戏),那么原生(C / C ++ / Objective-C)就是最佳选择。
答案 6 :(得分:1)
从我的观点来看,学习本机应用程序开发,iOS以及Android总是非常有用。正如您已经提到的,大多数公司都在寻找本机应用程序开发人员,因为除了平台的实际开发人员(Android,iOS等)之外,他们不想过多地依赖外部公司或框架。我还认为,一旦你能够开发本机应用程序,它就比使用像Titanium或PhoneGap这样的框架更容易。此外,提高自己的技能总是好的,特别是本机应用程序开发是一个可以学到很多东西的领域。不仅仅是语言,还有底层移动操作系统的架构。尤其对于Apple来说,我认为学习开发本土是至关重要的。他们在开发人员门户网站上拥有非常好的资源,您还可以了解很多有关预期用户交互设计的信息。
最后但并非最不重要的,我建议你继续使用Swift。它是一种伟大而强大的语言,修复了许多Objective-C的弱点。你可以基本上使用Swift开始表单刮擦而无需Objective-C。可以通过Swift访问完整的Cocoa-API。但如果你愿意,你仍然可以将Objective-C和Swift结合起来。例如,如果你需要使用尚未在Swift中实现的外部库。
希望我能帮到你一点。