Ios 从Xcode生成的应用程序中不包含应用程序图标

Ios 从Xcode生成的应用程序中不包含应用程序图标,ios,xcode,Ios,Xcode,从最新的Xcode测试版安装版本时,我看不到iOS AppIcon。可能的错误是什么 我已经包括了所需的图标尺寸,包括1024x1024。您并不孤单 在我的项目中,我发现以前正常工作的AppIcon资源不再导致呈现应用程序图标。一系列的实验发现: 从AppIcon工作的另一个项目中复制的AppIcon资源导致AppIcon在此项目中工作,这表明特定的原始AppIcon资源有问题,无法工作 将图像文件从非工作的AppIcon资源复制到工作的AppIcon资源会导致工作的AppIcon资源现在也失

从最新的Xcode测试版安装版本时,我看不到iOS AppIcon。可能的错误是什么

我已经包括了所需的图标尺寸,包括1024x1024。

您并不孤单

在我的项目中,我发现以前正常工作的AppIcon资源不再导致呈现应用程序图标。一系列的实验发现:

  • 从AppIcon工作的另一个项目中复制的AppIcon资源导致AppIcon在此项目中工作,这表明特定的原始AppIcon资源有问题,无法工作
  • 将图像文件从非工作的AppIcon资源复制到工作的AppIcon资源会导致工作的AppIcon资源现在也失败
  • 创建一个新的AppIcon资源,并插入原始的应用图标图像,同样会导致一个空白的应用图标
结合起来,这一阶段的要点表明,图像文件本身可能有问题。因此,我尝试了各种步骤来解决这一问题:

  • 使用我常用的预处理应用程序Prep重新导出所有图标大小。确保我的源图像不包含透明度。插入那些重新创建的图标图像仍然会导致一个空白的应用程序图标
  • 通过草图,使用不同的流程重新创建所有图标大小,并将这些图标图像插入相同的AppIcon资源,从而使应用图标正常工作
  • 创建新的AppIcon资源,并插入草图创建的图像,导致应用程序图标仍在工作
以上所有这些都表明,Xcode 9中存在拒绝或未能使用以前工作的应用程序图标图像的情况,并且一些创建以前良好的应用程序图标的过程会生成Xcode 9无法使用的图像。也许png规范中有一些东西是有效的png,但不是Xcode 9可接受的应用程序图标。最明显的想法是,带有透明度的应用程序图标可能会被拒绝,但我不相信我使用的图标图像包含透明度,我在上面的测试中试图消除这一点


一些用户报告的一个完全独立的原因与CocoaPods集成有关。请参阅关于可能的临时修复和从理论上解决此问题的解决方案的讨论。我之所以说理论上的解决方案,是因为我尝试了这两种解决方案,但它们都没有解决我遇到的项目中的问题。

你并不孤单

在我的项目中,我发现以前正常工作的AppIcon资源不再导致呈现应用程序图标。一系列的实验发现:

  • 从AppIcon工作的另一个项目中复制的AppIcon资源导致AppIcon在此项目中工作,这表明特定的原始AppIcon资源有问题,无法工作
  • 将图像文件从非工作的AppIcon资源复制到工作的AppIcon资源会导致工作的AppIcon资源现在也失败
  • 创建一个新的AppIcon资源,并插入原始的应用图标图像,同样会导致一个空白的应用图标
结合起来,这一阶段的要点表明,图像文件本身可能有问题。因此,我尝试了各种步骤来解决这一问题:

  • 使用我常用的预处理应用程序Prep重新导出所有图标大小。确保我的源图像不包含透明度。插入那些重新创建的图标图像仍然会导致一个空白的应用程序图标
  • 通过草图,使用不同的流程重新创建所有图标大小,并将这些图标图像插入相同的AppIcon资源,从而使应用图标正常工作
  • 创建新的AppIcon资源,并插入草图创建的图像,导致应用程序图标仍在工作
以上所有这些都表明,Xcode 9中存在拒绝或未能使用以前工作的应用程序图标图像的情况,并且一些创建以前良好的应用程序图标的过程会生成Xcode 9无法使用的图像。也许png规范中有一些东西是有效的png,但不是Xcode 9可接受的应用程序图标。最明显的想法是,带有透明度的应用程序图标可能会被拒绝,但我不相信我使用的图标图像包含透明度,我在上面的测试中试图消除这一点



一些用户报告的一个完全独立的原因与CocoaPods集成有关。请参阅关于可能的临时修复和从理论上解决此问题的解决方案的讨论。我说理论上的地址是因为我已经尝试实现了这两种解决方案,但它们都没有解决我遇到的项目中的问题。

我的应用程序图标也有同样的问题。它们显示在某些设备上,但不显示在其他设备上。我进一步研究了这个问题,发现并不是我所有的图标都被压平了,而且都有不正确的颜色空间(Adobe RGB)。我将所有图标展平并转换为SRGB颜色空间,然后替换现有图标。所有图标现在都显示得很完美

我的应用程序图标也有同样的问题。它们显示在某些设备上,但不显示在其他设备上。我进一步研究了这个问题,发现并不是我所有的图标都被压平了,而且都有不正确的颜色空间(Adobe RGB)。我将所有图标展平并转换为SRGB颜色空间,然后替换现有图标。所有图标现在都显示得很完美

为清晰起见,请确保颜色配置文件设置为:sRGB IEC61966-2.1。在我偶然发现这个问题之前,我的图标没有颜色配置文件

我肯定其他颜色配置文件必须工作,但我还没有做测试,以确保

这可以通过以下方式在预览中完成:

  • 工具→ 分配配置文件
  • 选择#!/bin/bash # navigate to latest archive created cd ~/Library/Developer/Xcode/Archives foo=$(ls -t | head -n1) && cd $foo line=$(ls -t | head -n1) && cd "$line" # bug fix find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323
    sh("./archive_fix.sh")
    
    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
    
    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
    
    <key>CFBundleIconFile</key>
    <string>AppIcon</string>
    
    <key>CFBundleIconFile</key>
    <string>AppIcon.icns</string>
    
     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
    
     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