3

我明白这样做:

phonegap build android

文件的副本www是在platforms/android/assets/www

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

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

我想我需要某种文件复制构建器,它在运行项目之前启动,但我没有这方面的经验。我读过关于 Ant、Maven 和 Gradle 的文章……这是要走的路吗?

谁能告诉我每个人是怎么做到的?或者对所有平台使用 1 个单一代码库真的不常见吗?(我认为这就是 Phonegap 的全部意义所在!)

4

4 回答 4

1

有关详细信息,请参阅 PhoneGap 3 项目结构。基本上你有这样的文件夹:

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

  /android/cordova.js
  /ios/cordova.js

/platforms - 包含本机代码

  /android
  /ios

/plugins - 插件代码

  ... plugin native and stuff
  /www

/www - 主文件夹 Web 应用程序文件夹

  cordojva.js
  index.htm
  etc...

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

于 2013-08-19T15:32:16.033 回答
0

他们现在拥有应该解决这个问题的命令行工具。对我们来说,这似乎是一个合理的解决方案。

科尔多瓦命令行工具

我们以前做的是使用 SVN 并将同一个文件夹签出到 assets/www 为 android 和 www 为 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>
于 2013-08-19T15:20:39.713 回答
0

每个开发人员都有不同的方法来拥有一个单一的代码库。就我而言,我创建了两个文件夹 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

于 2013-08-19T15:20:08.220 回答
0

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

要将文件从一个位置复制到另一个位置(如果需要的话),请尝试gruntjs。它是完成此类任务的绝佳工具。

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

于 2013-08-20T05:28:31.653 回答