2012-01-24 36 views
5

私の問題は、Eclipse Applaudプラグインを使用したPhoneGapとAndroidの開発に関するものです。私はApplaudプラグインをダウンロードしてインストールしました。 Applaudウィザード(Eclipseのツールバーアイコンを使用)を使用して新しいプロジェクトを作成することができ、デモはデバイス上で正常に実行されます。しかし、既存のhtml & js(main.jsではなくphonegap.jsのみ)のファイルを上書きしてデバイスにビルドすると、デバイス以外の機能はうまく動作します(ボタンのクリック/ uiのアップデートなど)が、PhoneGapコマンド(device.version/device.platform/etc)のように動作していないようです。Androidの携帯電話と携帯電話

私はonDeviceReadyイベントにこれをフックし、.jarライブラリが含まれていることを確認してみましたが、私はまだ同じ問題があります。だから私の質問は、 Applaudを使用してPhoneGapソリューションを作成するとき、EclipseはPhoneGapなどのコンパイルとライブラリを必要としますか?もしそうなら、誰かがどうやってそのようなことをすることができますか?

エラーログ:

01-24 14:59:44.567: W/KeyCharacterMap(5453): No keyboard for id 131074 

01-24 14:59:44.567: W/KeyCharacterMap(5453): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 

01-24 14:59:59.917: I/Web Console(5453): Failed to run constructor: TypeError: object is not a function at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 

01-24 14:59:59.927: I/Web Console(5453): Failed to run constructor: TypeError: Cannot read property 'capture' of undefined at file:///android_asset/www/resources/js/phonegap-1.3.0.js:210 

01-24 14:59:59.927: I/Database(5453): sqlite returned: error code = 14, msg = cannot open file at source line 25467 

01-24 15:00:00.057: D/dalvikvm(5453): GC_CONCURRENT freed 1185K, 55% free 3188K/6983K, external 2630K/2814K, paused 2ms+3ms 
+0

プラグインをplugins.xmlファイルに追加しましたか? – ghostCoder

+0

は、発生しているonDeviceReadyイベントですか? – ghostCoder

+0

はい、プラグインファイルもroot/res/plugins.xmlにあります。実行中にデバイスにログを記録しましたが、次の出力が表示されるようです:I/Web Console(4894):コンストラクタの実行に失敗しました:TypeError :オブジェクトはfile:///android_asset/www/resources/js/phonegap-1.3.0の関数ではありません。js:210I/Web Console(5109):コンストラクタの実行に失敗しました:TypeError:ファイルで未定義のプロパティ 'capture'を読み取れません:///android_asset/www/resources/js/phonegap-1.3.0.js:210 I/msg = sqliteが返す:error code = 14、msg =ソース行でファイルを開くことができません25467 – JohnHodkinson

答えて

3

私は戻って、私が持っていた問題を何とか解決しました。このプロジェクトを開始したとき、私はこのアプリケーションをできるだけモジュール化することが最善のアプローチだと考えました。各機能(ウェブリクエスト、ファイルの読み書きなど)を互いに分離することができます。こうして私は、それぞれ適切な名前(ネットワーク、デバイス、言語など)でタグ付けされた多数の別々のjsファイルを作成し、次にそれらをindex.htmlページに含めてphonegapで実行しました。これらのファイルの一部で

、私は次のようなアプローチ取った:その結果

var Device = { 
    // Returns the Device Name as a string. 
    Name: function() { 
     return window.device.name; 
    } 
}; 

を、私は、(私が好む)ドット演算子を使用してこの機能にアクセスすることができます。しかし、そうすることで、多くのファイルが互いに頼りになり、問題を追跡することが困難になりました。時間を費やしてコメントをつけたり、コメントをつけたりした後、上記のアプローチ(ドット演算子)と命名規則の悪い選択を組み合わせて使用​​しているようです。上記のDevice.Name()の実装は、PhoneGapライブラリと競合しているように見えました。その結果、デバイスにjsエラーが発生しました。

上記の名前を「デバイス」から「ハンドセット」に変更したところ、問題は解決しました。苦しい午後の簡単で分かりやすい解決策。

+0

私はちょうど同じ問題を抱えていました。プロジェクトをインポートするか、新しいスクリプトタグを作成してphonegapをロードするスクリプトタグを作成すると、js apiがコミットされます。あなたはそれを必要としないでください。その行のコメントを外すだけです。 –

+0

phonegap.jsは、デバイス固有のプロパティを持つDeviceオブジェクトを定義しています。上記のオブジェクトと競合し、おそらく動作しなくなる可能性があります –

1

私はあなたの質問にお答えしますが、私はそれがあなたの問題であるとは思わない:拍手ウィザードはちょうどphonegap.jarを使用するか、を再構築

か否かは、コンポーネントは、プロジェクト作成ウィザードの使用方法によって異なります。

「Built-in Phonegap」を使用するか、ダウンロードした公式リリース(「インストールされているPhoneGapへのパスを入力」)を指す場合、そのリリースのphonegap.jarをポイントするだけです。解凍されたgithub PhoneGapバージョンを持つディレクトリを指す場合、phonegap.jarは使用されず、PhoneGap Javaソースがプロジェクトに組み込まれます。これにより、PhoneGap実装のデバッグが容易になります。

問題については、phonegap {...} .jsのスペルミスのように、index.htmlファイルに問題がある可能性があります。 ghostCoderはコメントの中で、ヘルプを得るためにコードを共有する必要があるかもしれないと述べています。