我是一个网页开发人员和我想将我的网页产品。其中一个产品是如谷歌地图:显示地图上的手机屏幕上,你可以拖或调整的地图和图一些信息,我们添加到地图。

我知道有一些技术,可以使用HTML,CSS和Javascript来开发本地的iPhone应用程序。我已经确定了几个:

是否还有其他类似的产品?之间的区别是什么?这应该我选择?

有帮助吗?

解决方案

我注册的计算器只是用于该目的的评论大多是投票回答在上面。坏的事情是计算器不允许新成员发表评论。所以我必须让这个评论看上去更像一个答案。

罗里*布莱斯的答复包含了一些有效分有关的两个javascript移动框架。然而,他的要点是不正确的。事实是,钛。更类似于不同。他们都获得移动电话的功能,通过一套javascript Api和应用程序的逻辑(html,css,javascript)内部运行一个地WebView控制。

  1. 。不仅仅是一个土包装的一个网络应用程序。通过的。javascript Api,"网络应用程序"已经接入移动电话的功能,例如地理位置,加速摄像头、联系人、数据库、文件系统,等等。基本上,任何功能的移动电话SDK提供可以是"桥"对javascript的世界。另一方面,一个正常的网络应用程序上运行的移动网络浏览器没有获得大多数的这些职能(安全的主要原因).因此,发送短信的程序是更多的一个移动应用程序于网络的应用程序。你当然可以使用。包网络的应用程序,不使用任。Api在所有,但这不是什么。是创建。

  2. 钛不会汇编html,css或javascript code入"地位"。他们被包装为资源的可执行捆绑,很像一个嵌入图像的文件。当的应用程序的运行,这些资源加入UIWebView控制和运行有(作为javascript,不当地位,当然)。没有这样的东西作为一个javascript到母代码(或目标-c)编译器。这样做是相同的方式。。从建筑的角度来看,这两个框架非常相似。

现在,他们是任何不同吗?是的。首先,钛似乎是更丰富的功能比。通过弥合更多的移动电话的功能,以javascript。最明显的。不会让很多(如果有的话)本地用户界面组件,以javascript。钛,另一方面,有一个全面的UI Api,可以被称为javascript创造和控制的各种机UI的控制。Utilizaing这些UI Api,钛的应用程序可以看看更多的"本土"超过一个。应用程序。第二,可以帮助你集中支持更多的移动电话的平台比钛。。Api更多的通用的,并且可以使用在不同的平台,如iPhone,机、黑莓、塞班,等等。钛是主要针对苹果和安卓至少现在如此。它的一些Api平台具体的(如iPhone UI Api)。使用这些Api将减少跨平台功能的应用程序。

所以,如果你关心你的程序是为了使它更多的"本地"寻找、钛是一个更好的选择。如果你想要能够以"港口"应用到另一个平台更易。会更好。

更新8/13/2010: 链接到一个钛雇员的回答米奇的问题。

更新12/04/2010: 我决定要给予这个职位一年一度的审查,以保持其信息的电流。许多事情有变化的一年,取得了一些信息,在初始后已经过时。

最大的变化来自钛。今年早些时候,Appcelerator释放钛1.0,则其离开大幅从其以前的版本从建筑的角度来看。在1.0,UIWebView控制是不再使用。相反,你叫钛APIs对于任何用户界面功能。这个更改意味着两件事情:

  1. 你的应用程序的用户界面完全成为本地人。没有更多的网络用户界面,在你的程序,因为本机钛Api采取了控制所有用户界面的需求。钛的应该得到很多的信贷,通过开拓在"跨平台的机UI"前沿。它提供了程序员,他们喜欢的外观和感觉的机UI,但不喜欢的正式编程语言中的一种替代方法。

  2. 你不能使用HTML或CSS在你的程序,因为该网页查看是没有了。(注:你仍然可以创建网查中的钛。但是,有几个钛的功能,可以利用的网络图。)钛Q&A:发生了什么事HTML&CSS?

  3. 你不能使用受欢迎的JS库,如JQuery,假定存在的一个DOM对象。你继续使用JavaScript作为你的编码语言。但是,这几乎是唯一的网络技术可以利用的如果你来钛1.0作为一个网络程序设计员。

钛的视频:什么是新的钛为1.0。

现在,不钛1.0汇编JavaScript入"地位"?没有。Appcelerator终于来了清洁在这个问题与开发这个博客:钛指导项目:JS环境。 我们的程序员都更真正的人民,比那些在市场营销部门,不是吗?:-)

