Ionic Resources不会更新平台/ android / res文件

时间:2016-12-25 19:41:10

标签: android cordova ionic-framework

当我运行ionic resourcesionic resources android时,它会显示为iOS和Android生成启动画面和图标。但是,当我检查android平台下的res文件夹时,运行ionic build androidionic run android --device后图标会保持不变。我已经尝试清理缓存,卸载应用程序并重新安装,甚至手动尝试在平台文件夹中设置图标,但没有一个工作。 iOS图标/启动画面工作正常。

3 个答案:

答案 0 :(得分:1)

本周我也有这个问题。这就是我所做的。

基于this blog post我通过以下步骤为我工作:

1)在

中创建一个新钩子
  

钩/ after_prepare / 020_android_move_custom_resources.js

#!/usr/bin/env node

// This hook copies various resource files
// from our version control system directories
// into the appropriate platform specific location

var customResources = [{
    "pathToResources/android/other/notification_icon.png":
        "platforms/android/res/drawable/notification_icon.png"
    }, {
    "pathToResources/android/other/thatOtherImg.png":
        "platforms/android/res/thatOtherFolder/thatOtherImg.png"
    }
];

var fs = require('fs');
var path = require('path');

// no need to configure below
var rootDir = process.argv[2];

customResources.forEach(function(obj) {
    Object.keys(obj).forEach(function(key) {
        var val = obj[key];
        var srcFile = path.join(rootDir, key);
        var destFile = path.join(rootDir, val);
        var destDir = path.dirname(destFile);
        if (fs.existsSync(srcFile) && fs.existsSync(destDir)) {
            fs.createReadStream(srcFile).pipe(fs.createWriteStream(destFile));
        }
    });
});

2)将要复制的所有资源放入customResources数组中,每个数组都在自己的对象中。关键是来源,价值是目的地。

3)使钩子可以执行

$ chmod +x hooks/after_prepare/020_android_move_custom_resources.js

这让它运转了。这样,克隆我的git项目的任何人也将在编译时复制文件。

答案 1 :(得分:0)

我也遇到了这个问题。这似乎是Cordova 6的一个问题,应该已经修复了6.1。以下是相关网址 - https://github.com/driftyco/ionic-cli/issues/1638

当您运行离子资源命令时,文件似乎正确地复制到根文件夹下的res文件夹中,但是在构建过程中的某个地方,文件不会被复制到最终目标,即平台下的res文件夹/ android文件夹。

我按照快速手动步骤将res文件夹的内容从根文件夹下复制到platforms / android / res文件夹中。请注意不要删除目标文件夹中的其他文件夹,例如值和xmls。

此后图标和启动画面工作正常。

不幸的是,我现在没有更好的解决方案。

答案 2 :(得分:0)

以下是我为尽快开始工作而采取的措施。

ionic cordova resources android;
cd resources/android/splash;
mkdir ../assets;
mkdir ../assets/drawable-land-hdpi;
mkdir ../assets/drawable-land-ldpi;
mkdir ../assets/drawable-land-mdpi;
mkdir ../assets/drawable-land-xhdpi;
mkdir ../assets/drawable-land-xxhdpi;
mkdir ../assets/drawable-land-xxxhdpi;
mkdir ../assets/drawable-port-hdpi;
mkdir ../assets/drawable-port-ldpi;
mkdir ../assets/drawable-port-mdpi;
mkdir ../assets/drawable-port-xhdpi;
mkdir ../assets/drawable-port-xxhdpi;
mkdir ../assets/drawable-port-xxxhdpi;
cp drawable-land-hdpi-screen.png ../assets/drawable-land-hdpi/screen.png;
cp drawable-land-ldpi-screen.png ../assets/drawable-land-ldpi/screen.png;
cp drawable-land-mdpi-screen.png ../assets/drawable-land-mdpi/screen.png;
cp drawable-land-xhdpi-screen.png ../assets/drawable-land-xhdpi/screen.png;
cp drawable-land-xxhdpi-screen.png ../assets/drawable-land-xxhdpi/screen.png;
cp drawable-land-xxxhdpi-screen.png ../assets/drawable-land-xxxhdpi/screen.png;
cp drawable-port-hdpi-screen.png ../assets/drawable-port-hdpi/screen.png;
cp drawable-port-ldpi-screen.png ../assets/drawable-port-ldpi/screen.png;
cp drawable-port-mdpi-screen.png ../assets/drawable-port-mdpi/screen.png;
cp drawable-port-xhdpi-screen.png ../assets/drawable-port-xhdpi/screen.png;
cp drawable-port-xxhdpi-screen.png ../assets/drawable-port-xxhdpi/screen.png;
cp drawable-port-xxxhdpi-screen.png ../assets/drawable-port-xxxhdpi/screen.png;
cd ../icon;
mkdir ../assets/mipmap-hdpi;
mkdir ../assets/mipmap-ldpi;
mkdir ../assets/mipmap-mdpi;
mkdir ../assets/mipmap-xhdpi;
mkdir ../assets/mipmap-xxhdpi;
mkdir ../assets/mipmap-xxxhdpi;
cp drawable-hdpi-icon.png ../assets/mipmap-hdpi/icon.png;
cp drawable-ldpi-icon.png ../assets/mipmap-ldpi/icon.png;
cp drawable-mdpi-icon.png ../assets/mipmap-mdpi/icon.png;
cp drawable-hdpi-icon.png ../assets/mipmap-hdpi/icon.png;
cp drawable-xhdpi-icon.png ../assets/mipmap-xhdpi/icon.png;
cp drawable-xxhdpi-icon.png ../assets/mipmap-xxhdpi/icon.png;
cp drawable-xxxhdpi-icon.png ../assets/mipmap-xxxhdpi/icon.png;
cd ../assets;
cp -rf ./* ../../../platforms/android/res/;
cd ../../..;

第一行执行正常资源生成。然后剩下的就是格式化文件并将它们移动到正确的目的地。 您可以创建一个.sh脚本并将此代码放入其中以方便使用。