PhoneGap是Adobe提供的Apache Cordova商业发行版,允许使用HTML、CSS和JavaScript创建移动应用程序,并在无需本地SDK的情况下在云端编译。该平台成为第一个广为人知的混合框架,在跨平台开发的普及中发挥了关键作用。据Adobe PhoneGap,2024数据,该平台存在期间已创建超过100万个应用程序。PhoneGap Build是Adobe的关键服务,可在无需安装Xcode或Android Studio的情况下编译APK和IPA。
要点
PhoneGap是一个移动应用程序开发平台,最初由Nitobi Software公司于2009年创建。2011年,Adobe收购了Nitobi并将PhoneGap作为商业产品发布,将框架核心以Cordova之名移交给了Apache Software Foundation。
PhoneGap于2008年在iPhoneDevCamp大会上创建,Nitobi Software的开发人员展示了将Web应用封装到原生容器中的技术。第一个公开版本于2009年发布,立即引起了寻找无需学习Objective-C即可进入移动市场方式的Web开发者社区的关注。
PhoneGap的主要创新在于,开发人员可以使用熟悉的Web技术——HTML、CSS和JavaScript——来创建通过应用商店安装到设备上并可访问原生功能(相机、GPS、通讯录和加速度计)的应用程序。
据Adobe Developer Relations(2015)数据,在高峰期,全球超过60万开发人员使用PhoneGap。该平台在希望在不雇佣iOS和Android工程师的情况下扩展移动项目组合的Web工作室和自由职业者中尤其受欢迎。
PhoneGap与Apache Cordova之间的主要区别在于分发模式和附加服务。Cordova是由Apache Foundation管理的纯开源框架,而PhoneGap是其拥有Adobe独家功能的商业发行版。
| 特性 | Apache Cordova | PhoneGap (Adobe) |
|---|---|---|
| 许可 | Apache 2.0(开放) | Apache 2.0 + 专有组件 |
| 核心 | 原始代码 | 相同的Cordova代码 |
| 云端编译 | 无 | PhoneGap Build |
| 工具 | CLI + 第三方IDE | Adobe PhoneGap Desktop + CLI |
| 支持 | Apache社区 | Adobe(截至2020年) |
PhoneGap相对于Apache Cordova的主要优势和最重要的商业区别——PhoneGap Build服务,它接管了编译阶段。开发人员将源文件上传到Adobe服务器,选择目标平台,并在无需安装Android SDK、Xcode和相关编译工具的情况下获得现成的二进制文件。
此外,PhoneGap包含了与Adobe Creative Cloud的集成,允许设计人员将Photoshop中的设计稿直接导出到PhoneGap项目结构中。这一功能在没有专门移动开发人员的小型团队中很受欢迎。
PhoneGap Build是Adobe的一项Web服务,将PhoneGap/Cordova应用程序的源代码编译为iOS (.ipa)、Android (.apk)、Windows Phone (.xap)和其他平台的安装文件。用户无需在计算机上安装目标操作系统的SDK。
编译过程包括三个步骤:开发人员将项目归档(或指定Git仓库),上传到build.phonegap.com并选择平台。几分钟后,服务器返回现成的二进制文件,可上传到应用商店。
PhoneGap Build支持两种订阅类型:免费(最多2个应用,公开编译)和付费(最多25个应用,私有编译,自定义图标和证书)。对于iOS,需要Apple Developer Program上传证书,用户将其上传到个人账户。Build的工作机制很简单:用户发送ZIP归档或指定Git仓库,服务器自动确定平台并通过控制面板返回现成的二进制文件。
据Adobe Blog(2017),每月通过PhoneGap Build进行的编译超过50万次。该服务在教育机构和黑客马拉松中尤其受欢迎,参与者无法访问Mac基础架构。开发人员还使用Build直接在设备上向客户演示原型,无需配置环境。
PhoneGap项目结构与Cordova相同。区别仅在于配置文件config.xml,其中添加了<gap>元素,指定PhoneGap版本和Adobe应用标识符。
<?xml version='1.0' encoding='utf-8'?>
<widget id='com.adobe.phonegap.app'
version='1.0.0'
xmlns='http://www.w3.org/ns/widgets'
xmlns:gap='http://phonegap.com/ns/1.0'>
<name>PhoneGapApp</name>
<description>
PhoneGap应用程序
</description>
<gap:platform name='ios' />
<gap:platform name='android' />
<gap:plugin name='cordova-plugin-camera' />
<gap:config platform='ios' min-version='13.0' />
</widget>
此配置文件定义了支持iOS和Android的应用程序,指定最低iOS 13版本并连接相机插件。上传到PhoneGap Build时,服务器会自动识别这些设置并使用必要的依赖项编译项目。
处理设备就绪事件和调用原生对话框的基本JavaScript代码示例:
document.addEventListener('deviceready', function() {
console.log('PhoneGap准备就绪');
document.getElementById('btnAlert')
.addEventListener('click', function() {
navigator.notification.alert(
'来自PhoneGap的问候!',
function() { console.log('确定'); },
'消息',
'关闭'
);
});
});
deviceready事件——所有PhoneGap和Cordova应用中的强制入口点。没有此事件,原生API调用将无法工作,因为桥接尚未初始化。就绪后,所有插件均可用,包括用于原生对话框的notification.alert。
PhoneGap具有一系列使其在2010年代中期流行的优点,但也存在局限性,导致其在2018年后市场份额下降。
PhoneGap的主要优点——Web开发人员的低入门门槛。HTML、CSS和JavaScript是每个前端专家都熟悉的技术,这使得Web工作室可以在不雇佣iOS和Android工程师的情况下快速进入移动应用市场。
PhoneGap Build云服务解决了基础架构问题:Windows团队无需购买Mac即可编译iOS应用。这对于设备预算有限的初创公司至关重要。
PhoneGap的主要缺点——性能。WebView比原生UI框架慢,尤其是在复杂动画、大列表和图形处理方面。根据HTML5Rocks(2016)测试,在PhoneGap中渲染1000个元素的列表需要200-400毫秒,而原生应用只需16-30毫秒。
其他限制包括依赖于用户设备上的WebView版本、原生插件调试困难以及在相应Cordova插件发布之前无法访问新的iOS和Android API。
2020年,Adobe宣布停止对PhoneGap和PhoneGap Build的支持。该公司将成果移交给社区,并建议过渡到Apache Cordova或Capacitor。PhoneGap Build已关闭,云端编译不再可用。
对于现有PhoneGap项目,建议迁移到Capacitor——这是代码更改最少的最直接路径。只需替换初始化脚本并更新配置。所有JavaScript代码和HTML模板保持不变,因为Capacitor使用相同的桥接原理。
替代方案——直接过渡到Apache Cordova。这需要通过CLI本地安装平台并配置本地编译,但完全保持与现有插件和应用架构的兼容性。
尽管已关闭,但PhoneGap的历史意义难以估量。正是PhoneGap向市场展示了Web技术可以作为移动应用的基础,为现代混合和跨平台框架铺平了道路。首次在PhoneGap Build中实现的云端编译概念后来被Ionic Appflow、Visual Studio App Center和其他移动项目持续集成服务所采用。
PhoneGap的架构决策——通过WebView的桥接、插件系统和通过config.xml的配置——已成为混合开发的事实标准。即使在现代Capacitor项目中,也能看到PhoneGap的传承:相同的插件工作原理和类似的编译过程。
对于维护旧PhoneGap项目的开发人员来说,关键技能是理解插件桥接以及将插件适配到现代Android和iOS版本的能力。否则,由于过时的系统权限,根据新的商店要求更新应用将变得不可能。
常见问题
PhoneGap自2020年起已不再由Adobe官方支持,但基于其创建的应用程序仍可继续运行。通过PhoneGap Build编译新项目已不可用。建议迁移到Capacitor或Apache Cordova以获取安全更新。
Ionic是建立在Cordova(以及后来的Capacitor)之上的层,增加了UI组件、路由和编译工具。PhoneGap是带有云端编译的Cordova发行版,但没有自己的UI组件。Ionic使用Cordova或Capacitor作为原生访问的后端。
得益于PhoneGap Build,不需要Mac——iOS编译在Adobe服务器上执行。Build关闭后,iOS编译需要带有Xcode的Mac,因为Apache Cordova和Capacitor通过Apple工具本地编译原生项目。
PhoneGap与所有Apache Cordova插件兼容,因为它使用相同的架构。cordova-plugin-camera、cordova-plugin-geolocation、cordova-plugin-file和cordova-plugin-inappbrowser插件无需修改即可运行。不存在仅适用于PhoneGap的专用插件。
学习PhoneGap作为新工具没有意义——它已不再受支持。然而,了解其架构对于维护旧项目很有用。对于新的混合应用,建议学习Capacitor并结合Ionic或React Native。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。