我们2009年3月在Android Market发行了首版《Penguin Links》（游戏在此 平台的名称是“企鹅连连看”），随后又于2010年6月推出了游戏的iPhone版本。过去2年半里，我们推出许多更新内容；我们的游戏也经历种种起伏。我接触两个平台很长时间，今天将就两位平台进行比较。
在我接触iOS编程前，我已投身Java编程很长时间。我已适应那些令人望而生畏的编程IDE（游戏邦注：即集成开发环境），如IntelliJ IDEA、 Eclipse或NetBeans。我个人偏好IntelliJ，不仅因为它具有非常丰富的功能组，还因为此工具非常重视这些功能。同maven/ant无缝隙整合，文件名用色码标记，快速而简便的代码重组……如今功能数量已不足以区分IDE，能够区分IDE的是“生产性功能”。
这就是为什么当我首次采用Xcode 3.x时，其落后程度令我颇惊讶。它给的感觉就像是在2000年的Visual C++ 6.0上编码。我没有开玩笑！此工具具备所有必要功能——能够编译、编辑，包含源代码管理，能够进行代码重组。但完全没有“生产性功能”！你得传输多个等级的菜单方能完成“SVN添加”；最糟糕的是，你无法判断文件是否添加，或者你只有等到点击菜单后才能知道！代码重组通常会改变错误文件。因此我们很难搜索到文件。虽然我已采用Xcode 1年多，现在重新回到Java/IntelliJ，我依然觉得非常自在——因为我需要的所有工具都近在手边。
相比Xcode 3.x，Xcode 4无疑是一大进步。从中我看到更多现代IDE的痕迹，其添加更多方便的功能。但总的来说，Xcode 4依然落后于其他现代Java IDE。据说，IntelliJ IDEA开发公司JetBrains目前正在制作一款名为AppCode的IDE，主要服务iPhone编程。听到此消息，我非常高兴——至少他们能够在此领域中创造些许竞争。
2. App Store vs. Android Market
我最初基于iOS平台编制程序，因此我见证App Store应用的惊人发展过程。“App Store” 的诞生令所有人都受益匪浅——开发者现在可以在中心地带呈现自己的应用，覆盖全球上亿用户；用户只需投入99美分就能享用到顶尖的游戏/应用，这在App Store之前的时代我们完全无法想象。苹果在App Store所坚持的理念和执行方式是用户软件行业的一大进步。
谷歌在iOS App Store诞生后不久也推出自己的Android Market，从那以后Android应用的数量就快速增长。但从很多方面来看，谷歌Android Market依然落后于iOS App Store。
Android Market存在的主要问题是缺乏功能性，一个典型例子就是平台缺乏推广新应用的渠道。而在iOS App Store，新应用能够呈现于许多特殊类别中，从而吸引用户眼球（游戏邦注：例如“New and Noteworthy”、“What’s Hot”和“Staff Favorites”）。虽然这些分类不是特别重要，但它们能够创造额外机会，让优质新应用得以脱颖而出。若这些应用足够优秀，它们就会受到广泛传播。但在Android Market，应用发行后的唯一推广方式就是通过“Newly Released”类别。由于每天各类别中涌现的新应用成千上万，你的应用很快就会淹没其中，无论其质量如何。
我这里的“基础设施”是指，App Store/Android Market或iTunesConnect/Publisher Console背后的流程/软件，这些服务器每天不停地运作，以跟进网站，更新数据。你看不到它们，但只要你变更应用（游戏邦注：或发行新应用，或只是更新描述），你就会感觉到它们的存在。它们是隐居幕后的超能量。
不久前，我在App Store发行自己的《PenguinLinks 2》。这是个糟糕经历。这款免费游戏的发行非常顺利，但其相关“In-app Purchase”没有跟进，直到2周后才出现。于是，在游戏推出付费版本后，我决定周末进行免费促销。遗憾的是，在同周苹果针对33个国家添加了App Store服务。我所进行的价格调整并没有起到任何作用，直到周日早晨。最糟的是，游戏只是短暂地免费1小时，然后就变回原来的价格。显然整个发行过程遇到小故障。但这对我来说是场灾难：起初看到价格发生变化，我以为操作已顺利完成；所以我向许多网站和好友发送出促销邮件。1小时后，我收到许多邮件抱怨称游戏并非免费产品。
目前App Store依然缺乏许多在我们看来理所当然的服务。若用户提交应用评论，Android Market会立即呈现；但App Store则要几小时后才会呈现。在Android Market的发行商控制台，你可以即时看到销售情况；但在App Store，有时到了隔天，我们还无法看到总销售数据。我不会将iAd报告同谷歌的adsense汇总进行比较——二者没有可比性。
iOS vs. Android — Mobile Dev Platform Heads Up
We released the first version of “Penguin Links” game on Android Market (called “Pair Up” there) on March 2009. And then the iPhone version on June 2010. In the past two and half years, we had released many upgrades; and our games had their own up and downs. Being on both development platforms for a long time, I think it will be interesting to compare these two mobile platforms head-to-head. And here it is.
1. Development Environment
Before I started iOS programming, I was a long time Java programmer. I was used to some awesome programming IDEs such as IntelliJ IDEA, Eclipse, or NetBeans. My personal favorite is IntelliJ. I like it not only because it has a rich feature set, but also the consideration they have put in for those features. The seamless integration with maven/ant, color coded file names, highlighted changed lines, quick and easy refactoring … Nowadays, number of features is not enough to distinguish an IDE from others, it’s those little “productivity features” that make an IDE outstanding.
That’s why the first time when I started using Xcode 3.x, I was so surprised how outdated it was. It’s like programming in year 2000 on Visual C++ 6.0. No kidding! It does have all the necessary features — it compiles, it edits, it has source control integrated, it can even do refactoring. But all those “productivity features” are not there! You have to go down several levels of menu to do a “svn add”; and the worst part is, you can’t tell if the file is added or not after you clicking that menu! The refactoring often changes the wrong files. It’s hard to find a file. … Even after more than a year working on Xcode, I still felt so happy/relaxed whenever I was back to Java/IntelliJ — because everything I need is just right next to my hand!
Comparing with Xcode 3.x, Xcode 4 is definitely a big progress towards the right direction. I can see more signs from a modern IDE there. More convenience features are added. But as a whole, it still lags behind other modern Java IDEs. I also learned that JetBrains, the company makes IntelliJ IDEA, is creating an IDE for iPhone programming, called AppCode. I am so glad they are doing that — at least they can introduce some competitions to this area.
But on the other hand, I do appreciate Apple giving the whole development package to developers for FREE (thank god they don’t charge us for thousands of dollars like Microsoft charges for Visual Studio) — except the $100 membership fee I have to pay. Many of the tools included in the package, such as Interface Builder, Instruments, are so powerful that their equivalents on Java side can easily cost hundreds or even thousands of dollars. On this part, iOS developers are lucky to have this great all-in-one package.
It’s a close call to decide who wins this category. Java IDEs are better, but Apple does provide better supplement tools and it is catching up quickly on IDE. So I’ll leave this decision for you. Leave a comment and let me know what you think on this topic.
2. App Store vs. Android Market
Since I started programming on iOS, I have watched the amazing growth of the apps on App Store. The invention of “App Store” is a huge benefit for everybody — developers now can list their software on a central place, accessible by hundreds of millions of people all over the world; and consumers can get some top notch games/applications with just 99 cents, which is unimaginable before the App Store era. Apple’s vision and implementation on App Store is probably one of the most important contributions to the consumer software industry.
Google also launched its Android Market soon after iOS App Store, and the number of Android apps have grown rapidly since then. But in many ways, Google’s Android Market is still behind iOS App Store.
One big problem for Android Market is its lack of functionalities. One example is its lack of ways to promote new apps to Android Market. On iOS App Store, a new app could get on many special categories to attract users’ attention, such as “New and Noteworthy”, “What’s Hot”, “Staff Favorites”, … They may not really mean much, but they do provide extra ways for those better new apps to stand out. And if those apps are good enough, they will prevail. But on Android Market, once an app is released, the only way it could be noticed is through “Newly Released” category. With thousands and even tens of thousands new apps released for each category every day, you new app will soon be flooded to nowhere, no matter its quality is good or bad.
So, in this category, Apple is the clear winner!
3. Supporting Infrastructure
When I am talking about “Supporting Infrastructure”, I mean those processes/softwares behind App Store/Android Market, or iTunesConnect/Publisher Console, and those servers running 24×7 to keep the site up, and data up-to-date. You can’t see them, but you can feel it whenever you make a change to your app, either a new release or just a description update. They are the ultra-power behind the scene.
About a month ago, I released my “PenguinLinks 2″ games to App Store. It was an awful experience. At first, my free game went out, but the two “In-app Purchases” associated with it didn’t went out until two weeks later. And then, after my paid version was out, I decided to run a free promotion on a weekend. Unfortunately that’s the weekend when Apple rolled out App Store to 33 more countries. The price change didn’t take effect until Sunday morning. And the worst part is, it briefly went free for an hour, and then was completely rolled back. Clearly there were some glitches in the release process. But it was a disaster to me: when I saw the price changed the first time, I thought that was it; so I sent out all my promotion emails to many websites / friends. An hour later, I got tons of emails complaining it was NOT free.
I don’t really blame Apple on this. I was a backend developer, I know things can go wrong sometime. However, from these incidences, you can tell Apple’s backend infrastructure supporting App Store and iTC is really outdated. Just think about it, how often do you see other major websites going down for hours just for maintenance? And how slow iTunes is comparing with other websites?
Actually, many things we take as granted nowadays are still not available on App Store. When a user submit a review for your app, it is available immediately on Android Market; but it takes hours to show up on App Store. At Android Market’s publisher console, you can see sales in realtime; but on App Store, sometime you don’t even have an aggregated sales report one day later. I don’t even compare iAd report to Google’s adsense report — there is no comparison.
It may not be fair to compare Apple to Google on this category. After all, Google is probably one of the most capable technology companies (if not “the” company) at processing large volume of data quickly and effectively. Years of experience on search and data mining make it easy for Google to handle those data from Android Market. But for Apple, this is a whole new area. Apple must know this as well. They are building new data centers and hiring data processing experts. I have no doubt they will get better and better, but for now, Google wins this round.
So, which mobile platform is better? Well, as you can see, it’s a really close call. I would rather leave that to you. I actually like this because competition is always good, isn’t it?（Source：clingmarks）