移动到。.不是很多新的东西要说约。.我的看法是。发展不是很有效,直到IBM在船上跳下今年晚些时候。有些人甚至认为IBM是促进更多的代码。比Nitobi。那是真实的或不,它是好的要知道。是正在积极发展。

。继续为基地本身在网络技术,即HTML,CSS和JavaScript。它看起来并不像。有任何计划桥本地用户界面功能JavaScript如钛做的那样。同时Web界面仍然落后于本地用户界面上的性能和本地的外观和感觉,这种差距正在迅速关闭。有两种趋势中的网络技术,确保明亮的功能的移动网络用户界面方面的性能:

  1. JavaScript引擎的运动从一个解释为一个虚拟机。JavaScript JIT编译为当地代码,用于加快执行速度。 Safari JS发动机:金鳞极端

  2. 网页呈现移动从依赖CPU使用GPU加速。图形密集型任务,例如页面过渡和3D动画成为一个顺畅了很多的帮助的硬件加速。 GPU加速合成铬

这种改进是来自桌面浏览器传递到移动浏览器的迅速。事实上,由于iOS3.2和安卓2.0,移动网络图控制已经变得更加执行和html5友好。今后的移动网络是很有希望的,它吸引了一个大孩子,以镇: JQuery最近宣布其移动网络的框架。 有文化的移动提供UI工具。提供电话的功能,它们两者结合创造了一个完美的移动网络平台,在我的意见。

我还应该提到 煎触摸 作为另一个移动网络UI工具的框架。煎触1.0版最近发布的下一个双重许可模型,包括GPLv3.煎触以及与。正如JQuery的移动。

如果你是一个 应用程序 程序员(像我一样),您可能想退房 应用程序移动, 一个开放源的项目对创建移动网络的应用程序应用程序.它包括一个应用程序。包装,支持使用。在应用程序.

其他提示

从什么我已经收集的,这里有一些差别之间这两个:

  • 。基本上产生的原包装的是什么还 网络应用程序.它吐出一个WhateverYourPlatformIs项目中,你建立和部署。如果我们谈论的iPhone(其是我花费我的时间),它似乎不太大的不同,从创建一个网络应用程序启动程序(一个快捷方式,获得自己的跳板的图标,因此可以推出这样(喜欢)本地应用程序)."应用程序"本身仍然是html/js/等, 和内部运行一个主办的浏览器的控制。什么。提供超出这是一个之间的桥梁JavaScript和机设备Api。所以,你写JavaScript反对。Api。然后让适当的相应地调用。在这方面,它的 不同部署一个普通的老式网络应用程序。

  • 钛源获取编制下的地位。也就是说,你html/js/等。不只是附加于一个项目,然后托管内部网络浏览器控制-他们变成当地应用程序。这意味着,例如,应用程序的接口将组成 本机的 用户界面组件。有办法得到司机的外观和感觉不具有本地的应用程序,但是...嗯...什么一场噩梦,这通常结果。

两者是相似的,你写的所有东西使用的典型的网络技术(html/js/css/等等等等等等),以及你获得当地的功能,通过自定义JavaScript Api。

但是,再说一次,可以帮助你集中的应用程序(PhonGapps?我不知道...那是一个愚蠢的名字吗?很容易说的话-我知道那么多)开始他们的生活,因为网络应用程序,并结束自己的生命作为网络应用程序。在iPhone上,你html/js/等。只是内部执行的一个UIWebView控制,并对。JavaScript Api你js呼叫地Api。

钛的应用程序,成为本地应用程序-他们只是在开发利用网络开发的新技术。

这是什么实际的 意思是?

  1. 钛的应用程序将 看看 就像一个"真正的"程序,因为最终它 "真正的"应用程序。

  2. 一个应用程序。看起来像一个网络应用程序托管浏览器中的控制,因为最终它 网络应用程序托管浏览器中的控制。

这是你的权利吗?

  • 如果你想要写的本地应用程序使用网络开发的技能、钛是你最好的选择。

  • 如果你想要写一个应用程序使用网络开发的技能你可以现实地部署到多个平台(iPhone,安卓,黑莓,和任何其他人,他们决定),如果你想要访问一个子集中的司机平台的功能(GPS、加速度计等)。 通过一个统一的JavaScript API。可能是你想要什么。

你可能会问:为什么我想写一个PhoneGapp(我已经决定使用名称),而不是一个网络应用程序托管上网吗?不可能我还访问了一些机设备功能的方式,但也有方便的真正的网络的部署,而不是迫使用户下载我的"本地的"程序,并安装?

答案是:因为你可以提交PhoneGapp的程序,储存和费用。你还得到启动标,这使得它很难对用户要忘了你的程序(我可能忘了一个书签于一个应用程序的图标)。

