If you were to start your app again from scratch what would you do differently, knowing the platforms you were going to port to? This questions comes as my team is about to under-go development for a mobile app targeting iphone, android and qt. We aim to complete the iphone version first, and then port to android and qt, and it would be great to know any tips or ideologies to grasp/employ from the outset, that would make the porting process as seamless as possible. I'm sure there a few of you who have completed their iphone version of an app first, and then gone about developing an android version. I am keen to know any of the hurdles that you encountered, or things you wish you knew from the start.
edit: More specifically, the app we are making will contain开发者_如何学编程 forms and some visuals(charts)
I think that while "porting" is the right verb in this context, the concept may not be right. This might be an unpopular answer, but here goes:
Don't port. Some number of classes may be directly usable (with just language translation) from one platform to another. Those you port. The UI, however, can and should be allowed to vary quite freely between the two platforms... different concepts, and more importantly, different components and different conventions, both from the user perspective and the developer side.
Case in point is the New York Times app on iPhone vs. Android. I'm sure they managed to keep about half of the app running on shared code, but the rest is translated to follow the idioms and SDKs of each platform. Superficially, it's the same app, but when you really get into it, many things are quite different.
So, instead of advising you "not to finish one port before starting any of the others," I would advise you to identify the common or shareable pieces of the app, and pay close attention to getting those as generic as possible. The rest of the app should probably be platform specific (Obviously your iPhone and iPad versions should share about 90% or more of their actual code...)
First identify common technologies available on all platforms and try to stick with those as much as possible - OpenGL, SQLite, etc.
Next I'd advise not to finish one port before starting any of the others. Start some groundwork on at least one of the others in parallel from day one. You will probably find that you can pick up on a lot of issues much earlier this way. You may not feel you have the dev resources for this but I think this is more important than it may look.
Pay careful attention to your software architecture (MVC? although Qt is Model-View-Delegate). There's always a tendency to let architectural purity slip in order to get to market quicker with a slightly dirtier, slightly hackier solution. Try to resist this as much as possible because you are going to have to bite these bullets anyway very soon.
As Simon noted, start some groundwork on at least one of the others in parallel. You will face lot of feasibility issues regarding implementing a single feature in the same manner across all platforms and this would happen when we try to imitate the same UI design (usage of controls) across all platforms.
精彩评论