ios – Images.xcassets打破了目标的规律
好的,所以我在这个上面拔出牙齿,我真诚地希望我犯了一个愚蠢的错误(已经有一些深夜了).
短篇小说,我们正在构建一个需要品牌化的产品,因为多个客户将共享90%相同的UI和代码,一些配置选项可以打开/关闭事物以及不同的颜色,字体和图像等. 除了.xcassets文件夹外,所有工作正常.我每个客户有1个,目前他们有相同的资产名称,有不同的图像.例如,每个.xcassets都有一个ic_settings,但每个内容都有所不同. 我已经检查了复制包资源构建阶段,对于每个目标,它实际上每个只有1个.xcasset文件夹. <编辑图像> <编辑图像> 当我运行应用程序时,它正确加载了appIcon(我必须将其重命名为appIcon-< target>,因为Xcode中的下拉显示了所有内容并且无法知道哪个是哪个).它还显示正确的包名称并启动screen.xib. 以下是图像本身.正如您所看到的,图像完全不同: <编辑图像> 但是,当我运行客户1和客户2.所有图像都是客户1. 我不知道这有多大可能,请告诉我: >我不是疯了 注意 我已经尝试过清理,构建,重置模拟器,删除派生数据等.在模拟器和真实设备上都有. 如果我将一个唯一的图像添加到其中一个文件夹,我就可以使用它了.直觉是Xcode正在合并文件夹???? 解决方法 标记的答案是正确的,这是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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |