Tinyfool的Blog

这就是我,Tinyfool,郝培强!身高180,体重240,标准的中年老胖子。 有妻有女,无房无车,现居上海,程序员。

Browsing Posts published in March, 2010

这两天,腾讯推出了QQ for android。和QQ for iPhone的好评如潮不同,这款软件受到了很多批评,仅仅在Twitter上面我就看到了很多:

@LifeNT:怎么看都觉得腾讯的android qq很山寨!

@tonyq0802:原来官方那个的android的qq是固定在480*360分辨率的 据说milestone登录的时候那个qq企鹅就被拉成长企鹅了

@Beichen:QQ for Android 体验好差,登录界面不能横屏。

@siyet:当我用milestone进入qq 看到那张被生生拉长的小企鹅的时候 我的脸也长了~~~ 小公司不针对两个分辨率做优化也罢了 可是腾讯。。。丫的

我就不一一罗列了,大多数都是批评在milestone上面的分辨率问题。

我在twitter上面做了一些短评:

对Android QQ的抱怨颇多,证明了我说过的话,Android兼容性是个大问题。QQ不是游戏,但也有分辨率不匹配带来的用户批评了,而出问题的机器,开发者可能听说都没听说过。所以开发其实也更费钱,光买各种测试机就不少钱。

上次去豆瓣,他们经历也类似,iphone买了一个就够了,但给android开发者买的手机已经显得不够了,不仅不如新的好玩,而且不多买几个测试机的话,谁知道以后会遇到什么兼容性问题。

给qq做多分辨率适配多半不难,但是有两个问题,需要多少精力才能了解市面上所有的android,多少钱把测试机都买全,多少精力去测试。开发成本就这么上来了。

兼容性的另外一个问题是向前兼容,就算QQ现在做个完美的兼容所有市面上android手机的app,这时候横空出世一个完全不同的型号,QQ的开发者还是会被骂一顿。当然问题总能解决,一切最后都变成了开发成本。

QQ是家上市公司,这点开发成本不算什么。其实我也不太care腾讯的事情,但是,作为第三方开发者,这个案例是可以参照的。第三方开发者如果想以android为基础平台,难度,复杂度,兼容性,开发成本,要综合考虑。

如我前面一个文章的观点,我没有说android就纯粹是个垃圾。但是你需要了解里面的陷阱和困难。我自己的程序也会出android版本,但是至少在现在绝对不是我的重心所在,未来这个平台在兼容性和渠道上进步了,才会是,这个时候更多观望是更安全的。

其中,@quakelee和@virushuo同学提出有4sq这样做的很好的客户端。

@lordhong同学说:

android 自己有套处理多种屏幕的机制,虽然繁琐了点。但如果用相对布局来出来,大部分情况下界面还是过得去的。腾讯的android程序员要么不懂,要么就是太懒。

@hanlei同学说,分辨率不那么重要。

我觉得:

有处理多种屏幕的机制,也是开发成本。iphone和ipad也是有机制的,而且很平滑,而且是可以挣到不同的钱的,那个我不批评,因为人家是两款产品。

有网友问道:

首先声明我不是一个专业的编程人员,但是计算机我的业余爱好之一,所以我的问题可能很“业余”~

我最早是在订阅的Google Reader上链接到你的Blog上的,随手收藏后就隔三差五地上去逛逛。我发现你非常钟爱Mac,也做很多iPhone APP的开发。我个人也非常喜欢苹果,也在iTunes Store上面买软件,也在等待着新Macbook Pro的问世。但是在我看来,我认为苹果在某些方面显得非常“封闭”——好像希望借助于某种垄断来攫取全世界的金钱。这说好听点是“孤傲”,说难听点是“固步自封”。那么在你看来,“那个卖水果的”这种“封闭”对于普通用户,开发者,甚至像我一样的计算机爱好者来说是一件好事呢还是一件坏事呢?它是否会被计算机产业的开源的浪潮所吞噬?

第二个问题源于我浅薄的网络知识。我们都知道我朝现在顽固的互联网监管制度,所以很多人选择“PrisonBreak”,我也曾经尝试过使用这种软件(比如Free Gate)。当然我的目的不是去发布什么言论,只是想呼吸呼吸窗外的空气而已。可是我很担心这种行为会被监管,be tracked,甚至有”人身危险“。你能作为一个专业人士向我开释一下这个问题么?

最后对你能够耐心看完这封邮件表示感谢,顺祝Blog越办越好,程序越编越牛X!

我的回答是:

1、关于苹果和appstore

苹果确实在某些方面显得很封闭。但是我认为这是好事儿。未来的图景,我认为不是只有开源,或者只有商业,或者只有appstore这种模式。我认为appstore模式威力巨大,但是也许很难移植到Mac/PC/Linux等平台下,大家在这里早就习惯了开源和商业。

