混合 cordova web 和原生 iOS 代码
Posted
技术标签:
【中文标题】混合 cordova web 和原生 iOS 代码【英文标题】:Mixing cordova web and native iOS code 【发布时间】:2016-09-08 17:23:46 【问题描述】:我继承了一个将 Web 代码与本机代码混合的 Cordova 项目。
我使用的是cordova CLI 6.3.1,cordova ios平台版本是3.9.2。
在工作时,我在控制台中遇到了这个警告。
将此版本的 Cordova 与旧版本的 cordova-ios 一起使用是 被弃用。考虑升级到 cordova-ios@4.0.0 或更高版本。
但是,当我尝试使用 cordova platform update ios --save
更新 ios 平台版本时,它会完全清除“平台”文件夹中的所有文件 - 目前包括所有自定义 iOS 项目文件,即自定义类等等。
我们的项目设置是否存在根本问题? 混合和匹配cordova web 和本机iOS 代码的推荐方法是什么,以便更新cordova ios 平台不会破坏一切?
【问题讨论】:
【参考方案1】:通常,/platforms
下的文件是根据在/www
中所做的更改动态生成的。运行cordova prepare ios
、cordova build ios
、cordova platform update ios
或cordova run ios
,将始终核对platforms/ios
文件夹并根据/www
撤消它。
您提到您的项目具有自定义本机代码。该本机代码是作为cordova插件构建的吗?如果是这样,那么您应该很好地遵循标准工作流程。在/www
工作。测试您的项目cordova run ios
。
如果没有,您可能需要考虑重构作为插件的本机代码。
以plugin's 代码结构为例。 关注guide,了解如何开始开发插件。
【讨论】:
确切地说,本机代码并非都是插件。所以通常你会期望所有的原生代码都是一个插件?? 我的意见是,应该。这样,如果您想支持一个额外的平台,您只需将功能添加到您的插件中,并且网络代码库保持不变。该插件充当您的界面,应该是唯一改变的东西。 在我的情况下,另一个平台可能是 android,对吧?在这种情况下,您需要编写一个全新的插件,不是吗?我有点希望在运行您提到的命令类型后,从平台文件夹之外的某个位置复制非插件本机代码会有一些约定。不幸的是,显然不是。 是的。 iOS、安卓、Windows 手机。这些都是 Cordova 支持的平台。你不需要重写你的插件。您只需要在插件定义中添加另一个条目即可包含您支持的新平台。请参阅我的更新答案以获取一些链接。以上是关于混合 cordova web 和原生 iOS 代码的主要内容,如果未能解决你的问题,请参考以下文章
在混合 Cordova iOS 应用程序中使用 iosrtc 插件的问题
我可以将原生 GoogleMap 添加到我的 Cordova 混合应用程序吗?