- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我一直在为 iPhone 开发一个中型企业应用程序,我可能必须将其移植到 Android。我使用 native iOS SDK 编写应用程序,完全不关心可移植性。最初我对不得不用 Java 重新编写整个应用程序并维护两个代码库感到畏惧,所以我研究了一些跨平台选项。
我在两个跨平台应用程序和一个使用 native SDK 的应用程序中编写了一个简单的“hello world”,只是为了感受每个平台的性能和稳定性。这绝不是一个完全详尽的实验,只是快速而肮脏的测试。我惊讶地发现 PhoneGap 和 Appcelerator 的 Titanium 有一个非常明显的启动时间来显示“hello world”。此外,如果我关闭应用程序然后快速连续重新打开它(30-40 次快速迭代),PhoneGap 和 Titanium 都会崩溃。另一端的 Native 应用程序从来没有出现过任何问题。
最初我认为我可以忍受较慢的启动时间,因为一个代码库可以控制所有启动时间。然后我遇到了以下潜在障碍:
调试支持似乎有限。
根据手机差距wiki建议您在桌面上调试 (1) (2) 使用远程 Web 检查器 (3) printf 调试 [你在开玩笑吗?] 或 (4) 使用 weinre
Titanium 的调试稍微好一些,但仍然缺乏对设备调试的支持。有一个开放的request用于一年前的设备调试,因此将来可能会得到修复。
对于只有少数开发人员的小型项目,调试可能不是问题,但随着项目变得越来越大,并且随着越来越多的开发人员使用相同的代码库,调试很快就会变得非常重要。
您仍然需要为每个设备调整 UI。
对于某些人来说,这可能是也可能不是问题,但我希望我们的应用程序看起来像 native 应用程序,并遵循每个平台的人机界面指南。所以我仍然会在 UI 层有重复的代码。
此时考虑到我必须为每台设备使用单独的 UI 代码,并且设备上的调试选项不像 native 应用程序那么丰富,我看不到跨平台开发框架能带来的节省.我认为最好的方法是用 C 重写我的模型,然后我可以在 Android(使用 NDK)和 iOS 之间共享该代码,每个设备都有自己的 native UI。
所以我的问题是,有人对跨平台移动框架有哪些经验?我对有限调试和重复 UI 代码的担心是没有根据的吗?请记住,我想要一个看起来像每个平台的 native 应用程序的应用程序。
对于那些使用过跨平台框架的人来说,这个项目有多大?你遇到了什么问题?您会再次使用该框架吗?
-肖恩
最佳答案
我经常使用 appcelerators titanium。我的总体感觉是IOS部分很好,但android仍然缺乏,特别是在错误消息方面,调试还不错,你所要做的就是添加一些打印输出,但问题是99%的android 上的错误类似于应用程序因 nullPointerException 崩溃而没有提示,因为它来自底层 java,至少可以说是棘手的。
但是我会说 UI 的东西不是问题,钛控制自动将应用程序缩放到不同的设备屏幕(当设置打开时 - 应该查看 1.7 中的这个)。因此,通常您遇到的唯一问题是特定于设备的问题,例如在 IOS 中有一个正确的导航按钮,没有 android 等效项,因此您必须为此编写一些特殊的代码,鉴于有 2 个不同的平台,这是可以理解的。
鉴于 IOS 已经完全开发,我不确定我会做什么,人们通常这样做是为了避免两个平台的学习曲线,并通过保持相同的代码库来节省时间,不确定你有多少好处会摆脱这个。 Appcelerator 很好,但控件存在错误,它会更慢并且需要时间来学习,但它确实有好处。
我个人不会使用 phonegap,因为我不喜欢它基本上是一个 webview 包装器的想法,而且我在桌面上遇到了足够多的基于浏览器的问题,足以让我终生受益。
关于android - 为移动平台的易开发性和便携性而牺牲性能值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067561/
我正在生成代码,其中我恰好将 n 个单词从一个内存位置复制到另一个非重叠内存位置。 n 是静态已知的。 目前,我发出大量加载指令,然后是大量存储指令,但我怀疑从 n 的某个值开始,调用 memcpy会
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
用例如下: 我有一张 map ,其中将插入一些键/值。 该程序将查询该 map ,但是在第一个查询之后,我可以保证该 map 将完全不会被修改。 因为查询的结果完全是输入的函数,所以在查询方法上放置属
Helo 伙计们,我尝试使用 Refs 并在他的内部提供 this.setState 但它给出: Maximum update depth exceeded. This can happen when
在检查事件时,使用带有 switch 或 if 的代码块是很常见的事情。如果变得简单,它可以是干净的代码,但似乎仍然有比需要更多的行,并且可以使用 lambda 进行简化。 用 if 阻止: if(a
Amazon 最近宣布在其 RDS 产品线中支持 Oracle: http://aws.amazon.com/rds/oracle/ 我想知道是否有人使用过它,或者是否有令人信服的理由将我的数据从 M
我是一名优秀的程序员,十分优秀!