Xamarin.iOS多个资产目录

dar*_*s0n 8 xamarin.ios xamarin-studio asset-catalog

使用最新的Xamarin Studio(4.0.13),我正在尝试在我的应用程序中使用资产目录.该应用程序有两个不同的应用程序图标集:一个用于所有测试(Test.plist)和登台(Staging.plist)构建,一个用于所有预生产(PreProduction.plist)和生产(Production.plist)构建.测试包中包含NO app图标,因为我们希望QA清晰,这与生产版本不同.

我已经开始做一个Pre-Build plist cp步骤(不理想; Xamarin Studio应该有条件地支持包含基于构建配置的文件).有没有办法有条件地捆绑(构建操作ImageAsset).appiconset并且.launchimage特定于我的构建配置?我指定的相关XSAppIconAssetsXSLaunchImageAssets,但由于他们都标志着ImageAsset他们都被复制,无论如何,和(不幸)复制到根文件夹跳板可以找到并显示出来.

有没有办法解决这个问题:

  • 添加更多预构建cp以将正确的图标集捆绑到一个集合中,这是唯一标记的集合ImageAsset:

    cp iPhone/buildPlists/Staging-Info.plist Info.plist;
    cp -r Resources/Images.xcassets/TestAppIcons.appiconset/*
          Resources/Images.xcassets/AppIcons.appiconset;
    cp -r Resources/Images.xcassets/TestLaunchImages.launchimage/*
          Resources/Images.xcassets/LaunchImages.launchimage
    
    Run Code Online (Sandbox Code Playgroud)
  • 将空白图像文件添加到TestAppIcons.appiconset目录中? 这不起作用,将订单图标集复制到输出文件夹是未定义的

小智 2

我使用了上面的cp脚本,它基本上解决了我的问题。

更多可能对其他人有帮助的信息:

您不能依赖XSAppIconAssetsXSLaunchImageAssets在执行预构建 plist 复制步骤后进行检查。Info.plistXamarin Studio 似乎使用了中存在的值存在Xamarin Studio 似乎使用构建过程

资产目录在底层的工作方式如下:

  • 一般来说,目录图像被复制到.app表单中CatalognameModifiers.ext(例如LaunchImages@2x.png
    • 对于启动图像,目录名称被分配给UILaunchImages中的键Info.plist,并且操作系统透明地处理这些查找
    • 对于应用程序图标,图标被重命名为CatalognameDimensions.ext,包括57x57(以前只是Icon.png/ Icon@2x.png),并且这些名称被分配给CFBundleIconsCFBundleIcons~ipad键下的数组Info.plist

由于上述重命名,您需要指定目录名称,而不是此处提到的“资产名称” 。就我而言,我对启动图像突然没有出现在应用程序中感到困惑(我的应用程序从启动屏幕移动到启动图像上的加载旋转器)。解决方案是将代码更改为 requestUIImage.FromBundle("LaunchImages")而不是"Default". 请注意,对于 iPhone 5,您当前需要请求"LaunchImages-568h"才能获取正确的图像。