为什么我的config.xml文件似乎没有被Cordova 3.0.9 CLI正确更新,我应该自己手动更新它们吗?

时间:2013-09-10 23:42:59

标签: android cordova phonegap-plugins cordova-3

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

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

cordova create . com.myproject MyProject 

(一切都很好我得到了一个带有config.xml的www dir,以及虚拟hello cordova app等等。这个config.xml默认生成了我的项目等正确名称)

cordova platform add android 

(我得到平台/ 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

这很好,但事情也变得有趣。我注意到插件安装,以及向插件dir添加srcs也使用有用的Android指令更新我的platforms / android / res / xml / config.xml:

<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 dir中的config.xml是否需要进行“cordova构建”,从来没有更新任何与我安装的插件相关的信息,我甚至对它有点担心/尤其是在阅读之后:

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

我可以在这里回答我自己的问题,但是还会有一些问题/担忧。

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

有人可以告诉我一切都好吗?具体做法是:

  1. 我的平台独立的config.xml是否需要知道我安装的插件? (这是一个错误/ TODO,cli没有这样做吗?)
  2. 我的平台特定的config.xml是否需要知道我的项目/应用程序的正确名称? (这里又是一个bug / TODO?)
  3. 如果前两个不是错误,那么cordova构建进程是否会在某个阶段覆盖每个相应的平台特定的config.xml,或者与平台独立的config.xml合并?
  4. 我应该注意两者之间的其他差异吗?
  5. 最终我需要在执行“cordova构建”之前手动更新www / config.xml(以及特定于平台的文件),因为CLI没有尽其所能吗?
  6. 提前致谢。

2 个答案:

答案 0 :(得分:2)

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

www/config.xml文件是您的主要配置文件。只要您执行cordova build或其他操作,就会使用它。但并非所有属性都重要。例如,不是插件。

来自README.md

  

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

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

这应该意味着以下我猜:

  1. 没有
  2. 不,它会在构建阶段被覆盖。
  3. 是的,如果使用平台特定功能,还会触及其他文件,例如AndroidManifest.xml。
  4. 不是我知道的。
  5. 如果您在不使用cordova cli的情况下添加插件,即第三方插件,则需要更新它。

答案 1 :(得分:0)

AFAIK平台独立的config.xml主要由Phonegap Build服务使用。 我亲自体验你所描述的内容。

我会根据我的谦逊经验回答,但也很乐意阅读其他意见答案,因为文档很少。

  1. 没有。至少我在iOS上使用插件,一切都在设备上正常工作,让CLI更新平台细节。

  2. 不确定是否有bug。我手动更新该部分,包括版本。但我已经测试了我的应用程序仍处于开发阶段,AFAI经历过它不会影响同时在XCode中正确设置应用程序包ID。

  3. 我见过cordova构建平台独立信息并将其与特定于平台的配置文件合并。

  4. 我很想让更多有经验的人回答。

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

  6. 相关问题:Cordova and PhoneGap have different config.xml examples