常见的www文件夹和cordova中所有平台的所有文件

时间:2016-04-22 11:30:37

标签: android ios cordova windows-phone-8 windows-10-mobile

自从过去2年以来,我在cordova的工作有2份副本,它的工作没有任何错误。

  1. 对于android / ios
  2. Windows手机
  3. 在这两个副本中只有平台特定的变化。在Windows手机中的手段,它不能允许加载html文件,所以我添加脚本标签中的所有html文件,并加载到主index.html使生意工作,它在Windows手机和第二副本中工作我做了正常的HTML文件单独作为android和ios加载外部html文件没有问题。

    所以我的问题:有没有办法合并一个副本中的所有代码,同样的www文件夹代码也可以在android,ios和windows手机中使用?

    可能是不可能因为我经历因为Windows手机有一些不同的文件结构然后android / ios。

    请指导是否有人知道所有平台的常见工作。

1 个答案:

答案 0 :(得分:1)

您可以使用"合并"功能在Cordova CLI中执行此操作。想象一下,我有一个看起来像这样的项目:

-rw-r--r-- 1 simon staff 1115 Mar 22 19:57 config.xml drwxr-xr-x 3 simon staff 102 Mar 17 21:47 hooks/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 platforms/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 plugins/ drwxr-xr-x 7 simon staff 238 Mar 21 13:11 www/

我的应用程序代码全部在www中,组织如下:

drwxr-xr-x 4 simon staff 136 Mar 24 12:42 css/ drwxr-xr-x 4 simon staff 136 Mar 21 13:11 img/ -rw-r--r-- 1 simon staff 1338 Mar 21 15:16 index.html drwxr-xr-x 4 simon staff 136 Mar 22 18:29 js/

想象一下,我已经安装了Android和iOS平台,并希望在每个平台上做一些不同的事情,而不需要投入大量的内容:

if (device.platform === 'Android') { // Android specific code } else { // iOS specific, assuming we are only supporting iOS }

我的应用程序中的一些代码。这也没有扩展到许多平台(例如,在那里添加Windows和BB,然后每次都有更多if / else或switch语句。)

为了解决这个问题,Cordova的CLI可以合并代码,并寻找名为merges的顶级文件夹。因此,请在config.xml所在的同一文件夹中创建其中一个,因此项目现在看起来像:

-rw-r--r-- 1 simon staff 1115 Mar 22 19:57 config.xml drwxr-xr-x 3 simon staff 102 Mar 17 21:47 hooks/ drwxr-xr-x 4 simon staff 136 Mar 22 17:47 merges/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 platforms/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 plugins/ drwxr-xr-x 7 simon staff 238 Mar 21 13:11 www/

然后创建:

merges/android merges/ios

您放入的任何内容都将被复制到特定于平台的www文件夹中,并覆盖主www文件夹中相同路径中的内容,或者如果www中没有相同的名称/路径,则添加内容。

示例:

ls -lF merges/android/img total 16 -rw-------@ 1 simon staff 7626 Mar 21 13:23 logo.png

此图片logo.png将仅取代www / img / logo.png。我可以为iOS做同样的事情(添加merges / ios / img / logo.png)或者使用默认图像(www / img / logo.png)。

这可以针对特定平台所需的任何类型的文件(JS / CSS / img / JSON /等)来完成。

没有必要编写一个钩子脚本来完成这项工作,当您为每个平台运行cordova构建时,CLI会自动执行此操作。

有关此概念的文档位于Cordova CLI docs