我正在使用离子2。
我需要为一个信号通知生成图标。
我试过这个
将文件添加到名为030_copy_android_notification_icons.js的after_prepare文件夹内的hooks目录中
将以下代码放入其中:
var filestocopy = [{
"resources/android/icon/drawable-hdpi-icon.png":
"platforms/android/res/drawable-hdpi/ic_stat_onesignal_default.png"
}, {
"resources/android/icon/drawable-mdpi-icon.png":
"platforms/android/res/drawable-mdpi/ic_stat_onesignal_default.png"
}, {
"resources/android/icon/drawable-xhdpi-icon.png":
"platforms/android/res/drawable-xhdpi/ic_stat_onesignal_default.png"
}, {
"resources/android/icon/drawable-xxhdpi-icon.png":
"platforms/android/res/drawable-xxhdpi/ic_stat_onesignal_default.png"
}, {
"resources/android/icon/drawable-xxxhdpi-icon.png":
"platforms/android/res/drawable-xxxhdpi/ic_stat_onesignal_default.png"
} ];
var fs = require('fs');
var path = require('path');
// no need to configure below
var rootdir = process.argv[2];
filestocopy.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);
//console.log("copying "+srcfile+" to "+destfile);
var destdir = path.dirname(destfile);
if (fs.existsSync(srcfile) && fs.existsSync(destdir)) {
fs.createReadStream(srcfile).pipe(
fs.createWriteStream(destfile));
}
});
});
我不知道。
请建议我,
由于
答案 0 :(得分:0)
我遇到过同样的问题。您的方法是正确的,将030_copy_android_notification_icons.js
文件放在{root}/hooks/after_prepare
下。另请注意,文件名并不重要。
然后要运行脚本,您需要在评论下面运行:
ionic cordova prepare android
这样,您的脚本就会运行。但也许你的问题可能与我的相似。如果您使用Windows,在处理从resources/android/icon/
到platforms/android/res/
的文件时,由于缺少目标文件夹,脚本无法复制操作。这就是为什么应该在代码中添加一个简单的代码。
var destdir = path.dirname(destfile);
if (!fs.existsSync(destdir)){
fs.mkdirSync(destdir);
}