5

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

これを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
4

2 に答える 2

3

それで、私は戻ってきて、私が抱えていた問題を何らかの形で修正しました(おそらく運が良かったのでしょう)。このプロジェクトを開始したとき、最善のアプローチはこのアプリケーションを可能な限りモジュール化することだと考えました。各機能 (Web リクエスト、ファイルの読み取り/書き込みなど) を互いに分離する必要があります。したがって、それぞれに適切な名前 (ネットワーク、デバイス、言語など) でタグ付けされた多数の個別の js ファイルを作成し、それらを私の index.html ページに含めました。このページは phonegap によって実行されます。

これらのファイルのいくつかでは、次のアプローチを採用しました。

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

その結果、ドット演算子 (私が好む) を使用してこの機能にアクセスできました。ただし、そうすることで、多くのファイルが相互に依存する結果になり、問題を追跡することが困難になりました。機能のコメントとコメント解除にしばらく時間を費やした後、上記のアプローチ (ドット演算子) と私の不適切な命名規則の組み合わせを使用しているようです。上記のDevice.Name()実装は、PhoneGap ライブラリと競合しているように見えました (なぜ/どのように完全に定かではありません)。その結果、デバイスで js エラーが発生しました。

上記の名前を「デバイス」から「ハンドセット」に変更した後、私の問題は解決しました。辛い午後のシンプルでおそらく明白な解決策。

于 2012-01-25T11:05:35.837 に答える
0

私はあなたの質問に答えますが、それはあなたの問題ではないと思います:

AppLaud ウィザードが phonegap.jar のみを使用するか、そのコンポーネントを再構築するかは、プロジェクト作成ウィザードの使用方法によって異なります。

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

問題に関しては、phonegap{...}.js のスペルミスなど、index.html ファイルに何か問題がある可能性があります。GhostCoder がコメントで述べているように、コードを共有してヘルプを得る必要がある場合があります。

于 2012-01-24T16:08:18.570 に答える