5

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

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

我们有两种构建配置:

我们使用与本地构建的 Android 应用程序相同的 Web 内容。我们只删除了为 2.5.0<script>加载cordova.js的元素,并将内容与我们在本地构建的 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>
4

2 回答 2

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 构建。

于 2013-05-15T13:57:33.627 回答
1

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

问题解决了!

于 2013-06-13T07:35:09.463 回答