背景:我在项目文件夹中通过 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”。这也有些令人担忧。
那么有人可以告诉我一切是否正常吗?具体来说:
- 我的平台无关 config.xml 是否需要了解我已安装的插件?(cli没有这样做是一个错误/待办事项吗?)
- 我的平台特定 config.xml 是否需要知道我的项目/应用程序的正确名称?(这里又是一个错误/待办事项?)
- 如果前两个不是错误,cordova 构建过程是否会在某个阶段引入每个特定于平台的 config.xml,从而覆盖或与平台无关的 config.xml 合并?
- 我应该注意两者之间的其他差异吗?
- 最终,我是否需要在执行“cordova 构建”之前手动更新 www/config.xml(以及平台特定文件),因为 CLI 没有尽其所能/应该做的一切?
提前致谢。