2013-05-15 66 views
5

我們正在開發一個應用程序,其中包含Phonegap 2.5.0(因爲Phonegap Build中沒有新版本),並且遇到麻煩。通過Phonegap構建Phonegap應用程序構建iOS上出現錯誤的通知

該應用程序是一個簡單的測試應用程序,我們用它來比較jQuery Mobile和Sencha Touch。因此,我們創建了一個index.html文件,該文件包含指向jquery.html和sencha.html的鏈接,並使用不同的UI實現相同的應用程序,但調用相同的phonegap觸發器。

我們有兩個創建配置:

  • 的應用程序通過Eclipse的本地製造
  • 的應用程序通過Phonegap Build

我們使用相同的Web內容,我們本地構建Android應用程序在線建。我們只刪除<script>元素,該元素爲2.5.0加載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> 

回答

1

Phonegap Build只支持最新版本的cordova 2.5.0。現在也可以使用2.7.0版本。切換到2.7.0後,alert()消失。一切都如預期般運作!

問題解決!

5

你確定你已經包含了PhoneGap的JS文件,該文件是具體到iOS?通常,當您錯誤地爲iOS開發包含cordova/phonegap文件(屬於Android)時會發生此錯誤。在下載的phonegap 2.5.0文件夾中,針對不同平臺有不同的子文件夾。你必須確保你使用正確的Javascript文件,這是爲特定平臺提供的。

一個可能的場景:

你可能包括來自Android的文件夾中的科爾多瓦 - 2.5.0.js文件作出的iOS打造。 您可能剛拼錯了www文件夾中的JS文件。 (雖然可能性較小)。

修復:

使用JavaScript(科爾多瓦-2.5.0.js文件)從iOS的文件夾中文件的PhoneGap-2.5.0的文件夾爲iOS打造內。

+0

這對我們不起作用,因爲我們不能在我們的項目中包含任何JS文件!您的修補程序適用於本地構建的應用程序我們正在通過[Phonegap Build](https://build.phonegap.com/)在線構建。 根據[Adobe](https://build.phonegap.com/docs/preparing-your-app#configure_application),我們必須刪除通過[Phonegap Build]構建的phongegap/cordova JS文件(https:// build .phonegap.com /)。它將包含正確的平臺。所以在我們的項目中沒有錯誤的定位JS文件。問題依然存在。 –

+1

這是我的答案。我首先開發了一個android應用程序。在Windows Phone上啓動時,我忘記更改cordova.js文件。 – Berty

+0

花費幾乎找到一個修復程序,但這對我來說是解決方案。我沒有想到,一個JavaScript文件可以在兩個平臺上有所不同 –

相關問題