升级到Cordova ios6会导致项目的xcode出现错误



我能够在ios5中成功构建和运行我的应用程序,但当我升级到ios6.1.0以安装一个允许我使用VKwebview和引用本地html文件的插件时,我在xcode:中遇到了3个致命错误

  1. 在"CDVViewController*"类型的对象上找不到属性"userAgent">
  2. 使用未声明的标识符"CDVUserAgentUntil"。(重复两次(

我完全不知所措,甚至开始寻找答案。

这是我的config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.slate.v2" version="1.3.1" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
<name>ACCELERATE RMS</name>
<description>
M-learning accelerated.
</description>
<author email="support@phonegap.com" href="http://phonegap.com">
Cnnect
</author>
<content src="index.html" />
<access origin="*" />
<allow-navigation href="*" />
<icon density="mdpi" height="57" platform="ios" src="icon.png" width="57" />
<config-file overwrite="true" parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist">
<string>Allow the app to use your camera to take your profile picture.</string>
</config-file>
<preference name="AllowInlineMediaPlayback" value="true" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<platform name="ios">
<preference name="WKWebViewOnly" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
</platform>
<platform name="ios">
<preference name="Orientation" value="all" />
</platform>
<engine name="browser" spec="^5.0.4" />
<plugin name="phonegap-plugin-contentsync" spec="~1.4.2" />
<plugin name="cordova-plugin-camera" spec="~4.0.3" />
<plugin name="cordova-plugin-geolocation" spec="~4.0.1" />
<plugin name="cordova-plugin-file" spec="~6.0.1" />
<plugin name="cordova-plugin-whitelist" spec="~1.3.3" />
<plugin name="cordova-plugin-dialogs" spec="~2.0.1" />
<plugin name="cordova-plugin-local-notification" spec="~0.9.0-beta.3">
<variable name="ANDROID_SUPPORT_V4_VERSION" value="26.+" />
</plugin>
<plugin name="phonegap-plugin-barcodescanner" spec="~8.0.1" />
<plugin name="onesignal-cordova-plugin" spec="~2.8.1" />
<plugin name="cordova-plugin-file-transfer" spec="~1.7.1" />
<plugin name="cordova-plugin-wkwebview-engine" spec="^1.2.1" />
<plugin name="cordova-plugin-wkwebviewxhrfix" spec="~0.1.0" />
</widget>

CDVUserAgentUtil已在cordova-ios@6中删除,这是一个突破性的更改(因此cordova-ios6的主要版本增量(。这个类被项目中的一些Cordova插件使用,因此出现了错误。

您应该首先将所有插件更新到最新版本,以便使用那些已更新为删除对CDVUserAgentUtil的引用的插件。

至少有一个插件-cordova插件文件传输已弃用,并且包含对CDVUserAgentUtil的隐式引用。在这种情况下,你可以使用我的这个插件的分叉,它已经被修复以删除引用:

cordova plugin rm cordova-plugin-file-transfer && cordova plugin add https://github.com/dpa99c/cordova-plugin-file-transfer

在更新所有插件后,您项目中的其他插件可能仍然包含对CDVUserAgentUtil的引用。如果是这种情况,您应该在它们中搜索参考文献:

grep -r -l 'CDVUserAgentUtil' plugins/

如果你发现任何参考资料,并且没有可用的插件,你可以:

  • 针对插件提出问题,要求对其进行更新
  • 查找已更新的插件的分支
  • 分叉插件并自己修复

如果在更新所有插件以删除引用后构建仍然失败,则可能会有更多的隐式引用,如cordova-plugin-file-transfer中的引用,因此您需要搜索并解决这些引用:

grep -r -l 'userAgent' plugins/

cordova插件wkwebview引擎在cordova中已弃用iOS@6.x有关更多详细信息,请参阅,来自CordovaiOS@6.x默认情况下,它支持WKWebView而不是UIWebView。因此,您需要从您的项目中删除Cordova插件。

cordova plugin rm cordova-plugin-wkwebview-engine

注意:为了您的安全,请在进行任何更改之前备份您的项目。

适用于ionicv5用户我已经通过将cordova插件ionic webview升级到4.2.1解决了这个问题

跳过这个帮助

最新更新