问题 使用Cordova添加可绘制资源


我想在我的cordova项目中添加一个可绘制的资源。我确实添加了图标和启动画面项目。他们被复制到我的平台/ android / res / drawable就好了。问题是当我尝试添加另一个资源时。我怎么做?我在cordova上找不到任何东西,而不是图标和闪屏

<platform name="android">
<icon src="xx.png" density="ldpi"/>
<icon src="xx.png" density="mdpi"/>
<icon src="xx.png" density="hdpi"/>
<icon src="xx.png" density="xhdpi"/>
<icon src="xx.png" density="xxhdpi"/>
<icon src="xx.png" density="xxxhdpi"/>
<splash src="xx.png" density="ldpi"/>
<splash src="xx.png" density="mdpi"/>
<splash src="xx.png" density="hdpi"/>
<splash src="xx.png" density="xhdpi"/>
<splash src="xx.png" density="xxhdpi"/>
<splash src="xx.png" density="xxxhdpi"/>

有人可以帮忙吗?我没有在config.xml中看到任何选项来添加其他可绘制资源。


11231
2018-02-19 17:58


起源

你能回答你自己的问题并描述“钩子”解决方案吗?我不确定如何实现它并且与原始帖子有相同的问题。 - raider33


答案:


编辑:

从Cordova CLI 7.x.x开始,当使用cordova-android 6.2.x或cordova-ios 4.4.x时,您可以使用config.xml中的resource-file标签,正如我在插件的旧答案中所解释的那样。你必须把它放在平台标签内。

例:

<platform name="android">
  <resource-file src="www/res/drawable-hdpi/yourImage.png" target="res/drawable-hdpi/yourImage.png" />
</platform>

src是您现在拥有图像的地方,如果您不希望文件重复,可以在我的示例中的www中,甚至在项目的根目录中。 target是目标,它将位于yourProject / platforms / platform / target中 这样的例子 yourProject/platforms/android/res/drawable-hdpi/yourImage.png

老答案:

从config.xml中,您只能添加图标和启动图像

如果要添加资源,可以创建插件并使用 resource-file 标签

<resource-file src="src/android/res/drawable-hdpi/yourImage.png" target="res/drawable-hdpi/yourImage.png" />

或者您可以使用将图像复制到任何位置的钩子


13
2018-02-22 15:08



我去了勾选项。看起来更干净,并在gulpfile中拥有所有逻辑 - Jose Granja
请给出更多解释,这太模糊了 - Cedriga
对于插件读取 cordova.apache.org/docs/en/latest/plugin_ref/...,对于钩子,看到sinedied答案 - jcesarmobile
@jcesarmobile这适用于Cordova CLI 6.5.0和cordova-android 6.3.x:thumbsup: - joseglego
啊,那么也许cordova-android 6.2.0或更高就足够了 - jcesarmobile


对于像我这样的下一个人,这是我做这个的简单钩子,放入 hooks/before_build/020_copy_resources.js

#!/usr/bin/env node

// Copy native resources
var rootdir = process.argv[2];
var exec = require('child_process').exec;

// Native resources to copy
var androidNativePath = 'native/android/';

// Android platform resource path
var androidResPath = 'platforms/android/res/';

function copyAndroidResources() {
  exec('cp -Rf ' + androidNativePath + '* ' + androidResPath);
  process.stdout.write('Copied android native resources');
}

if (rootdir) {
  copyAndroidResources();
}

把你的android资源放进去吧 native/android/ 然后,你很高兴去。


3
2017-08-04 08:49



这就像一个魅力,但请确保您遵循native / android /中文件的res文件夹的子文件夹命名约定。 - Joel Duckworth