为cordova

时间:2016-08-02 06:42:38

标签: xml bash cordova ionic2

嗨,这个问题很可能只是一个科尔多瓦问题。我见过类似的问题,但从来没有得到满意的答案。

我最终的目标是建立Android,iOS和Windows Phone应用程序的多种口味的简单方法。

我最大的要求是:

  • 更改名称空间。因此,config.xml中的窗口小部件属性最好被覆盖。名称和描述也会有所帮助。
  • 生成不同的图标和启动画面。我可能会设置与我正在使用的包名相关的目录。在此处放置高分辨率Splash和Icon,使用ionic的resources命令生成正确的文件。
  • 基于目标的颜色方案更改
  • (可选)动态配置。

我目前所做的是在我的webpack.config中添加了一些代码(我的离子项目使用了webpack)。要改变sass颜色,我也可以在这里轻松添加其他选项。

这可能是实现它的最糟糕方式,但我只需要一个工作原型

var flavour = "some.namespace.dir";
var ENV = "TEST";

for(var i = 0; i < args.length ; i++) {
    if (args[i] == "--env") {
        if (args[i+1]) {
            ENV = args[i+1];
        }
    }

    if (args[i] == "--flavour") {
        if (args[i+1]) {
            flavour = args[i+1];
        }
    }
}

因此,这将检查node命令是否有任何--flavour或--env标志来设置这些属性。在此之后,我将以愚蠢的方式加载配置。

var config =
    JSON.parse(
        require('fs').readFileSync(
            require('path').resolve(
                __dirname,
                'flavours/' + flavour + ".json"),
            'utf8'));

好吧所以我有一个json对象,我几乎可以在这里放任何东西,所以为了做自定义样式,我们可以使用sass loader。

sassLoader: {
    includePaths: [
        'node_modules/ionic-angular',
        'node_modules/ionicons/dist/scss'
    ],
    data: "$custom-primary: " + config.colorPrimary + " ; $custom-accent: " + config.colorAccent + " ;"
},

所以这实际上让我在sass版本中添加变量,太棒了! 至于配置:

new DefinePlugin({
   'ENV': JSON.stringify(ENV),
   'appConfig': JSON.stringify(config)
})

所以我有这些东西,我可以使用它来使应用程序内部的逻辑特定于一种风格。

我很想听听人们在实施过程中是多么失望,以及他们是否有改进这方面的建议。

此外,截至目前,我想我需要一个bash脚本来更改我的config.xml和资源。我可以有一个模板文件,在其中我替换命名空间,或者我只是在我的“flavor”文件夹中创建config.xml文件并将它们复制到位。

任何建议或wtf的人都可以分享?至于现在,我可能会使用每个目录方法中的配置以及资源。这样我就可以点击一个bash文件来构建编译并签名任何风格。

0 个答案:

没有答案