2013-09-02 10 views
6

Praca na Windowsie z Phonegap 3.0, platformą Android, debugowanie w środowisku Eclipse.Phonegap - Aktualizacja do 3.0 problemów z funkcjami API

Udało mi się skompilować moją starą aplikację, ale napotkałem nowy problem, gdy próbuję użyć funkcji, która jest teraz wtyczką.

Dodałem wszystkie potrzebne wtyczki za pomocą narzędzia CLI i dodałem dane "funkcji" do pliku config.xml, więc zakładam, że można je wywoływać. Uprawnienia są również ustawione w pliku manifestu.

FileTransfer

widzę, że przykład API File Transfer kod nie został zmieniony na 3,0, więc wyszedłem z połączenia tak samo w moim kodu. Więc plik pobierze ale wtedy pojawia się błąd, który sprawia, że ​​moja aplikacja krach

" 
D/CordovaLog(12883): file:///android_asset/www/phonegap.js: Line 932 : Uncaught Error: Error calling method on NPObject! 
" 

Zrobiłem kilka szukając tego błędu i nie wydaje się być standardowe rozwiązanie?

Być może istnieje nowy sposób wywoływania funkcji zawartych w wtyczkach? Ponieważ nie mogę odtwarzać pliku audio, nie otrzymując również błędów. Plik dźwiękowy zostanie odtworzony, ale spowoduje błędy.

" 
09-01 20:13:17.274: W/PluginManager(13279): THREAD WARNING: exec() call to Media.startPlayingAudio blocked the main thread for 23ms. Plugin should use CordovaInterface.getThreadPool(). 
" 

Ponownie odczytałem interfejs API mediów i nie ma wzmianki o puli wątków. Robię wszystkie moje programy w javascript.

Zasadniczo w każdym miejscu, w którym używam wtyczki, w aplikacji występują poważne błędy. Próbowałem za pomocą mojego funkcji Nagrywanie dźwięku w moim app wcześniej pracy, a kiedy wezwać kres mojego nagrania to zgłasza błąd

" 
09-01 20:10:04.206: E/AudioPlayer(13279): FAILED renaming /mnt/sdcard/tmprecording.3gp to /sdsub/myapp/Recorded/myRecording.amr 
" 

testowałem api transferu plików ponownie przez mojego pliku usunąć funkcję i to również nie

" 
09-01 20:16:00.884: W/PluginManager(13279): THREAD WARNING: exec() call to File.remove blocked the main thread for 19ms. Plugin should use CordovaInterface.getThreadPool(). 
" 

Wygląda na to, że istotność zmian funkcjonalności funkcji została zmieniona, ale nigdzie jej nie udokumentowano. Wywołania API wydają się niezmienione w stosunku do starszych wersji, sposób instalowania funkcji API jest inny, ale postępowałem zgodnie z tym przewodnikiem i je instalowałem.

Czy istnieje nowy przewodnik API, który przegapiłem? ponieważ dokumentacja API Phonegap nie uległa zmianie w związku z tym, jak te funkcje są wywoływane w wersji 3.0.

Dzięki.

mój plik konfiguracyjny

<feature name="App"> 
    <param name="android-package" value="org.apache.cordova.App" /> 
</feature> 
<feature name="NetworkStatus"> 
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" /> 
</feature> 
<feature name="File"> 
    <param name="android-package" value="org.apache.cordova.file.FileUtils" /> 
</feature> 
<feature name="FileTransfer"> 
    <param name="android-package" value="org.apache.cordova.filetransfer.FileTransfer" /> 
</feature> 
<feature name="Media"> 
    <param name="android-package" value="org.apache.cordova.media.AudioHandler" /> 
</feature> 
<feature name="Notification"> 
    <param name="android-package" value="org.apache.cordova.dialogs.Notification" /> 
</feature> 
<feature name="SplashScreen"> 
    <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" /> 
</feature> 
<feature name="Compass"> 
    <param name="android-package" value="org.apache.cordova.deviceorientation.CompassListener" /> 
</feature> 

mój Manifest plik

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
+0

Czy byłeś w stanie to naprawić? Czy możesz potwierdzić, że folder z plikiem cordova.js zawiera również plik cordova_plugins.js i folder wtyczek (które będą miały więcej podkatalogów dla każdej użytej wtyczki). Otwórz także cordova_plugins.Plik js i sprawdź, czy wspomina o wszystkich wtyczkach, które są również wymienione w pliku config.xml. –

+0

Nie mogłem tego naprawić. Nie wiem, dlaczego moja aplikacja działa bez błędów w wersji 3.0, ale ma wszystkie te błędy w wersji 3.0. Plik cordova_plugins.js znajduje się obok pliku cordova.js, a folder wtyczek zawiera wszystkie podkatalogi wtyczek, które dodałem. Jakieś sugestie, w jaki sposób mogę naprawić te błędy? – user1017063

+0

Witam, krok 1 upewnij się, że Twój cordova.js działa i działa poprawnie, krok 2. Musisz wypróbować wtyczkę w rodzimym terminalu, nie emulatorze, nie przeglądarce, krok 3 w Cordova 3.3 nie dodałem żadnych funkcji do konfiguracji , cordova zrobić dla siebie w budowie. krok 4. IOS ma problem z wtyczkami, musisz najpierw usunąć platformę i zainstalować wtyczki, po ponownym dodaniu platformy ios. Mam nadzieję, że to może ci pomóc. – JSG33kC0d3

Odpowiedz

0

podczas uaktualniania aplikacji, plik phonegap.js musi suppport cały skrypt funkcjonalny. możesz użyć odpowiedniej wersji pliku javascript, na przykład phonegap.0.9.5.js lub wyższej wersji. Możliwe, że plik phonegap.js nie zawiera wymaganej funkcji aplikacji. Jeśli widzisz interfejs API, ma on plik phonegap .X.Y.Z.js. abyś mógł wypróbować wyższą wersję

+0

Dzięki za odpowiedź. Nie jestem pewien, co próbujesz dostać ... Twój komentarz nie ma nic wspólnego z moim pytaniem ... Być może nie rozumiem, co próbujesz powiedzieć. Podczas aktualizowania phonegap aktualizowany jest także główny plik .js. Więc ? – user1017063

Powiązane problemy