你可以肯定费用于访问网主办的网页应用程序,但有多少人真的要去通过的过程中这样做吗?与应用程序的商店,我选择一个应用程序,点击"购买"按钮,输入密码,我就完了。它安装。几秒钟后,我使用它。如果我不得不用其他人的个移动网络事务接口,它可能意味着具有以挖掘出我的名称、地址、电话号码,CC号码和其他的东西我不想出去,我几乎肯定不会通过它。此外,我相信,苹果-我相信史蒂夫*乔布斯不会以登录我的信息和随后的电荷一群顽皮的杂志订阅我CC踢。

无论如何,除了一个事实,即网开发新技术参与。和钛是非常不同点只是表面上有可比性。

我讨厌网络应用程序,由通过,并且如果你读的iTunes商店的评论,用户都很善于发现他们。我不会任何名字,但我有几个"程序"我的手机看起来和运行像垃圾一样,这是因为他们在网络的应用程序托管内部UIWebView实例。如果我想要使用网络的应用程序,我会打开动物园和你知道的,导航之一。我买了一个iPhone,因为我想要的东西都是iPhone-y.我没有问题,也就是说,一个时髦的谷歌网页应用程序内部的野生动物园,但我会感觉被骗了如果谷歌只是悄悄的一个书签上跳板,通过提出一个网络应用程序作为一个母之一。

现在得走了。我的女朋友有可能-你-请-停止使用,计算机-用三秒钟看看她的脸。

我把一个程在安卓/iPhone发展和我们花费了8周与钛(不满的时间)(版本是钛1.4.2和时间约为十一月2010年)。这里是我的经验。

iPhone安卓双瞄准

即使API指南要求的功能可用于这两个机器人和iPhone,这个不是这种情况。很多东西根本不工作的一个平台。一些事情的工作方式不同。

很多的人类已经做的iPhone应用程序,他们可以不让他们工作对安卓,而不主要重写。我开发的一个简单的儿童应用程序称为Animap(见安卓市场/简单瑞典),并开始开发下窗户。一旦安卓目标的工作,我打开了项目OS X.它没有显示任何东西,只是为序。你需要开始一个双重目标的项目下OS X.(好的,我复制的相关文件的一个新项目)。下一个问题-发动不起作用在iPhone上(它们的工作安卓).滚动的事件不相同的工作上。(i。e在你得到触控事件时的用户停止滚动并释放其手指离屏幕,这种情况不会发生在iPhone上).

由于这不是提到某个地方你基本上需要做的尝试和错误的编程上第一个平台,然后在其他平台。通过试验和错误,我的意思是它将需要大约两天,获得这样一个简单的应用程序,因为Animap工作的其他平台。你还需要有如果(安卓)然后...或者,如果(iphone)...在你的代码...

下载,安装

你必须按照指示的信。不要尝试使用java64位。它不会编制的KitchenSink1.4.0演示应用程序。(1.3工作确定!) 你必须把文件上直接C驱动作为长路径会使外部程序没收所有的命令行参数,如果他们得到长。(微小的程序不过) 1/3的时代,该工具只是停止,并必须按'启动'。然后它可能会工作...非常不可靠的。模拟器将不会被发现在启动时然后你必须杀死的adb.exe 与Ctrl+Alt删除,并重试.

网络连接

在一个无线网络有时候你失去的实时连接和钛的崩溃,在您(编译/部署接口) 如果你没有工作的互联网连接,它将不开始,因为它可以不你在给他们的服务器。

API

CSS HTML和技是一件轻而易举的事相比,这一点。钛类似的任何其他老GUI API,和你需要设置一些特性为每一个按钮/领域/等。得到一个领域是错误的只是容易的,记住所有的性质,需要设置?你有没有拼写字母在正确的地方吗?(作为这是没有抓住的编译器,但将被视为一个运行错误如果你是幸运的,测试,一部分)

在钛的事情简单地打破当添加另一种看法上的控制或点击其他地方的图形用户界面。

文档

几个API的页面进行卓符号,但只会返回一个空当你试图创建的控制。他们不是简单地提供的平台尽管符号。有时,安卓是说不支持特定的方法,但后来的整个API是失踪。

KitchenSink

演示应用程序。我有没有提到它并不是编纂如果你把它放在你的日食的项目文件夹,因为道路变得太长时间?必须把你C驱动的根本文件夹。我目前使用symbolik链接(mklink/J...)

无证件的方法

你必须propably使用的事情的标签。调用("hello World")改变一个标签可靠的,但这是不是记录在案。

