我正在尝试使用我的AngularJS移动网站,并使用PhoneGapBuild网站将其包装为PhoneGap / Cordova混合应用程序。我能够成功上传,构建和安装IOS&但是,Android在任一设备上运行应用程序时,我只会看到一个空白的白色屏幕。
其他信息:
如果“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>
由于
答案 0 :(得分:0)
好消息是你的config.xml
看起来相当不错,比大多数都好。
为了确定,我们正在讨论PGB (PhoneGap Build),一种基于云的构建服务,由Phonegap / Adobe提供。
你的大多数问题都源于绊到了#5 在设计应用时,认为phonegap就像网站或网页浏览器一样。 Top Mistakes by Developers new to Cordova/Phonegap
确保您阅读了所有粗体句子,因为您可能不得不一次又一次地阅读此内容。
在我之前谈到的部分,你的应用程序不能成为你网站的包装,这是你需要知道的:
引用Apple iTunes Guidelines - 2.12
应用程序不是非常有用,独特,只是简单的网站捆绑为应用程序,或不提供任何持久的娱乐价值可能会被拒绝
对于 Phonegap Build ,它的主要资产(index.html
,config.xml
)必须位于根目录中。这意味着两个文件*必须*在同一目录中。这也意味着子目录可以包含其他与Web相关的组合,例如javascript,css和更多网页。
这个错误来自于#1的绊脚石
Top Mistakes by Developers new to Cordova/Phonegap。如果您使用 Cordova / Phonegap CLI ,则config.xml
位于index.html
下方的一个目录中,index.html
位于www/
。
如果未在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 。
如果您使用的是Android 6.0,则PGB,YET不支持此功能。如果您使用的是iOS9,Cordova最近刚刚released 2015年12月8日(2015年12月18日hot fixes),这不是PGB,YET的支持。 这是因为PGB仍然使用Cordova编译器来完成它的工作。
您可以使用cordova.js
或phonegap.js
。没关系,两者都得到支持。有关详细信息,请参阅:Documentaion - &gt;简介 - &gt; Getting Started with Build - &gt; Sections - &gt; 确保您仍然可以访问PhoneGap API
确保使用包含所有插件的版本。
Documentaion - &gt; 配置 - &gt; Plugins - &gt; Including a plugin in your project
如果省略spec(version)标记,您的应用将始终使用最新版本的插件构建。下次更新插件后,它会自动更新,这可能会导致意外行为。
此外,以下是一些帮助链接和常见问题解答:
答案 1 :(得分:0)
原来我的问题与AngularJS与PhoneGap / Cordova的集成有关。首先,当前的具体问题是由于我的HTML标记中的 base 标记。当html5模式设置为true时,Angular需要基本标记。但是,html5模式不适用于PhoneGap / Cordova,如here所述。要解决此问题,您必须执行以下操作: