iOS   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Images.xcassets打破了目标的规律大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

好的,所以我在这个上面拔出牙齿,我真诚地希望我犯了一个愚蠢的错误(已经有一些深夜了). 短篇小说,我们正在构建一个需要品牌化的产品,因为多个客户将共享90%相同的UI和代码,一些配置选项可以打开/关闭事物以及不同的颜色,字体和图像等. 除了.xCassets文件夹外,所有工作正常.我每个客户有1个,目前他们有相同的资产名称,有不同的图像.例如,每个.xCassets都有一个ic_setTings,
好的,所以我在这个上面拔出牙齿,我真诚地希望我犯了一个愚蠢的错误(已经有一些深夜了).

短篇小说,我们正在构建一个需要品牌化的产品,因为多个客户将共享90%相同的UI和代码,一些配置选项可以打开/关闭事物以及不同的颜色,字体和图像等.

除了.xCassets文件夹外,所有工作正常.我每个客户有1个,目前他们有相同的资产名称,有不同的图像.例如,每个.xCassets都有一个ic_setTings,但每个内容都有所不同.

我已经检查了复制包资源构建阶段,对于每个目标,它实际上每个只有1个.xCasset文件夹.

<编辑图像>

<编辑图像>

当我运行应用程序时,它正确加载了appIcon(我必须将其重命名为appIcon-< target>,因为Xcode中的下拉显示了所有内容并且无法知道哪个是哪个).它还显示正确的包名称并启动screen.xib.

以下是图像本身.正如您所看到的,图像完全不同:

<编辑图像>
<编辑图像>

但是,当我运行客户1和客户2.所有图像都是客户1.

我不知道这有多大可能,请告诉我:

>我不是疯了
>我犯了一些我无法看到的简单错误
>这不是一个Xcode错误,并且不需要人类所见过的最精心策划的工作.可能重命名所有图像以附加目标名称:-(.

注意

我已经尝试过清理,构建,重置模拟器,删除派生数据等.在模拟器和真实设备上都有.

如果我将一个唯一的图像添加到其中一个文件夹,我就可以使用它了.直觉是Xcode正在合并文件夹????

解决方法

@L_489_29@的答案是正确的,这是cocoapods.这是一个已知问题,目前最好的解决方法(我发现),是使用这个https://github.com/CocoaPods/CocoaPods/issues/1546#issuecomment-61907975

解决方法

事实证明,如果要编译XCasset包,则必须在资产编译时将所有这些包指定给XCasset编译器.为了支持XCasset文件,cocoa pods可以将它可以找到的所有资产编译到一个目标中

https://github.com/CocoaPods/CocoaPods/pull/1427#issuecomment-26978591

https://github.com/CocoaPods/CocoaPods/issues/1546#issuecomment-43137780

您的解决方案是您需要修改./Pods/Target支持文件/ Pods-(pod目标)/ Pods-(pod target)-resources.sh中的可可pod生成的任何文件.

一个看起来像这样代码

if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ `find . -name '*.xCassets' | wc -l` -ne 0 ]
then
  case "${TARGETED_DEVICE_FAMILY}" in
    1,2)
      TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
      ;;
    1)
      TARGET_DEVICE_ARGS="--target-device iphone"
      ;;
    2)
      TARGET_DEVICE_ARGS="--target-device ipad"
      ;;
    *)
      TARGET_DEVICE_ARGS="--target-device mac"
      ;;
  esac
  find "${PWD}" -name "*.xCassets" -print0 | xargs -0 actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOymENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_resourcES_FOLDER_PATH}"
fi

它编译构建路径中的所有资产目录,因为它无法智能地告知此时哪些资产目录属于哪个目标.您需要删除脚本的这一部分.如果您需要从pod中获取资产目录,则必须手动添加它们.每次运行pod安装时,都需要还原对此文件的更改.

好消息是你不会生气.玩得开心:D

大佬总结

以上是大佬教程为你收集整理的ios – Images.xcassets打破了目标的规律全部内容,希望文章能够帮你解决ios – Images.xcassets打破了目标的规律所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。