安卓开发是否像iPhone一样有任何限制?

40

Android开发和iPhone一样受到限制吗?或者你可以从任何人那里下载任何东西吗?

我想了解 iPhone 或 Android 的开发,但我听说 iPhone 的开发相当受限制!

10个回答

34

有许多方面需要考虑,关于两个平台的相对限制性。

市场

相对提交流程而言,Android市场无疑比App Store限制更少。好处是你可以将几乎任何想要的东西放入Android市场。缺点是你可以将几乎任何想要的东西放入Android市场(一个充斥着垃圾 "应用程序"的市场在某些方面是一种限制)。

iPhone方面的一个大问题是,安装不在App Store中的应用程序的选项受限 - 你只能将应用程序作为测试版分发(仅限100个用户),或越狱你的iPhone。然而,Android允许你从任何地方安装应用程序,包括网页。

应用程序

Android平台的核心设计哲学之一是“所有应用程序都是平等创建的”,这意味着你可以自由地用第三方版本替换手机上的应用程序。实际上情况并非如此,因为许多Google应用程序要么具有大多数应用程序不可用的特殊功能(参见:Android市场),要么使用未记录/本机API(参见:日历)。

iPhone则没有关于平等的说法,而苹果的立场是“只有一种方法来做,那就是苹果的方法”。iPhone OS 4.0新增了应用程序可以在后台运行的功能。Android应用程序不能做到的一件事是接收推送通知,但Android 2.2新增了通过Android Cloud接收推送通知的功能。

来源

Android是开源的,但其中一些固件组件是闭源的。即使如此,编译Android代码库也需要一些火箭科学技术。此外,谷歌已发送停止和撤回命令以阻止重新分发包括Android市场和谷歌地图应用程序的自定义映像。

iPhone完全是封闭源代码,最近开发者协议的更改引起了争议,因为它们规定所有提交到应用商店的应用程序必须最初用"Objective-C、C、C++或由iPhone OS WebKit引擎执行的JavaScript编写,并且只有使用C、C++和Objective-C编写的代码才能直接链接Documented APIs。"

软件开发工具包(SDK)

Android SDK可以免费下载;iPhone SDK需要免费用户注册才能下载。Android开发可以在Mac OS X、Windows或Linux下进行,而iPhone开发仅限于在Mac OS X下进行。如果您想在实际设备上测试软件(而不是模拟器),还需要支付99美元的iPhone开发者账户费用。

用户群体

最后但并非最不重要的是用户群体。当本答案最初撰写时,iPhone的用户群比Android多得多,并且增长速度也比Android快。随着Android开始支持多个运营商和硬件平台(请参见:Open Handset Alliance),这种情况正在发生变化。运行Android的设备列表现在相当长,尽管还没有一款设备能与iPhone的受欢迎程度相匹配。

一些分析师现在报告称,Android的销量已经超过了iPhone,并预测Android很快将超过iPhone的市场份额。其他分析师认为,当iPhone 4g发布时,苹果将赶上来。基于个人电脑行业的平行历史,前者似乎更有可能——苹果的设计和用户体验被谷歌微软复制并开放运行在通用硬件上。


8
然而,iPhone 在实际设备上测试时(模拟器以外),需要一张价值 99 美元的许可证,这是一个问题。 - bgw
希望我已经解决了评论。 - Luke
嘿,是的。添加了关于语言要求的注释。 - Luke

33

不是的!这就是 Android 的优美之处。尽管有类似于AppStore的等效物,但你可以从任何地方下载应用程序。而且,它是使用 Java 编程的,所以你不必担心像垃圾回收这样的乏味问题(只需以速度为代价)。

并不是要侮辱 iPhone。它也是一个很棒的平台。


编辑:很多人指出 iPhone 的 API 不是限制性的,而是审批过程是。这是真的,但是 iPhone 的 API 在低级硬件访问、后台处理(仅在3.0中支持通知)等方面还是有一定限制的。

iPhone 3.0 迈出了正确的一步,但还有一些工作要做。

另外,你考虑过开发 JB 版本的 iPhone 软件吗?我不确定它的市场份额如何,但我确实知道很多人都使用越狱设备。


编辑:我在一些类似问题的帖子中阅读到,由于垃圾回收器的原因,Android 的 Java 可能会降低一些速度。只是需要注意。


我必须诚实地说,我需要的Android开发时间大约是桌面开发时间的10倍。没有任何限制(访问、传感器等),我什么也做不了。这应该很容易,但实际上每次我想做一件看似简单的事情时,我都不得不搜索我需要做的另一件事情,以使另一件事情能够让我做我真正想做的那件事情。这太令人沮丧了... - Vandrey

8
如果你说iPhone很“限制性”,我会形容Android为“不成熟”。
在Android中仍然存在许多错误,如果您正在进行一些非平凡的程序,那么您将不可避免地遇到这些错误。其中一些只存在于模拟器上,而其他一些则只存在于实际手机上。
尽管在我的经验中,使用Eclipse在Android上开发感觉就像在iPhone上使用Xcode开发一样好,甚至更好。Google提供的工具集非常完整且跨平台。垃圾收集器确实在编程时产生了巨大的差异。
我假设您已经有了Mac,否则iPhone根本不是一个选项。

