PhoneGapBuild - 未在webview

时间:2015-12-30 20:55:46

标签: cordova webview phonegap-build hybrid-mobile-app

我正在尝试使用我的AngularJS移动网站,并使用PhoneGapBuild网站将其包装为PhoneGap / Cordova混合应用程序。我能够成功上传,构建和安装IOS&但是,Android在任一设备上运行应用程序时,我只会看到一个空白的白色屏幕。

其他信息:

  • 这是我第一次尝试创建移动应用。
  • 我正在使用build.phonegap.com构建我的移动网站的html资源,作为Android和ios的混合应用程序,使用config.xml文件(上图)。
  • 目标是Android sdk版本7和iOS默认。
  • 我在Android Charge和iPhone 5c上测试应用

如果“window.cordova”存在而我没有使用调试器“weinre”到console.log。但是,“window.angular”和“window._”之类的东西确实存在,因为我是从外部CDN加载它们。看起来我的本地引用的资产都没有加载(通过其中的console.logs确认)。我尝试过引用“/cordova.js”,“www / cordova.js”,“/ www / cordova.js”都无济于事。

是否存在我缺少的权限或XML配置或完全不同的其他内容?

要清楚,我在index.html文件中引用了cordova:

<script src="cordova.js"></script>

这是我的配置文件:

<?xml version="1.0" encoding="utf-8"?>

<widget id="com.tristatetennis.app" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0">
    <name>TriStateTennis</name>
    <description>Tennis</description>
    <content src="index.html" />
    <icon src="icon.png" />
    <access origin="*" />
    <preference name="permissions" value="none" />
    <preference name="orientation" value="default" />
    <preference name="target-device" value="universal" />
    <preference name="fullscreen" value="true" />
    <preference name="webviewbounce" value="true" />
    <preference name="prerendered-icon" value="true" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="true" />
    <preference name="auto-hide-splash-screen" value="true" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="14" />
    <preference name="android-installLocation" value="auto" />
    <plugin name="cordova-plugin-battery-status" />
    <plugin name="cordova-plugin-camera" />
    <plugin name="cordova-plugin-media-capture" />
    <plugin name="cordova-plugin-console" />
    <plugin name="cordova-plugin-contacts" />
    <plugin name="cordova-plugin-device" />
    <plugin name="cordova-plugin-device-motion" />
    <plugin name="cordova-plugin-device-orientation" />
    <plugin name="cordova-plugin-dialogs" />
    <plugin name="cordova-plugin-file" />
    <plugin name="cordova-plugin-file-transfer" />
    <plugin name="cordova-plugin-geolocation" />
    <plugin name="cordova-plugin-globalization" />
    <plugin name="cordova-plugin-inappbrowser" />
    <plugin name="cordova-plugin-media" />
    <plugin name="cordova-plugin-network-information" />
    <plugin name="cordova-plugin-splashscreen" />
    <plugin name="cordova-plugin-vibration" />
    <!-- <plugin name="cordova-plugin-whitelist" version="1" /> -->
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
</widget>

由于

2 个答案:

答案 0 :(得分:0)

好消息是你的config.xml看起来相当不错,比大多数都好。

  1. 为了确定,我们正在讨论PGB (PhoneGap Build),一种基于云的构建服务,由Phonegap / Adob​​e提供。

  2. 你的大多数问题都源于绊到了#5 在设计应用时,认为phonegap就像网站或网页浏览器一样。 Top Mistakes by Developers new to Cordova/Phonegap

    确保您阅读了所有粗体句子,因为您可能不得不一次又一次地阅读此内容。

    在我之前谈到的部分,你的应用程序不能成为你网站的包装,这是你需要知道的:

      

    引用Apple iTunes Guidelines - 2.12

         

    应用程序不是非常有用,独特,只是简单的网站捆绑为应用程序,或不提供任何持久的娱乐价值可能会被拒绝

  3. 对于 Phonegap Build ,它的主要资产(index.htmlconfig.xml)必须位于根目录中。这意味着两个文件*必须*在同一目录中。这也意味着子目录可以包含其他与Web相关的组合,例如javascript,css和更多网页。

    这个错误来自于#1的绊脚石 Top Mistakes by Developers new to Cordova/Phonegap。如果您使用 Cordova / Phonegap CLI ,则config.xml位于index.html下方的一个目录中,index.html位于www/

  4. 如果未在phonegap-version中使用config.xml,您将获得最新版本,目前为cli-5.2.0。这有很多含义。

    你不能要求android-minSdkVersion少于编译器支持的内容。文档说7没关系,但这是一个错误。支持的最低Android API为14(Ice Cream Sandwich)。

    此要求极难实现,因为您必须阅读* Cordova *文档。 Android Platform Guide - &gt;要求和支持。如果您想支持7,那么您将需要使用 Phonegap CLI

  5. 如果您使用的是Android 6.0,则PGB,YET不支持此功能。如果您使用的是iOS9,Cordova最近刚刚released 2015年12月8日(2015年12月18日hot fixes),这不是PGB,YET的支持。 这是因为PGB仍然使用Cordova编译器来完成它的工作。

  6. 您可以使用cordova.jsphonegap.js。没关系,两者都得到支持。有关详细信息,请参阅:Documentaion - &gt;简介 - &gt; Getting Started with Build - &gt; Sections - &gt; 确保您仍然可以访问PhoneGap API

  7. 确保使用包含所有插件的版本。

    Documentaion - &gt; 配置 - &gt; Plugins - &gt; Including a plugin in your project

      

    如果省略spec(version)标记,您的应用将始终使用最新版本的插件构建。下次更新插件后,它会自动更新,这可能会导致意外行为。

  8. 此外,以下是一些帮助链接和常见问题解答:

答案 1 :(得分:0)

原来我的问题与AngularJS与PhoneGap / Cordova的集成有关。首先,当前的具体问题是由于我的HTML标记中的 base 标记。当html5模式设置为true时,Angular需要基本标记。但是,html5模式不适用于PhoneGap / Cordova,如here所述。要解决此问题,您必须执行以下操作:

  1. 完全从HTML标记中删除 base 标记
  2. 确保所有网址引用都是相对(即没有领先&#34; /&#34;)
  3. 设置$ locationProvider.html5Mode( false );
  4. $ sceDelegateProvider.resourceUrlWhitelist([&#39; **&#39;]); (docs
  5. $ compileProvider.aHrefSanitizationWhitelist(/ ^ \ S *(HTTPS | FTP |邮寄地址|文件| TEL):/?); (reference
  6. 希望这有助于某人