Android 使用单个基本www目录作为多个平台的源?

Android 使用单个基本www目录作为多个平台的源?,android,intellij-idea,cordova,Android,Intellij Idea,Cordova,我理解通过这样做: phonegap build android www中的文件副本在platforms/android/assets/www 然后,我可以将IDE中的platforms/android文件夹作为android项目导入,并在模拟器或手机中运行它 但我希望只有1个代码库,可以用于为不同的平台构建,因此理想情况下,我希望能够在www中仅在根目录下对应用程序进行更改 我想我需要某种文件复制生成器,它是在运行项目之前启动的,但我没有这方面的经验。我读到了关于Ant,Maven和Grad

我理解通过这样做:

phonegap build android
www
中的文件副本在
platforms/android/assets/www

然后,我可以将IDE中的platforms/android文件夹作为android项目导入,并在模拟器或手机中运行它

但我希望只有1个代码库,可以用于为不同的平台构建,因此理想情况下,我希望能够在
www
中仅在根目录下对应用程序进行更改

我想我需要某种文件复制生成器,它是在运行项目之前启动的,但我没有这方面的经验。我读到了关于Ant,Maven和Gradle的文章…这是一条路吗


谁能告诉我大家是怎么做的吗?或者对所有平台使用一个单一的代码库真的不常见吗?(我认为这就是Phonegap的全部要点!)

每个开发人员都有不同的方法来拥有一个单一的代码库。在我的例子中,我创建了两个文件夹Android和Iphone,其中Iphone的www文件夹是Android的www文件夹的符号链接。如果我想为iphone和android使用单独的脚本文件,我在index.html文件中有这段代码

  <!--iPhone 
 <script src="iphone/cordova-2.5.0.js"></script>
 <script src="iphone/DatePicker.js"></script>

-->
 <!-- android   -->

 <script src="android/cordova-2.5.0.js"></script>
 <script src="android/datePickerPlugin.js"></script>


如果我想为iphone运行,我将注释标记更改为un comment iphone和comment android

,它们现在有了解决此问题的命令行工具。 对我们来说,这似乎是一个合理的解决办法

我们过去所做的是使用SVN并签出同一个文件夹 android的资产/www 及 www-for-iOS

根据您的文件结构,您可能需要有条件javascript

    <script type="text/javascript" charset="utf-8">
        var ua = navigator.userAgent;
        var platform = {
            ios: ua.match(/(iPhone|iPod|iPad)/),
            android: ua.match(/Android/)
        };
        if (platform.android) {
            document.write('<script src="android/cordova-2.2.0.js" type="text/javascript" charset="utf-8"><\/script>');
            document.write('<script src="android/childbrowser.js" type="text/javascript" charset="utf-8"><\/script>');
        } else if (platform.ios) {
            document.write('<script src="ios/cordova-2.2.0.js" type="text/javascript" charset="utf-8"><\/script>');
            document.write('<script src="ios/ChildBrowser.js" type="text/javascript" charset="utf-8"><\/script>');
        }           
    </script>

var ua=navigator.userAgent;
var平台={
ios:ua.match(/(iPhone | iPod | iPad)/),
android:ua.match(/android/)
};
if(platform.android){
文件。写(“”);
文件。写(“”);
}else if(platform.ios){
文件。写(“”);
文件。写(“”);
}           

有关详细信息,请参阅PhoneGap 3项目结构。基本上,您有如下文件夹:

/合并-用于合并/覆盖www文件夹

  /android/cordova.js
  /ios/cordova.js
/平台-包含本机代码

  /android
  /ios
/插件-插件代码

  ... plugin native and stuff
  /www
/www-主文件夹web app文件夹

  cordojva.js
  index.htm
  etc...

就个人而言,我们没有升级到PG3,但我们遵循相同的结构。我们使用OSX上的Jenkins在TFS中签出文件。然后我们使用gruntjs覆盖平台文件夹中的www内容。然后再次从合并文件夹覆盖平台文件夹中的内容。最后,因为它是必需的,所以我们使用ant来编译android,使用xcode来编译iOS。

所有平台都需要一个通用的代码库。Phonegap将内容包装在/www文件夹中,以使android和iPhone构建在其中

要将文件从一个位置复制到第二个位置(如果这是一项要求),请尝试一下。它是完成这些任务的极好工具

在我看来,由于phonegap自己构建,所以可以避免使用其他构建工具,如ant、maven、gradle