7
垃圾回收和移动设备不太兼容,这也是为什么iPhone应用程序比其他平台应用程序更具响应性的原因之一。 - Philippe Leybaert
1
我完全同意iPhone更加响应。虽然随着垃圾回收和硬件的进步,我觉得这个问题随着时间的推移可能会减少。 - David Lin
“限制性”的意思可能是指语言的可用性,以及像在后台运行应用程序这样的东西。 - Daniel C. Sobral
XCode和Eclipse都是非常好的集成开发环境。不过,XCode更快、响应更迅速(Eclipse是用Java编写的)。 - bgw

7

iPhone开发并不特别限制。将最终应用程序放在苹果的App Store上是限制性的部分。

如果您正在开发的应用程序遵循苹果关于允许iPhone应用程序执行的指南,那么选择它作为您的初始开发平台似乎是一个易如反掌的选择。 如果违反了苹果的指导方针并且无法修改以遵循这些指导方针,则您的市场将仅限于越狱手机-非常小的子集。


如果违反了苹果的指南,更像是“如果违反了应用商店人员当天制定的武断规则”。请参阅http://gizmodo.com/5483217/apple-rejects-app-for-containing-minimal-user-functionality。尝试http://www.google.co.in/search?q=apple+rejects+app以获取更多乐趣。 - Sundar R

2
苹果开放吗?嗯...不,硬件封闭、软件封闭,所有东西都是封闭的。我认为阿尔卡特拉兹比苹果更开放,至少你可以在那里离开自己的牢房。
你可以为iPhone编写应用程序。它会被批准吗?不确定。他们可能会因为任何原因而拒绝它。你可能使用了蓝色背景,而苹果只喜欢白色和灰色,从而拒绝了它。
但是对于Android来说,完全是开放的。你可以为它开发应用程序,甚至可以开发Android本身。永远不用担心被拒绝。
但是说真的,苹果市场份额更大,数百万人使用和喜爱iPhone,并且他们很可能不会很快离开。而另一方面,Android是为T-Mobile设计的。还有人用T-Mobile吗?
在我看来,如果你没有gPhone,我会为iPhone开发应用程序。然而,尽管我不喜欢苹果封闭的哲学,但如果你希望通过你的应用程序赚钱,它们是更好的选择。

在我居住的地方,T-Mobile是一种选择,但AT&T不是。人们必须在其他地方购买他们的iPhone,并在这里漫游,祈祷AT&T不会抱怨。 - Nosredna
也许你可以妥协一下,在中间达成共识,比如说购买一部hPhone。当然,这款手机完全使用Haskell编程实现的;-) - Jonas Kölker
1
我认为Alcatraz比苹果更加开放。 - bgw
2
世界比美国大,在欧洲(荷兰)T-Mobile相当大(现在还有Vodafone和HTC Magic)。尽管如此,从全球范围来看,iPhone的数量仍然比gPhone多。 - BlackShift
由于秋季将有大量的安卓手机发布,因此这里给出-1。HTC已经发布了两款,并将很快发布第三款。三星也即将发布一款,许多其他手机制造商也宣布推出安卓手机(其中之一是索尼爱立信)。 - Hannes Ovrén
2
为什么人们对这篇文章如此挑剔? - bgw

1

0
在大多数情况下,谷歌不会限制应用程序的使用,但运营商和设备制造商有权限制某些功能。运营商可以阻止特定的应用程序,并且运营商/制造商可以禁用设备的某些功能。
例如,摩托罗拉Backflip就无法安装非官方市场应用程序。此外,一些手机无法访问官方市场。

0
不需要,您可以自己签署应用程序并通过自己的Web服务器或其他方式分发生成的APK文件。

0

'Restriction' 可以有两种意思:

  1. 安装任何你想要的东西的能力。Google 在这方面非常出色,诺基亚居中,而苹果则是最差的。
  2. 你的应用程序可以做什么。它们都对你能做什么和不能做什么有任意限制,但在我看来,诺基亚的限制最少,Google 介于其间,而苹果则是最严格的(再次强调)。

个人见解可能有所不同。


0

是的,Android确实是开源的,你可以将任何东西发布到市场上。但是:

  1. 你仍然需要学习如何签署你的应用程序并注意市场上的技术发布要求(如保持适当的版本ID等)。

  2. 如果你真的想要从/向任何人发送一个包,那么接收者(称为APK文件)需要知道如何使用命令行工具叫做 'adb' 来管理他们的手机以安装和卸载应用程序。这很容易做到,但是你需要安装Android驱动程序和 SDK 工具。

为了公平起见,iPhone开发模型也可以相对容易地分发测试版本的应用程序,尽管可能不像Android那样容易。你的测试人员需要在设备连接时从iTunes获取一个特殊的设备ID,然后你创建一个包含所有测试人员密钥的许可文件,并将其与应用程序发布目录一起分发。用户然后通过iTunes安装你的应用程序。


6
你不需要使用ADB安装APK文件。如果你在安卓浏览器中输入一个储存在网站上的APK文件链接,它会允许你直接下载和安装。 - Reto Meier
1
Reto,感谢您的评论 - 如果通过URL安装,APK是否必须遵循版本ID卫生规则? - jottos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接