升级到 Cordova ios6 导致 xcode for project 出错

use*_*752 3 xcode cordova

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

  1. 在“CDVViewController *”类型的对象上找不到属性“userAgent”
  2. 使用未声明的标识符“CDVUserAgentUtil”。(这些重复两次)

我什至无法开始寻找答案。

这是我的 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>
Run Code Online (Sandbox Code Playgroud)

Dav*_*den 10

CDVUserAgentUtil被删除cordova-ios@6其中发生了重大变化(因此主要版本cordova-ios增加到6)。此类由项目中的某些 Cordova 插件使用,因此出现错误。

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

至少有一个插件 - cordova-plugin-file-transfer弃用,并且包含对CDVUserAgentUtil. 在这种情况下,您可以使用已修复的此插件的分支来删除引用:

cordova plugin rm cordova-plugin-file-transfer && cordova plugin add https://github.com/dpa99c/cordova-plugin-file-transfer
Run Code Online (Sandbox Code Playgroud)

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

grep -r -l 'CDVUserAgentUtil' plugins/
Run Code Online (Sandbox Code Playgroud)

如果您找到任何参考资料并且没有可用的插件更新,您可以:

  • 对插件提出问题,要求对其进行更新
  • 寻找已经更新的插件的分支
  • fork插件并自己修复它

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

grep -r -l 'userAgent' plugins/
Run Code Online (Sandbox Code Playgroud)