调试

Titanium.API.info('的打印输出是唯一的方式debug');

编辑

Api不提供任何好的格式,所以你不能得到普通码完成与帮助等等。在日食。时至请帮帮忙!

硬件

它似乎是编译器/工具不是多线程的这样一个快速的计算机与快速的硬盘是必须的,因为你必须做大量的试验和错误.我有没有提到穷人的文档?你必须尝试了一切还有,你不能信任它!

一些积极的事情

  • 开放源
  • 从以前项目中,我们承诺我自己从来没有使用封闭源再次作为你不能简单地解决的事情,只是通过投掷的时间和人力。重要的是当你迟到了在项目和需要提供硬最后期限。这是开放源代码和我已经能够看出为什么工具的链条断裂和实际解决它。

  • Bugdatabase

  • 它还打开。你可以简单地看到你不是单独做一个解决方法,而不是另外4个小时花费在审判&错误。

  • 社会

  • 似乎是活跃在自己的论坛。

错误

  • 钛1.4是不线程安全.这意味着,如果你使用螺纹(使用的网址:酒店一方法叫)和程序像的线工作和发送活动的数据来回你碰到了很多非常、非常奇怪的东西-丢失的处理程序失去了窗户,太多的事件,太少的活动,等等。等等。这是所有依赖性的时机,把行的代码不同的顺序可能会崩溃或治愈你的应用程序。增加一个窗口,在另一个file.js 打破了你的app.js 执行...这也垃圾内部数据结构中的钛,因为他们有时可能更新内部数据结构在并行,复盖一个只是改变了值别的东西。

许多问题,我已经用钛合金来自于我的背景关于实时系统等OSE谁支持数百个线程、事件和消息传递。这是应该的工作钛1.4但它只是不这样做可靠。

  • Javascript(这是新的我)死去时默默地上运行时的错误。这还意味着小和常见的错误,就像拼写错误的变量名称或阅读,在一个空的指针不会崩溃时,它应该这样你可以调试。而不是部分的你的计划只是停止工作,例如一个处理,因为你错误/misstyped一个角色。

  • 然后我们有更简单的错误在钛,像一些参数不工作在功能(这是相当常见的平台至少).

  • 试验和错误的调试循环的速度 具有运行Titnium开发人员在几台计算机,我注意到的瓶颈是硬盘.固态硬盘驱动器上的一个笔记本电脑使得建造周期约为3-5倍的速度比上一个4200转驱动器。在桌面上,具有双动袭1(条纹模式)使得建立大约25%的速度比上一个单一的驱动有点快CPU,它也比固态硬盘驱动器的笔记本电脑。

摘要

  • 从评论意见在这个线程似乎有一个战斗的号的平台这样的工具可以提供应用程序的。数API似乎是关键的销售点。

这照过非常多的时候你开始使用它。如果你看着打开你的错误追踪系统看到数量的错误不断增加的速度比的数目固定的错误。这通常是一个标志,开发商不断增加更多的功能,而不是集中在获得数量的错误下来。

作为一个顾问在努力提供相当简单的应用程序,以multiplatforms为一个客户-我不确定这是实际的速度比做机应用程序开发在两个平台。这是由于这样的事实,当你是最快的速度,你是快速的钛合金,但后来突然,你往下看发现自己在一个洞那么深你不知道有多少时间必须花一个解决办法。你可以简单地承诺不一定能为某一截止日期/时间/成本。

关于我自己:已经使用Python两年wxPython.(这GUI inconsitent,但从来没有打破这样的。这可能是我没有理解的线程模型用于通过Javascript和钛,但我不是单独根据他们的公开讨论的论坛,GUI对象是突然使用了错误的上下文中/不更新..???) 在此之前,我有一个背景,在C和ASM编程,用于移动设备。

[编辑一部分加入错误和不正线安全的] [编辑-现在有工作与它一个月,主要是在电脑,但一些在OS X。加苹果和安卓双针对.添加的试验和误差调试周期的速度。]

晕SDK(Ansca移动)使用的Lua作为其编码语言。看看lua.org 欲了解更多有关Lua。

同时,我们计划进一步增加网络的整合和地面,我们的重点往往是在图形密集型应用程序,例如游戏的发展,而不是基于网络的技术。换句话说,我们没想到人们的写作晕应用程序完全在Javascript/HTML/CSS。

我一直在与钛超过一个星期,现在,感觉就像我有一个很好的感觉关于其弱点。

