Phonegap构建命令后,Cordova插件未转移到iOS

时间:2018-07-16 18:20:35

标签: ios cordova xcode8 phonegap-cli

我一直为此苦苦挣扎。我使用Phonegap / Cordova开发了本机应用程序。我使用了Phonegap Build云服务,并拥有一个可以完美运行并通过App Store和Google Play分发的应用。我的公司与某政府应用程序供应商签有合同,该供应商要求该应用程序可从命令行构建,并且他们希望我将跟踪代码插入本机iOS和Android代码中。

问题是:当我在命令行或终端中导航到项目文件夹并运行

phonegap build ios
phonegap build android

我得到的应用程序版本缺少我的启动画面和图标图像,并且Cordova插件都没有转移。当我在Xcode中打开iOS .xcodeproject文件并运行模拟器时,我拥有一个可以浏览的应用程序版本,但是没有任何效果。我无法单击弹出窗口中的超链接,并且地理位置功能不起作用。我尝试手动将Phonegap / Cordova项目文件夹中的plugins文件夹重命名为带有大写字母p的“插件”,但这没有用。平台文件夹中的ios.json文件中没有任何内容。

我正在使用Phonegap CLI 8.0.0 节点8.11.3 npm 5.6.0 OS X El Capitan 10.11.6 Windows 7的 Xcode 8.2.1

这是我的config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.phonegap.metcon" version="1.0.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>MetCon Weather</name>
    <description>
        Climate and Three Week Charts
    </description>
    <author email="levi.cecil@mymetcon.com" href="http://www.mymetcon.com">
        Levi Cecil
    </author>
    <preference name="phonegap-version" value="cli-8.0.0" />
    <content src="index.html" />
    <access origin="*" />
    <access launch-external="yes" origin="mailto:*" />
    <allow-intent href="http://*/*" launch-external="yes" />
    <allow-intent href="https://*/*" launch-external="yes" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="geo:*" />
    <plugin name="cordova-plugin-file" source="npm" spec="~4.1.1" />
    <plugin name="cordova-plugin-geolocation" source="npm" spec="~2.1.0" />
    <plugin name="cordova-plugin-globalization" source="npm" spec="~1.0.3" />
    <plugin name="cordova-plugin-network-information" source="npm" spec="~1.2.0" />
    <plugin name="cordova-plugin-splashscreen" source="npm" spec="~3.2.1" />
    <plugin name="cordova-plugin-statusbar" source="npm" spec="~2.1.2" />
    <plugin name="cordova-plugin-whitelist" source="npm" spec="~1.3.3" />
    <plugin name="cordova-plugin-inappbrowser" source="npm" spec="~1.3.0" />
    <plugin name="cordova-plugin-console" source="npm" spec="~1.1.0" />
    <plugin name="cordova-plugin-device" source="npm" spec="~2.0.2" />
    <plugin name="cordova-plugin-device-motion" source="npm" spec="~2.0.1" />
    <plugin name="cordova-plugin-device-orientation" source="npm" spec="~2.0.1" />
    <plugin name="cordova-plugin-dialogs" source="npm" spec="~2.0.1" />
    <platform name="android">
        <preference name="android-minSdkVersion" value="14" />
        <preference name="android-targetSdkVersion" value="26" />
        <preference name="permissions" value="none" />
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <preference name="BackupWebStorage" value="none" />
    </platform>
    <preference name="DisallowOverscroll" value="true" />
    <platform name="android">
        <icon density="ldpi" src="res/icon/android/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="res/icon/android/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="res/icon/android/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="res/icon/android/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="res/icon/android/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="res/icon/android/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="res/screen/android/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="res/screen/android/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="res/screen/android/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="res/screen/android/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="res/screen/android/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="res/screen/android/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="res/screen/android/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="res/screen/android/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="res/screen/android/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="res/screen/android/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="res/screen/android/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="res/screen/android/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <icon height="57" platform="ios" src="res/icon/ios/icon.png" width="57" />
        <icon height="114" platform="ios" src="res/icon/ios/icon@2x.png" width="114" />
        <icon height="40" platform="ios" src="res/icon/ios/icon-40.png" width="40" />
        <icon height="80" platform="ios" src="res/icon/ios/icon-40@2x.png" width="80" />
        <icon height="50" platform="ios" src="res/icon/ios/icon-50.png" width="50" />
        <icon height="100" platform="ios" src="res/icon/ios/icon-50@2x.png" width="100" />
        <icon height="60" platform="ios" src="res/icon/ios/icon-60.png" width="60" />
        <icon height="120" platform="ios" src="res/icon/ios/icon-60@2x.png" width="120" />
        <icon height="180" platform="ios" src="res/icon/ios/icon-60@3x.png" width="180" />
        <icon height="72" platform="ios" src="res/icon/ios/icon-72.png" width="72" />
        <icon height="144" platform="ios" src="res/icon/ios/icon-72@2x.png" width="144" />
        <icon height="76" platform="ios" src="res/icon/ios/icon-76.png" width="76" />
        <icon height="152" platform="ios" src="res/icon/ios/icon-76@2x.png" width="152" />
        <icon height="29" platform="ios" src="res/icon/ios/icon-small.png" width="29" />
        <icon height="58" platform="ios" src="res/icon/ios/icon-small@2x.png" width="58" />
        <icon height="87" platform="ios" src="res/icon/ios/icon-small@3x.png" width="87" />
        <splash height="1136" platform="ios" src="res/screen/ios/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" platform="ios" src="res/screen/ios/Default-667h.png" width="750" />
        <splash height="2208" platform="ios" src="res/screen/ios/Default-736h.png" width="1242" />
        <splash height="1242" platform="ios" src="res/screen/ios/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" platform="ios" src="res/screen/ios/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="768" platform="ios" src="res/screen/ios/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" platform="ios" src="res/screen/ios/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="1024" platform="ios" src="res/screen/ios/Default-Portrait~ipad.png" width="768" />
        <splash height="960" platform="ios" src="res/screen/ios/Default@2x~iphone.png" width="640" />
        <splash height="480" platform="ios" src="res/screen/ios/Default~iphone.png" width="320" />
    </platform>
</widget>

1 个答案:

答案 0 :(得分:0)

我终于明白了。

如果您已经使用PhoneGap Build在线开发了应用,并且需要返回并生成本机iOS和/或Android版本,请按照以下步骤操作:

  1. 确保已为Xcode和/或Android Studio,Java SDK以及针对这些平台的适当命令行工具正确配置了系统。在线上有很多有关如何执行此操作的信息。

  2. 在命令行中为每个平台创建一个全新的单独的PhoneGap项目:

    $ phonegap创建MyiOSApp
    $ phonegap创建MyAndroidApp

  3. 在iOS项目中,将信息从应用程序的config.xml(com.phonegap.your_app_name,作者电子邮件和网站,版本号,新配置中未包含的其他插件,其他首选项和设置)复制到新的config.xml

  4. 删除新的www文件夹,并用您的文件夹替换。

  5. 打开命令行,导航到主项目文件夹并键入:

    $ phonegap构建ios

这大约需要30秒到一分钟。完成后,您可以在platform> ios文件夹中打开ios.json文件,并确认插件已被复制。如果build命令仅运行了几秒钟,则说明它构建不正确,并且ios.json文件为空。此时,您应该删除新应用并重新开始。

按照以下步骤操作。我能够在Xocde中打开新的.xcodeproj文件,并在模拟器中运行我的应用程序,一切正常。

  1. 针对Android项目执行步骤3-5。