但是在特定领域appstore的威力惊人,苹果挣其中30%,其余70%由第三方开发者赚取。这是一个伟大的胜利,看看苹果财报你就会知道这开辟了多大的第三方软件市场。以前,第三方开发者当然也在赚钱,但是这样规模形式的聚集在一个平台下,是前所未见的。

假设iPhone平台一切都不变,我们去掉appstore,我们会发现,很多现在已经发财了的第三方开发者,他们还仅仅是在梦想发财而已。所以,封闭,也不见得是万恶之源。更何况,苹果没能力变成我党,未来的图景上,它是绚烂的一块,但不是全部。开源/商业/appstore我认为,未来各有所长各得其所。

我多次强调,喜欢开放的人,心态更要开放。允许这世界有人不想开源,不想开放,这才是开放的心态。你热爱copyleft,你大可以把你的代码都开源了。但是copyleft的精神绝不包括强迫别人开源(受授权限制则令当别论)。我自己有开源项目,有商业项目,我不觉得人格会分裂,恰恰我认为这构成了完美的平衡。

我乐见,开源/商业/appstore各显神通,都蓬勃发展。事实上,开源兴起,并没有杀死商业,反而是扩大了我们整个软件行业的视野和疆域。appstore也具有类似的作用,我期待它给我带来更多的惊喜。

2、关于网络监管

我国法律不健全,目前我不知道有任何法律赋予了有关部门监管所有网民所有通讯和随时掐断的权力;也不知道如果我们对抗这种行为有什么法律后果。如果监管和掐断的行为是有法可依的,我甚至不反感,因为我们可以在法律的框架内和错误的思想政策博弈。但目前,翻墙是每个自由人应该做的,我们不应做信息时代的二等公民,不管是从精神上还是利益上,二等公民都是悲惨的。

你翻或者不翻,对你的监控都存在。当然我不是说翻墙毫无人身风险。不过,twitter最近有个中文排行,他们发现中文twitter用户有4万之多。那么我们最低限度可以估计,有4万人正有意无意的翻墙。惩治这4万人,是巨大的系统工程,必然耗资巨大,所以暂时不用太担心。

翻或者不翻,做好个人防护在信息时代都很重要。多学习安全知识吧,我朋友霍炬有篇文章,值得一看《匿名网民的安全指南》,我不是安全专家给不了太多意见,多自我学习吧。翻出去以后,也不是万事大吉,生理自由有了,更重要是心的自由,心态开放,勇敢的学习新知识,了解新观念。

我会把你的问题和我的回复都发出来,但是不会公布你的邮箱和网名,如有问题,你回复我,我可以把你的问题删去,:)。

iPhone日历控件是由我贡献的,一个开源的类库,使用它你可以在你的iPhone软件里面插入一个日历视图。使用起来非常简单。

下载代码

如果你知道如何安装SVN,或者你的电脑已经安装了SVN,那么你可以简单的使用SVN来下载代码,在终端键入下列命令:

svn checkout http://iphonecal.googlecode.com/svn/trunk/ iphonecal-read-only

如果,你可以从以下两个链接下载代码:

http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.h
http://iphonecal.googlecode.com/svn/trunk/TdCalendarView.m

创建一个iPhone应用程序项目

下载代码后,你需要创建一个iPhone应用程序项目。打开XCode,点击菜单”File”->”New Project…”,在打开的对话框中,选择View-based Application。

把项目命名为TestiPhoneCal(或者其他什么名字,无所谓):

创建项目以后,点击菜单”Project”->”Add to project…”,选择你下载的文件,注意选中”Copy items into destination group’s folder”选项。

设置view类

打开你的nib文件。

选择你要作为日历的view,把它的类设置为TdCalendarView。

好,现在运行你的程序,你就可以看到你的日历了。

如果你按照这个教程操作,遇到了困难,也可以使用我提供的Demo Code,作为自己代码的模版。下载地址:http://iphonecal.googlecode.com/files/TestiPhoneCal.zip

English Version

