3

背景:我在项目文件夹中通过 npm 在 linux 上安装了一个 cordova 3.0.9(根据 package.json)项目。

命令历史如下(在 npm install Cordova,安装 android SDK 等,创建项目文件夹之后):

cordova create . com.myproject MyProject 

(很好,我得到了一个包含 config.xml 的 www 目录,以及虚拟的 hello cordova 应用程序等。默认情况下,这个 config.xml 具有我的项目等的正确名称)

cordova platform add android 

(我得到了平台/安卓文件夹等)

现在我安装了一些插件

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device-orientation.git

这很好,但也是事情变得有趣的地方。我注意到插件安装以及将 srcs 添加到插件目录也会更新我的平台/android/res/xml/config.xml,其中包含对 Android 有用的指令,例如:

<feature name="Geolocation">
  <param name="android-package" value="org.apache.cordova.GeoBroker" />
</feature>

<feature name="Compass">
  <param name="android-package" value="org.apache.cordova.CompassListener" />
</feature>

重要的是要注意,我的 www 目录中的 config.xml 是我知道进行“cordova 构建”所必需的,只是永远不会更新与我安装的插件相关的任何信息,我什至/特别是在之后有点担心阅读:

http://docs.phonegap.com/en/3.0.0/config_ref_index.md.html#Configuration%20Reference

我可以在这里回答我自己的问题,但还有一些问题/疑虑。

所以从逻辑上讲,www 目录中的 config.xml 仍然是非平台特定的,它仍然平淡无奇,只包含平台无关的指令。但是我很好奇它,因为平台独立的人肯定仍然应该了解插件?还有一个特定于平台的(platforms/android/res/xml/config.xml),甚至不知道我的项目的名称,它仍然被称为“Hello Cordova”。这也有些令人担忧。

那么有人可以告诉我一切是否正常吗?具体来说:

  1. 我的平台无关 config.xml 是否需要了解我已安装的插件?(cli没有这样做是一个错误/待办事项吗?)
  2. 我的平台特定 config.xml 是否需要知道我的项目/应用程序的正确名称?(这里又是一个错误/待办事项?)
  3. 如果前两个不是错误,cordova 构建过程是否会在某个阶段引入每个特定于平台的 config.xml,从而覆盖或与平台无关的 config.xml 合并?
  4. 我应该注意两者之间的其他差异吗?
  5. 最终,我是否需要在执行“cordova 构建”之前手动更新 www/config.xml(以及平台特定文件),因为 CLI 没有尽其所能/应该做的一切?

提前致谢。

4

2 回答 2

3

Cordova CLI github 页面https://github.com/apache/cordova-cli上的 README.md有更多信息。

www/config.xml文件是您的主要配置文件。每当你做一个cordova build或一些这样的事情时都会使用它。但并非其中的所有属性都真正重要。例如,不是插件。

来自 README.md

cordova-cli 支持通过 config.xml 文件中的以下元素更改应用程序的数据:

  • 可以通过元素的内容修改面向用户的名称。
  • 可以通过顶级元素的 id 属性修改包名称(AKA 包标识符或应用程序 ID)。
  • 版本可以通过顶级元素的版本属性进行修改。
  • 可以使用元素修改白名单。确保你的元素的 origin 属性指向一个有效的 URL(你可以使用 * 作为通配符)。有关白名单语法的更多信息,请参阅 docs.phonegap.com。您可以使用属性 uri(BlackBerry 专有)或 origin(符合标准)来表示域。
  • 特定于平台的首选项可以通过标签进行自定义。有关您可以使用的首选项列表,请参阅 docs.phonegap.com。
  • 您的应用程序的入口/起始页可以通过元素 + 属性来定义。

我猜这应该意味着以下内容:

  1. 不,它在构建阶段被覆盖。
  2. 是的,如果使用了特定于平台的功能,还会涉及其他文件,例如 AndroidManifest.xml。
  3. 从来没听说过。
  4. 如果您添加插件而不使用cordova cli,您需要更新它,即第三方插件。
于 2013-09-11T11:44:04.600 回答
0

AFAIK 平台独立的 config.xml 主要由 Phonegap Build 服务使用。我自己有你描述的经验。

我会根据我的卑微经验来回答,但也很想阅读其他意见的答案,因为文档有点稀疏。

  1. 不。至少我在 iOS 上使用插件,并且在离开 CLI 更新平台细节的设备上一切正常。

  2. 不确定是否有错误。我手动更新了该部分,包括版本。但是我已经测试了我的应用程序仍在开发中,并且 AFAI 已经体验到它不会影响同时在 XCode 中正确设置了应用程序包 ID。

  3. 我已经看到 cordova build 采用平台独立信息并将其与平台特定的配置文件合并。

  4. 我很乐意让更有经验的人回答。

  5. 如果平台无关配置未传播到特定平台,IMO 仅更新平台特定文件。

相关问题:Cordova 和 PhoneGap 有不同的 config.xml 示例

于 2013-09-11T11:24:32.173 回答