1)如果你希望使用相同的代码在多个平台上祝你好运!你会看到的东西喜欢backgroundGradient和惊讶,直到你找到了安卓版本不支持它。然后必须恢复使用一个梯度图像,以及可能使用这两个版本使更容易代码吗?

2)很多的怪异行为,在钛安卓sdk你需要了解什么"大"窗口,只是获得返回键工作,或甚至更好的方向的事件跟踪。这不是如何卓平台,真是的,它是如何钛试图让他们API的工作。

3)你扔在黑暗中,事情将会崩溃,你必须开始到评论的代码然后当你找到它,永远不会使用它。有一些明显的错误,如定向和百分比上,这是一个问题超过六个月。

4)错误。...有一个很大的错误,他们将能报告,当围绕几个月,获取固定在几天。我很惊讶他们甚至是计划释放一个黑莓手机sdk时有很多其他问题。

5)钛的Iphone与钛安卓javascript引擎是完全不同的。在安卓版本,你可以下载遥javascript文件,包括与使用库像脱。等等。我是在天堂当我发现这个了因为我没有让我的编制应用程序。在安卓安装过程中需要如此长的时间!Iphone没有这是可能的,也iphone版本有一个更快javascript引擎。

如果你远离一个很大的机UI部分,i。e而不是使用若第检测方向的变化,坚持梯度图像,忘记了回来按钮,建立自己的动画,记窗口头、工具栏和仪表板。你真的可以让一个api,适用于不需要的很多重写。但是在这点,它只是作为缓慢,作为一个网络应用程序.

因此,它是值得吗?之后所有的痛苦,其值得每一分钟。你可以抽象的逻辑,只是建立不同的用户界面为每个相当然如果elseing无处不在。钛让你做液中的应用,感到快。你失去了强大的布局能力的每一个平台,但是如果你想的简单,事情可能会变得完成在一个单一的语言。

为什么不一网络应用程序?在入门级市场,安卓手机其可怕的缓慢产生webview和消耗了大量的存储器你可能是用来做更复杂的逻辑。

地mapkit是支持在钛

使HTML5部件tha看起来像iphone件是一回事,但使他们执行同样完全是另一回事.性能html5动(即使是普通的视图过渡),滚动的长长的名单,响应的手势感到粘粘的和肉干.IPhone用户将发现其中的差别。

还有一些差异种姿态支持的不同设备,其结果在平台特定的代码和可用性问题。

我会留在当地的应用程序现在,我猜。

Rhomobile罗德(http://rhomobile.com/products/rhodes)是非常类似的方法。但是只框架:

  1. 一个模型图控制模式(如 大多数网络框架提供)
  2. 一个对象关系管理
  3. 支持所有流行的智能手机(包括Windows电话7)
  4. 一个主办发展服务(不仅仅是建立的托管): http://rhohub.com
  5. 一个完整的调试器和SDK-小仿真器在RhoStudio IDE
  6. 支持同步的线数据

任何人感兴趣的钛我必须说,他们没有一个非常好的文件的一些类、属性、方法缺失。但很多是"记载",在他们的样本应用程序的KitchenSink所以它不是那么糟糕。

我的理解的。是的,他们提供Javascript Api多的iPhone Api。

钛似乎更容易为一个网络开发的背景。这是一个简单的XML文件,以创建一个基本TabView应用程序,然后一切内容区域的控制是通过HTML/JS。我还知道即钛不会提供一些javascript访问的一些框架(特别是访问的位置的信息,电话ID,等)。

更新:钛加入的地图API version0.8他们的框架。

你应该学习的目的c和程序的本地应用程序。不要依赖这些东西你以为将让生活更容易。苹果已经确定的最简单方法是使用他们的母的工具和语言。你100行javascript我可以做同样的,在3行代码或没有代码在所有根据的元素。看一些教程-如果你了解javascript然后目标c中并不难。解决方法是悲惨和苹果公司可以拉塞在你任何他们想要的时候。

的解决方案所提到的,没有人出现给你直接进入MapKit框架介绍了在操作系统3.0.

如谷歌地图HTML部件几乎没有好,因为MapKit(见谷歌纬度的一个例子),可能最好的关发展机可可触摸的应用程序,或者选择方案可以扩展,添加MapKit一体化。引导可扩展以这种方式(它是开放源,所以它是默认情况下),以及一些其他的解决方案可能是如此。

编辑:钛现在支持MapKit

我已经试过电晕。这是很好的直到我发现它不支持streaming mp3音频。因此,我已停止存在的权利。我想如果我真的想要一个iphone应用程序开发者,我应该学会obj c。所有我想做一个应用程序,其中有一个列表中的广播电台和你点击他们开始播放。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top