20

iOS と Android の両方で phonegap アプリを開発しており、www ディレクトリのバージョンを git で制御しています。HTML ファイルに正しい Cordova.js ファイルを含める必要があることはわかっています (現在開発しているプラ​​ットフォームによって異なります)。

誰かが Android で作業していたときに、iOS で www に変更をプルするのは少し面倒です。無限の gap_poll アラートが表示されます。

簡単な解決策は、Cordova.js src を忘れずに変更して、iOS バージョンを再び指すようにすることです。これに関する問題は、最新のコミットが別のプラットフォームで行われた場合、他の開発者が src を変更し続ける必要があることです。

含める Cordova のバージョンを自動的に検出する方法はありますか? そうすれば、どのプラットフォームでも機能し、面倒な変更を加える必要がなくなります。

4

6 に答える 6

25

次のコードは私にとってはうまくいきます:

    function init() {
        if(isAndroid()){
            $("script").attr("src", "lib/android/cordova-1.7.0.js").appendTo("head");
        }else if(isiOS()){
            $("script").attr("src", "lib/ios/cordova-1.7.0.js").appendTo("head");
        }

         document.addEventListener("deviceready", onDeviceReady, false);
    }

    function isAndroid(){
        return navigator.userAgent.indexOf("Android") > 0;
    }

    function isiOS(){
        return ( navigator.userAgent.indexOf("iPhone") > 0 || navigator.userAgent.indexOf("iPad") > 0 || navigator.userAgent.indexOf("iPod") > 0); 
    }

    function onDeviceReady(){
        console.log("device is ready");
    }

ここで完全なソースコードを確認できます

于 2012-06-07T05:47:53.903 に答える
14

Git サブモジュールとして、共有 HTML/JS と同じ設定をしています。私の index.html は共有フォルダーにあり、相対パスを使用してプラットフォーム固有の JS ファイルが含まれています。

Android、iOS、Shared の 3 つの Git プロジェクトがあります。Shared は、Android および iOS のサブモジュールとして追加されます。

フォルダ構造

www
|-platform
    |-js/libs/cordova.js
|-shared
    |-index.html

そしてindex.htmlで

<script type="text/javascript" src="../platform/js/libs/cordova.js"></script>

同じ考え方を使用して、プラットフォームに依存するプラグイン用の JS ファイルを含めます。

于 2012-06-07T10:33:49.797 に答える
6

マスター WWW のみをソース管理下に置く必要があります。これには、どのコルドバファイルも含めるべきではありません。これらは、phonegap ビルドを行うときに、phonegap によってプラットフォーム フォルダーに追加する必要があります。したがって、一般的な index.html には次のものを含めることができます。

<script type="text/javascript" src="cordova.js"></script>

マスター WWW には cordova.js スクリプトはありませんが、次の操作を行うと、platform/android フォルダーで行います。

phonegap build android

platform/xyz フォルダーのコンテンツを条件付きで微調整する必要がある場合は、Grunt.JS が最適なオプションです。

于 2014-02-03T23:10:33.080 に答える
1

上記の解決策は私にはうまくいきませんでした。だから私はこのjqueryソリューションを追加しました:

    var isAndroid = /android/i.test(navigator.userAgent.toLowerCase());

if (isAndroid)
{
var script = document.createElement('script');
script.src = 'cordova/android/cordova.js';
 document.head.appendChild(script);
}
var IOS = /ipad|iphone|ipod/i.test(navigator.userAgent.toLowerCase());
if (IOS)
{
 var script = document.createElement('script');
 script.src = 'cordova/ios/cordova.js';
 document.head.appendChild(script);
}

他の Phonegap プラットフォームにも同じことが言えます。Windows Phone の場合は、/windows phone/ などを追加するだけです。

また、プラグインがある場合、これもプラットフォームごとに異なる場合があります。plugin フォルダーと cordova_plugin.js を同じフォルダーに追加するだけです。

于 2014-07-15T15:09:01.607 に答える
1

私の場合、cordova.jsまたはcordova-1.7.0.js (またはその他のバージョン)なしでwwwフォルダーの zip ファイルを作成しました。その zip をビルド プロセスに送信すると、適切なcordova.jsファイルが生成されるので、iOS と Android で動作します。

それがうまくいったかどうか教えてください。

于 2012-07-23T13:34:15.220 に答える