使用Phonegap构建的Phonegap App构建在iOS上构建具有错误的警报

时间:2013-05-15 12:12:15

标签: jquery cordova extjs phonegap-build

我们正在开发一个带有 Phonegap 2.5.0 的应用程序(因为Phonegap Build中没有更新的版本)并且遇到了麻烦。

该应用程序是一个简单的测试应用程序,我们用它来比较jQuery Mobile和Sencha Touch。因此,我们创建了一个index.html文件,其中包含指向jquery.html和sencha.html的链接,这些链接使用不同的UI实现相同的应用程序但调用相同的phonegap触发器。

我们有两种构建配置:

  • App是通过Eclipse本地构建的
  • App通过Phonegap Build
  • 在线构建

我们使用与本地构建的Android应用相同的网络内容。我们只删除加载 cordova.js for 2.5.0的<script>元素,并将内容与我们在本地构建的Android应用中使用的相同config.xml打包在一起。 本地构建的Android应用程序工作得很好。仅当通过Phonegap Build在线为iOS构建应用程序时才会出现问题。正如预期的那样,Android应用程序在线构建。只有iOS会带来麻烦。

iOS上会发生什么:

  • 已加载index.html
  • 我们可以点击切换到jquery.html或sencha.html的链接。
  • 切换应用程序警报后,通过以下消息轮换一些对话框:
    1. gap:["Device","getDeviceInfo","Device455526479"]
    2. gap:["NetworkStatus","getConnectionInfo","NetworkStatus8103758"]
    3. gap:["App","show","App8103759"]
  • 然后我们可以访问应用程序,甚至可以获得当前的GPS位置。

任何想法?非常感谢!

我们的config.xml:

<?xml version="1.0" encoding="utf-8"?>
<cordova>
    <access origin="http://127.0.0.1*"/>; <!-- allow local pages -->
    <access origin=".*"/>
    <content src="index.html" />
    <log level="DEBUG"/>
    <preference name="useBrowserHistory" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <plugins>
        <plugin name="App" value="org.apache.cordova.App"/>
        <plugin name="Geolocation" value="org.apache.cordova.GeoBroker"/>
        <plugin name="Device" value="org.apache.cordova.Device"/>
        <plugin name="Accelerometer" value="org.apache.cordova.AccelListener"/>
        <plugin name="Compass" value="org.apache.cordova.CompassListener"/>
        <plugin name="Media" value="org.apache.cordova.AudioHandler"/>
        <plugin name="Camera" value="org.apache.cordova.CameraLauncher"/>
        <plugin name="Contacts" value="org.apache.cordova.ContactManager"/>
        <plugin name="File" value="org.apache.cordova.FileUtils"/>
        <plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>
        <plugin name="Notification" value="org.apache.cordova.Notification"/>
        <plugin name="Storage" value="org.apache.cordova.Storage"/>
        <plugin name="FileTransfer" value="org.apache.cordova.FileTransfer"/>
        <plugin name="Capture" value="org.apache.cordova.Capture"/>
        <plugin name="Battery" value="org.apache.cordova.BatteryListener"/>
        <plugin name="SplashScreen" value="org.apache.cordova.SplashScreen"/>
        <plugin name="Echo" value="org.apache.cordova.Echo"/>
        <plugin name="Globalization" value="org.apache.cordova.Globalization"/>
        <plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser"/>
    </plugins>
</cordova>

2 个答案:

答案 0 :(得分:5)

你确定你已经包含了特定于iOS的Phonegap JS文件吗?通常,当您错误地包含用于iOS开发的cordova / phonegap文件(属于Android)时会发生此错误。在下载的phonegap 2.5.0文件夹中,您有不同平台的不同子文件夹。您必须确保使用为特定平台提供的正确Javascript文件。

可能的情况:

您可能已包含Android文件夹中的cordova-2.5.0.js文件以构建iOS。 您可能刚刚拼错了www文件夹中的JS文件。 (尽管可能性较小)。

<强>修正:

使用Phonegap-2.5.0文件夹内iOS文件夹中的Javascript(Cordova-2.5.0.js文件)文件进行iOS构建。

答案 1 :(得分:1)

Phonegap Build仅支持最新版本的cordova 2.5.0。现在也可以使用2.7.0版本。切换到2.7.0后,警报()已消失。一切都按预期工作了!

问题解决了!