话说最近豆瓣很关注iPhone平台,他们刚刚推出了豆瓣电台iPhone版本(地址:http://douban.fm/app。我现在就正在使用,感觉不错,速度也很快,跟本地没区别,不过貌似歌对我这样的老年人来说有点太新,跳过一堆歌也没有找到我爱听的,或者我听过的。)。所以,豆瓣邀请了很多人去豆瓣聊聊关于iPhone和iPad开发的问题。

这次去见到了之前没见过的flycondor,在twitter上面已经认识的@hongqn,在ignite北京活动上认识的阿稳,很久以前认识的阿北@ahbei(其实说起来好久没见过阿北同学了,居然还记得我的ID,感动)。

在豆瓣我大侃了一通对iPhone开发开发的看法,所以的很high,可惜昨天晚上回来就给老婆做饭,然后晚上还有一堆事情,当天没时间整理思路写下来,可惜了。

以下是我刚刚整理出来的我的一些想法:

1、iPhone和Android哪个个平台更有前途

我更看好iPhone平台(包括iPhone,iPod Touch,广义也包括iPad),原因是我认为在移动平台未来取得成功最重要的是开放和标准。iPhone在硬件上面完全封闭,发行渠道上也很封闭,那么我为什么还看好它呢?

iPhone在硬件层面的封闭保证了产品的系列化,标准化,这是第三方开发者最应该珍视的。回想历史,摩托罗拉手机在中国的总销量可能是iPhone的百倍,但是虽然有这么多的用户,但是没有产生任何真正广泛流行的应用。那么是摩托罗拉没有智能手机平台么?不是,摩托罗拉是市面上几乎所有流行智能手机平台的大玩家。J2ME刚刚出现的时候,我下载的开发包,里面的模拟器就是基于各种款式的摩托罗拉手机的,当时摩托罗拉几十款流行手机同时都支持了J2ME。Nokia做Symbian的时候,摩托罗拉也是第一批合作厂商。Linux/Android/WinCE等平台也从来没有少过摩托罗拉的身影(最近好几款大火的Android平台手机就是摩托罗拉出品的)。

在iPhone横空出世之前,只有Nokia在Symbian上坚守S60、S40等的多产品系列的,标准化系列化的产品设计。回报就是在移动百宝箱的Java区,游戏、应用几乎都是for Nokia的。这就是市场和统一市场的区别,iPhone的用户数量,短期内决无可能超过摩托罗拉的用户数量,但是iPhone用户数量早已超过摩托罗拉任何一款手机(或者一个相关系列手机)的用户数量了,这是产生流行应用的必要土壤。

所以,因为产品的系列化,标准化,Nokia曾经有过自己在智能手机领域的辉煌。但是整个手机行业太固步自封了,Nokia太固步自封了。自从7650以来,我已经用了很多款Nokia的S60手机了,虽然性能越来越好,外观越来越酷,但是近10年了,真正的大改进并不多,开发仍旧困难,操作仍然笨拙。话说那天,我在地铁上看到一个美女用手写笔去拉动手机右边的滚动栏,恨不得大喊一声,“你改悔吧,别浪费生命了,买个iPhone吧!”。这其实就是iPhone出现前,手机行业固步自封的最明显表现。

我尤其珍视的是软件层面的开放,对第三方开发者的开发。这点可能也有人不同意,他们认为iPhone平台软件层面也很不开放,比如不能后台运行第三方程序,不能自行发行,不能开发第三方输入法等等。但是,这些种种的局限,有些我相信可能是阶段性的,有些是为了让发行渠道的利润更高。总体来说,我认为如果你要开发的应用在iPhone平台的种种限制下,能够做出来,那么iPhone平台就是对你来说,就是目前最好的移动平台,也是最开放的移动平台。开放是一个多层面的问题,不是说开源就一定最开放,iPhone平台目前丰富的应用,丰富的文档,方便的开发环境,这也是平台开放性的重要组成部分。

同时,iPhone平台的渠道优势也是完全不能忽视的。最近最火的一个相关新闻是,植物大战僵尸iPhone版本9天赚了100万美元,这款游戏的PC版本,在中国都早已经是白领中很流行的东西了。这家公司在这款游戏应该也早就挣到了很多钱,但是短短9天的销售获得100万美元,我想他们在很多平台都很难达到。这就是苹果公司精心打造的一键付费,方便的软件发行系统的功劳(甚至是他们很多令人不爽的苛刻规则的功劳)。

之前,我对中国到底有多少台iPhone一直犯嘀咕,这两天,我问了一个在国内很火的应用的公司里的朋友,他告诉我的数字是他们公司的app目前有100万左右的免费用户,有5%左右的付费用户。这样我就得到了一个很好的参考值,那么我可以斩钉截铁的说,中国的iPhone数量应该是100万以上。

据说豆瓣刚刚上线的电台iPhone应用的流量,已经占到了豆瓣电台总流量的一个相当比例了,而相应的Android版本目前还比较沉寂。我有个朋友做了一个很火的信息网站,年前他们做了一个web的iPhone优化版。于是我就毛遂自荐想帮他们做个官方的app,结果拿了api我还没动手。朋友告诉我已经出现了一个非官方的app,而且现在iPhone优化的web版和这个第三方app,目前已经达到他们总访问量的1/4了。

2、那么我是完全不看好Android平台么?当然也不是。

有人把现在Google领导的Android平台和Apple领导的iPhone平台的竞争比作当年PC机和Mac机的大战,不得不说,我也很喜欢这个比喻,确实有太多太多相似的地方了。在硬件方面,iPhone和当年的Mac机一样,是封闭的,没有兼容机,没有第三方硬件厂商。从软件上来看,iPhone平台是不开源的,Android平台是开源的。

那么如果以唯开放论的观点去看未来,Apple应该毫无机会,Google必胜。但,我不这么看。首先我们回顾一下历史,PC平台硬件确实是开放的,但是软件从来不是完全开放的,Cpu也从来不是完全开放的。这个开放系统的伟大胜利,我曾经有篇文章仔细分析过,有兴趣的可以看看《标准,要挣钱除了标准还是标准》。文中的道理简而言之就是,这个伟大的开发系统的胜利的缔造者IBM根本不是受益者,掌握了两个标准在手的微软和Intel才是胜利者。而今天我们仔细想来,这个开放平台开放的恰到好处,正式因为这两个关键标准的不完全开放,才保证了这个平台虽然很开放,但是一直都是一个标准化的产品。你在Dell的PC写的程序,可以运行在HP、IBM、甚至联想的PC,是这个高度标准化保证的。

所以,太多成功学的教材,只顾大谈开放,而不去提标准;或者只提标准而不提开放。我认为都是不对的,事实上在现在,一个系统要获得成功,我认为关键是要把握开放和标准之间的平衡,不能因为开放,而忽视了标准,反之亦然。

如今Android的战略中的每一点,我都很喜欢,但是它在标准化和发行渠道上,跟iPhone确实有巨大的差距。标准化和兼容性方面,最近有个很明显的例子,一款叫做Leech Killer的Android软件的作者@an0最近被Android手机间的不兼容性折磨得最终决定放弃这款软件的开发。他的写到:

我很伤心的宣布:Leech Killer 已死,有事烧纸。

是太多互不兼容的 Android 手机杀死了它。在如此混乱的世界中,涉及电话功能的工具软件已经无法由一个人维护。Leech Killer 在许多新款手机上无法正常工作,用户很生气,后果很严重。有人甚至说,它就是一坨:( 我很抱歉,朋友们,我真的已经努力了,但是我连你们的手机长啥样都不清楚 ─ 我不可能所有款式的手机都买一个。

安息吧,我的孩子,我会想念你的,你的那些老机器人朋友们也会的。

我一向认为这么多国际大牌厂商参与的,已经有10年左右的智能手机革命,十年不成的原因正是因为缺乏足够好的标准,所以客户端兼容性差。而现在Android这个单一平台,其本身的不兼容性问题已经开始成为了一个严峻的问题。开发一般应用,也许还好,凡是涉及到硬件的,酷的程序,以及游戏,一般来说都对兼容性有比较高的要求。

比如一个应用他需要一个快捷键,而某款手机缺少了一个键造成这个快键无法按下,等等。比如一个应用需要GPS+重力加速度传感器,但是有些手机只有GPS,而没有重力加速度传感器。更可能的就是一款游戏,你在某个分辨率下把有些做到精益求精以后,突然发现Android平台的新宠分辨率居然跟你的游戏不匹配,又要做无数的调整。相信这10年来,混迹于移动平台的第三方开发者都深有体会。

跟兼容性问题一样严重的就是,Android的市场并没有app store这么强的渠道能力,这也是目前不可忽视的问题。

从长远来看,我对这个世界的看法是越来越多元,同时因为多元也越来越美好。我认为iPhone平台和Android平台未来很有可能在很大的程度上分庭抗礼,有各自的核心价值,有各自不同的第三方开发者生态链。这不是PC机和Mac大战的结果,因为那个时代,整个世界也不足够多元(当然还有很多细节,今天就不分析这个老深坑了)。

但是Android如果想达到这样的局面,要在兼容性/标准化方面做出巨大的努力。还需要对发行渠道也就是他们的app市场上做出巨大的努力。

就目前为止,我想提出的建议是立足iPhone平台为主做开发,可以适当的付出一定的精力在Android平台,或者只是先观望Android而已。我乐见未来的世界,既是开放的,又是多元的。只有一种选择的用户是最可怜的用户。PC机这个号称最开放的平台,后来不也变成了让用户只能选择Windows的,OS层面不足够开放的平台么?索性我们有 Linux和Mac,大家才有了更多的选择,也才带动了Windows做出很多改进。

附,本文引发的一些相关的讨论:

  • iPhone和Android的开放问题
  • 招聘广告

    腾讯即时通信部门大力招聘 Mac/iPhone 平台开发人员,欢迎联系和推荐。
    工作地点:深圳腾讯大厦

    可以Mail简历给我,我帮你转发给腾讯有关人员。
    我的邮箱:Tinyfool@gmail.com