自从过去2年以来,我在cordova的工作有2份副本,它的工作没有任何错误。
在这两个副本中只有平台特定的变化。在Windows手机中的手段,它不能允许加载html文件,所以我添加脚本标签中的所有html文件,并加载到主index.html使生意工作,它在Windows手机和第二副本中工作我做了正常的HTML文件单独作为android和ios加载外部html文件没有问题。
所以我的问题:有没有办法合并一个副本中的所有代码,同样的www文件夹代码也可以在android,ios和windows手机中使用?
可能是不可能因为我经历因为Windows手机有一些不同的文件结构然后android / ios。
请指导是否有人知道所有平台的常见工作。
答案 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。