所以我一直在为 iPhone 开发一个中型企业应用程序,我可能需要移植到 Android 上。我使用原生 iOS SDK 编写了应用程序,完全不关心可移植性。我最初对不得不用 Java 重新编写整个应用程序并维护两个代码库感到畏缩,因此我研究了一些跨平台选项。
我在两个跨平台应用程序和一个使用原生 SDK 的应用程序中编写了一个简单的“hello world”,只是为了感受每个平台的性能和稳定性。这绝不是一个完全详尽的实验,只是快速而肮脏的测试。我惊讶地发现 PhoneGap 和 Appcelerator 的 Titanium 有一个非常明显的启动时间,只是为了显示“hello world”。此外,如果我关闭应用程序然后快速连续重新打开它(30-40 快速迭代),PhoneGap 和 Titanium 都会崩溃。另一方面,本机应用程序从未出现任何问题。
最初,我认为我可以忍受较慢的启动时间,因为承诺一个代码库可以统治所有这些。然后我遇到了以下潜在的障碍:
调试支持似乎有限。
根据 phone gap wiki,建议您在桌面上调试 (1) (2) 使用远程 Web 检查器 (3) printf 调试 [你在开玩笑吗?] 或 (4) 使用weinre
Titanium 的调试稍好一些,但仍然缺乏设备调试支持。有一个开放的设备调试请求已有一年之久,因此将来可能会得到修复。
对于只有少数开发人员的小型项目,调试可能不是问题,但随着项目变得越来越大并且越来越多的开发人员在相同的代码库上工作,它很快变得非常重要。
您仍然需要为每台设备调整 UI。
对于某些人来说,这可能会或可能不会担心,但我希望我们的应用程序看起来像原生应用程序并遵循每个平台的人机界面指南。所以我仍然会在 UI 层有重复的代码。
在这一点上,鉴于我必须为每个设备拥有单独的 UI 代码,并且设备上的调试选项不如原生应用程序丰富,我看不到跨平台开发框架会带来的节省。我认为最好的方法是用 C 重写我的模型,然后我可以在 Android(使用 NDK)和 iOS 之间共享该代码,每个设备都有自己的本机 UI。
所以我的问题是,有人对跨平台移动框架有什么经验吗?我对有限调试和重复 UI 代码的担忧是没有根据的吗?请记住,我想要一个看起来像每个平台的本机应用程序的应用程序。
对于那些使用过跨平台框架的人来说,这个项目有多大?你遇到了什么问题?你会再次使用这个框架吗?
-谢恩