来自gales_vasile的答案:https://forums.developer.apple.com/thread/86290
对我很有用。
这应该是CocoaPods中的一个bug,如此处讨论的https://github.com/CocoaPods/CocoaPods/issues/7003 我也遇到了同样的问题,但我通过以下步骤解决了它:
1)将此代码添加到Podfile中:
post_install do |installer|
copy_pods_resources_path = "Pods/Target Support Files/Pods-IconTest/Pods-IconTest-resources.sh"
string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
text = File.read(copy_pods_resources_path)
new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end
2)将copy_pods_resources_path更改为您的应用程序并运行“pod update”。这应该解决您的问题!
post_install do |installer|
copy_pods_resources_path = "Pods/Target Support Files/Pods-XXX/Pods-XXX-resources.sh"
string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
--app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
text = File.read(copy_pods_resources_path)
new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end
只需将上述内容添加到Podfile中,并在终端中执行pod install即可。 但是,上述代码有局限性。 可能会出现这样的情况,比如我们有多个pod,那么我们需要在循环中运行。
post_install do |installer|
installer.aggregate_targets.each do |target|
copy_pods_resources_path = "Pods/Target Support Files/Pods-Fixr/Pods-Fixr-resources.sh"
string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
--app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
text = File.read(copy_pods_resources_path)
new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end
结束
当有多个文件时,它可以正常工作。
<key>CFBundleIconFile</key>
<string>AppIcon</string>
进入
<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>
在 Info.plist 文件中。我的 XCode 版本是 8.3.3
1- 将以下代码添加到 Podfile 中:
post_install do |installer|
copy_pods_resources_path = "Pods/Target Support Files/Pods-IconTest/Pods-IconTest-resources.sh"
string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
text = File.read(copy_pods_resources_path)
new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end
2- 执行 pod install 命令
注意:确保替换以下路径:
Pods-IconTest/Pods-IconTest-resources.sh
其中 IconTest 是您的应用程序名称。
或者您可以通过搜索 .sh 文件来获取该路径:(请参考图片)
在我的情况下
我有一个使用.icns
而不是.xcassets
的旧项目。
即使我...
Copy Bundle Resources
构建阶段中删除了所有图标文件的引用;.icns
文件;事实上,那里绝对没有.icns
文件!~/Library/Developer/Xcode/DerivedData
;Assets.xcassets
添加到项目中,并测试了各种重命名此捆绑包的方法:images
、Images
、Icons
等;Icon Set Creator
生成的图标集图像;该图标集适用于一个新的空的macOS Cocoa项目。对我有效的是一些绝望的尝试之一:
.entitlements
文件。CFBundleIconFIle
属性。将其命名为AppIcon
。General
设置中设置App Icon
属性,使用我的.xcassets
。.xcassets
在我不知情的情况下生成另一个空的AppIcon,名为AppIcon-2
,因此手动从.xcassets
中删除它,然后将目标的App Icon重置为AppIcon
。.xcassets
重新添加到Copy Bundle Resources
构建阶段。重新构建后,这次正确的.icns
将被复制到应用程序包的资源文件夹中。
我也搜索了几个小时,寻找答案。似乎有各种问题会导致iOS设备上显示空白应用程序图标。根据我的搜索,我怀疑XCode需要非常特定的参数来使用作为应用程序图标的图像,这些参数是由用户的图像创建/编辑软件预定义的,相对晦涩难懂。XCode应该更加宽容。
我的解决方案是将我的图像的精度从16位整数改为8位整数。就是这样。我已经更新了我的图像创建/编辑软件GIMP,并注意到新图像的默认精度在更新中已更改。
我尝试了其他人提出的每一个解决方案,包括但不限于:将颜色配置文件更改为SRGB,确保图像大小正确,对info.plist文件进行更改,确保图像名称与Contents.json文件相关联,重新构建应用程序以及重启设备。这是一个令人沮丧的问题。希望这能帮助其他人。
在尝试了一堆解决方案之后,这是我找到的解决方法:
1). 删除任何 Pod 文件夹中的 .xcassets 文件夹
然后删除以下文件中对这些文件的引用:
2). Pods > Target Support Files > Pods-YourApp-resources.sh
最后,在我的 App > Build Phases > Copy Pod Resources 下
3). 删除任何对相同 .xcassets 路径的引用
之后,为了保险起见,我进行了清理、清理构建文件夹,然后删除了派生数据。关闭 Xcode 并重新打开,就完成了!
希望这能帮助到某个人,我也花了大约半天时间来解决这个问题...
正如 Andrew Dunkin在另一个回答中提到的,我的图像资源没有包含在“复制Bundle资源”构建阶段中。我花了比应该更长的时间来寻找这个解决方案,所以希望能为其他人节省一些时间。