Cordova/Ionic资源

Miq*_*uel 3 cordova ionic-framework

我正在使用离子来生成资源(图标和启动).我正在使用离子v2.1.0和cordova v6.4.0.

直到现在我一直在使用(它在以前的版本中工作):

cordova platform add android
ionic resources
Run Code Online (Sandbox Code Playgroud)

这是用这个版本添加android:

Adding android project...
Creating Cordova project for the Android platform:
    Path: platforms/android
    Package: ...
    Name: ...
    Activity: MainActivity
    Android target: android-24
Subproject Path: CordovaLib
Android project created with cordova-android@6.0.0
Run Code Online (Sandbox Code Playgroud)

在以前的cli版本中,ionic resources正在生成相应的条目config.xml并且资源被正确放置.

但是在升级了cordova和/或离子cli后,android的资源还没有被复制,因此icon和splash仍然是cordova的.我已经看过这个帖子,它说删除android平台然后使用这个命令:

cordova platform add android@latest
Run Code Online (Sandbox Code Playgroud)

所以这增加了这个平台:

Adding android project...
Creating Cordova project for the Android platform:
    Path: platforms/android
    Package: ...
    Name: ...
    Activity: MainActivity
    Android target: android-25
Subproject Path: CordovaLib
Android project created with cordova-android@6.1.0
Run Code Online (Sandbox Code Playgroud)

并成功复制图标和启动.问题是,这会创建一个额外的res文件夹:

??? bower.json
??? config.xml
??? gulpfile.js
??? hooks
??? ionic.config.json
??? node_modules
??? package.json
??? platforms
??? plugins
??? res
?   ??? drawable-land-hdpi
?   ??? drawable-land-ldpi
?   ??? drawable-land-mdpi
?   ??? drawable-land-xhdpi
?   ??? drawable-land-xxhdpi
?   ??? drawable-land-xxxhdpi
?   ??? drawable-port-hdpi
?   ??? drawable-port-ldpi
?   ??? drawable-port-mdpi
?   ??? drawable-port-xhdpi
?   ??? drawable-port-xxhdpi
?   ??? drawable-port-xxxhdpi
?   ??? mipmap-hdpi
?   ??? mipmap-ldpi
?   ??? mipmap-mdpi
?   ??? mipmap-xhdpi
?   ??? mipmap-xxhdpi
?   ??? mipmap-xxxhdpi
??? resources
??? scss
??? www
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 这个额外生成的res文件夹的目的是什么?
  • 我能安全地删除res文件夹吗?
  • 如果我想为Android和ios提供不同的图标,我该如何管理呢?(在较旧的情况下,我在备份文件夹中复制android的生成资源,为ios生成新资源,然后混合它们并制作cordova prepare)

Jan*_*anP 5

  1. 没有目的,这是一个bug,它应该在platforms/android文件夹中生成
  2. 是的你可以
  3. resources如果两者都需要相同,您可以将splash.png和icon.png添加到文件夹中.将它们添加到resp.resources/android而且resources/ios如果他们需要不同的话.然后运行ionic resources

请参阅下面的解决方案:

您已更新到Cordova的最新版本,但未更新到最新版本的Android平台.这样做是为了更新到6.1.0版:

cordova platform update android@6.1.0
Run Code Online (Sandbox Code Playgroud)

之后,资源将上传到platforms/android中的res目录,您可以安全地从项目根目录中删除res目录.

编辑

此问题已在Cordova 6.5.0中修复.

使用以下命令将项目更新到Cordova 6.5.0.

npm install -g cordova
Run Code Online (Sandbox Code Playgroud)

如果您已经使用cordova早期版本构建了项目,则必须更新项目的android平台.

cordova platform update android@6.1.1
Run Code Online (Sandbox Code Playgroud)