将基于Cordova的Web应用迁移至Capacitor
完整迁移一个使用Cordova的Web应用到Capacitor需要以下几个步骤。
建议在进行这些变更时使用单独的分支进行开发。
添加Capacitor
首先在终端中打开您的项目,然后根据项目类型选择对应的指南:
使用Capacitor初始化您的应用。部分初始化所需信息可以从Cordova的config.xml
文件中获取:
- 应用名称:
<name>
元素中的内容 - 包标识符(Bundle ID):根元素
<widget>
的id
属性值
npx cap init
构建Web应用
在添加任何原生平台前,您必须先构建Web项目。
npm run build
这将确保Capacitor配置文件中的webDir
指向正确的www
目录(Capacitor已自动配置此目录)。
添加平台
Capacitor的原生平台位于项目根目录下的独立文件夹中,而Cordova的原生平台则位于platforms/ios
或platforms/android
目录下。
npx cap add ios
npx cap add android
执行后将分别在项目根目录创建android和ios文件夹。这些是完全独立的原生项目产物,应视为应用代码的一部分(即需要纳入版本控制,在各自IDE中编辑等)。此外,Capacitor会自动将package.json
中dependencies
下的所有Cordova插件(不兼容的插件除外)安装到每个新创建的原生项目中:
"dependencies": {
"@ionic-native/camera": "^5.3.0",
"@ionic-native/core": "^5.3.0",
"@ionic-native/file": "^5.3.0",
"cordova-android": "8.0.0",
"cordova-ios": "5.0.0",
"cordova-plugin-camera": "4.0.3",
"cordova-plugin-file": "6.0.1",
}
启动画面与图标
如果您之前创建过应用图标和启动画面资源,它们通常位于项目的resources
目录中。使用这些资源文件,可以通过@capacitor/assets
工具为基于Capacitor的iOS和Android项目重新生成相应资源。
运行以下命令重新生成资源并复制到原生项目:
npx @capacitor/assets generate --ios
npx @capacitor/assets generate --android
迁移插件
首先审核现有的Cordova插件——有些可能已经不再需要。
然后查阅Capacitor的官方插件和社区插件列表,您可能会找到对应的Capacitor等效插件。
部分插件可能在功能上不完全匹配,但根据您的实际需求可能影响不大。
注意:不兼容或会导致构建问题的插件会自动被跳过。
移除Cordova插件
当用Capacitor插件替换某个Cordova插件(或直接移除)后,卸载该插件并运行sync
命令从原生项目中移除相关代码:
npm uninstall cordova-plugin-name
npx cap sync
设置权限
Capacitor的最新版本已为iOS和Android的原生项目默认配置了初始权限集合。但您可能需要根据plugin.xml
中的声明手动添加额外权限,具体配置方法请参考iOS和Android配置指南。
Cordova插件偏好设置
执行npx cap init
时,Capacitor会读取config.xml
中的所有偏好设置并迁移到Capacitor配置文件中。您也可以手动在cordova.preferences
对象中添加更多设置。
{
"cordova": {
"preferences": {
"DisableDeploy": "true",
"CameraUsesGeolocation": "true"
}
}
}