Подтвердить что ты не робот

Иконки приложений, не включенные в сборку из Xcode

Я не вижу iOS AppIcon при установке сборки из последней версии Xcode 6. Что может быть возможной ошибкой?

Я включил необходимые размеры значков, включая 1024x1024.

4b9b3361

Ответ 1

Ты не одинок.

В моем проекте я обнаружил, что предыдущий ресурс AppIcon, который работал отлично, больше не приводил к отображению значка приложения. Ряд экспериментов нашел следующее:

  • Ресурс AppIcon, скопированный из другого проекта, в котором работал AppIcon, привел к тому, что AppIcon, работающий в этом проекте, предположил, что что-то не так с конкретным исходным ресурсом AppIcon, который не работал.
  • Копирование файлов изображений из нерабочего в рабочий актив AppIcon привело к тому, что рабочий тоже не работает.
  • Создание нового ресурса AppIcon и вставка оригинальных изображений значков приложений также привели к пустой иконке приложения.

Объединившись вместе, точки на этом этапе предположили, что, возможно, что-то не так с самими файлами изображений. Поэтому я попытался выполнить различные шаги, чтобы решить эту проблему:

  • Реэкспортировка всех размеров значков с моим обычным предпроцессорным приложением Prepo. Убедитесь, что исходное изображение не содержит прозрачности. Вставка этих вновь созданных изображений значков по-прежнему привела к появлению пустого значка приложения.
  • Повторное создание всех размеров значков с помощью другого процесса через Sketch и вставка этих изображений значков в один и тот же ресурс AppIcon привела к тому, что значок приложения работал.
  • Создание нового ресурса AppIcon и добавление образов, созданных Sketch, привели к тому, что значок приложения все еще работает.

Все вышесказанное говорит о том, что в Xcode 9 есть что-то, что отклоняет или не использует ранее созданные изображения значков приложений и что некоторые процессы для создания значков приложений, которые ранее были прекрасными, создают изображения, которые Xcode 9 не может использовать. Возможно, есть что-то в пределах спецификации png, которая является допустимым png, но не приемлемым значком приложения для Xcode 9. Наиболее очевидная мысль заключается в том, что иконки приложений с прозрачностью могут быть отклонены, но я не верю, что изображения значков, которые я использовал, содержались прозрачность, и я попытался устранить это в своих тестах выше.


Полностью отдельная причина, о которой сообщалось для некоторых пользователей, связана с интеграцией CocoaPods. См. Обсуждение с возможным временным исправлением здесь и запрос на pull, который был создан для Cocoapods, которые теоретически решают эту проблему. Я говорю теоретически, потому что я попытался реализовать оба этих решения, и ни один из них не разрешил проблему в проекте, где я столкнулся с ней.

Ответ 2

Для наглядности убедитесь, что для цветового профиля установлено значение: sRGB IEC61966-2.1. Мои иконки не имели цветового профиля, прежде чем я наткнулся на эту проблему.

Я уверен, что другие профили цвета должны работать, но я не сделал этого теста, чтобы быть уверенным.

Это можно сделать в режиме предварительного просмотра:

  • Инструменты → Назначить профиль

Assign Profile1

  1. Выберите sRGB IEC61966-2.1

Назначить профиль2

Когда вы получите информацию о значке на значке, теперь он должен указать правильный профиль цвета.

Пример рабочего/нерабочего получения информации о двух изображениях

Ответ 3

У меня была такая же проблема с иконками приложения. Они отображаются на некоторых устройствах, но не на других. Я рассмотрел проблему и обнаружил, что не все мои значки были сплющены, и у всех было неправильное цветовое пространство (Adobe RGB). Я сплющил все значки и преобразовал в цветовое пространство SRGB, а затем заменил существующие значки. Теперь все значки прекрасно отображаются.

Ответ 4

Попробовав различные решения, такие как "Назначение цветового профиля (sRGB IEC61966-2.1) для значков" и "Решение CocoaPods", указанные выше, или "Изменение имени источника иконки приложения на другое имя ресурса в настройке проекта", я нашел одно очень простое решение::

  1. Очистить свой проект.
  2. Очистить производные данные в (~/Library/Developer/Xcode/DerivedData/)
  3. Перейти в "Проект → Фаза сборки"
  4. Найдите "Копировать ресурсы комплекта и перетащите его как последний элемент списка".
  5. Удалите приложение, если оно уже есть, и запустите проект.

Найдите скриншот для лучшего понимания.

До

enter image description here

После

enter image description here

Примечание. Вы можете проверить, что создает проблему для значка приложения в вашем проекте, просто изменив положение "Копировать ресурсы комплекта" в направлении вверх.

Ответ 5

Еще одно простое исправление:

У меня была такая же проблема с XCode 9.0, проектом, который отлично работал под XCode 8, и iOS 10 внезапно теряет иконки (только на iPads), когда я обновил решение.

Вырвал мои волосы, сделал вещь sRGB, сделал Transparency вещь.

Оказывается, у меня все еще была следующая пустая запись в моем файле info.plist.

CFBundleIcons ~ Ipad

Я давно перешел к указанию этого в настройках целевой сборки.

Решение состояло в том, чтобы просто удалить эту запись из файла info.plist(щелкнув по маленькой кнопке "-". Восстановлено и протестировано, и все было отлично еще раз.

Ответ 6

Изменить: Это нужно запустить в середине gym, который я не знаю, как это сделать. Запуск исправления ошибки, как только архив появится в папке, сделает трюк. Если кто-то может помочь улучшить это, пожалуйста, дайте мне знать!

Я столкнулся с этой проблемой с помощью Fastlane, и я написал оболочку script, которую я запускаю как полосу для решения проблемы. Само исправление - это код пользователя stubyte в этом thread.

Вот мой script для archive_fix.sh:

#!/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

Внутри моего Fastfile я побежал:

sh("./archive_fix.sh")

Ответ 7

Я потратил целый день на это. Я проверил свои png файлы, чтобы гарантировать отсутствие прозрачности, чтобы обеспечить правильные настройки RGB, я также изменил podfile, как обсуждалось здесь. Ничего не получилось. Обновление до Xcode 9/iOS 11, казалось, сломало/изменило что-то, поскольку ранее для меня показывались значки для одного и того же приложения.

Во всяком случае, для меня было исправлено изменение имени значка приложения iOS в Assets.xcassets(по умолчанию = AppIcon), а также изменение имени набора значков приложения каталога активов в настройках сборки для выравнивания с новым именем.

Странно, после того, как я получил это на работу, я обновил все свои изображения в AppIcon в Assets.xcassets, и я снова получил пустое изображение! Повторяется выше шагов и проблема решена во второй раз.

Ответ 8

Проблема:

1. Значок приложения не отображается на iOS 11 или Xcode 9.

2. Значок приложения отображается на iPhone, но не в iPad.

Решение, которое сработало для меня:

Проблема связана с процессом сборки для Xcode 9 и iOS 11. В прошлом Apple использовала расширение ~ iPad для разграничения активов для iPhone и iPad.

У info.plist есть словарь с ключом "CFBundleIcons ~ ipad", который не имеет элементов (как это показано в Xcode 9), что заставляет пакет GET изображений из файла info.plist вместо изображений. xcassets, поэтому значок приложения на Xcode 9 не появляется.

Удаление этого ключа из файла .plist работало для моей сборки, в то время как другие did'nt.

Удаление " CFBundleIcons ~ ipad

Ответ 9

TL; DR: создайте фазу сборки "Копирование запаса"

После полутора дней, пробовав почти все решения по этому и другим темам, я нашел совсем другое исправление, которое сработало для меня. Глядя на пакет приложения в моей папке сборки, я заметил, что файлы png приложения Icon не копируются в него. Я создал пустое приложение с нуля, добавил значок приложения, и в этом пустом приложении он скопировал файл значка. Так что же дает?

В пустом приложении была фаза сборки "Скопируйте ресурсы пакета", которая скопировала пакет Assets.xcassets. Мой не сделал. Поэтому я создал один, добавил мои Images.xcassets и presto change-o, мой архив получил подтверждение. NB Я уверен, что раньше у меня никогда не было этой фазы сборки, но я смог отправить сборку всего месяц назад...

Ответ 10

В моем случае ни одно из этих решений не сработало.

Мои иконки не показывались, потому что они НЕ В ПРАВИЛЬНЫХ РАЗМЕРАХ. Как только я изменил их размер правильно, моя проблема была решена.

Ответ 11

Ответа на этот вопрос gales_vasile: https://forums.developer.apple.com/thread/86290

Работал для меня.

Это должно быть ошибкой в ​​CocoaPods, как описано здесь https://github.com/CocoaPods/CocoaPods/issues/7003 У меня была та же проблема, но я исправил ее следующим образом:

1) Добавьте этот код в подфайл:

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". Это должно решить вашу проблему!

Ответ 12

Эта проблема возникает из-за CocoaPods для iOS 11. После нескольких исследований я нашел одно решение:

 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. Но этот код имеет ограничения. Там могут быть такие условия, как у нас есть несколько элементов, тогда нам нужно запустить цикл.

 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

конец

Он отлично работает, когда имеется несколько файлов.

Ответ 13

Легкий способ изменить цвет. Профиль использует Automator. Создайте задание для каждого файла и папки

Снимок экрана

И сохраните его. то вы можете отметить все файлы значков в своем активе и выбрать "Работа". Все профили для значков будут сделаны:)

Ответ 14

1- Добавьте этот код в подфайл:

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

Примечание. Обязательно замените это: Бобы-IconTest/Pods-IconTest-resources.sh

так как IconTest - это имя вашего приложения.

или вы можете получить этот путь, выполнив поиск .sh: (проверьте изображение)

введите описание изображения здесь

Ответ 15

Наличие неправильного размера значка в вашем наборе значков может привести к тому, что значок приложения не отобразится на экране @iOS11. После многих дней расследования я нашел эту запись в своем журнале сборки:

Отображение всех сообщений, фильтрация для "значка". предупреждение: ApplicationIcons.appiconset/[email protected] - 80x80, но должно быть 60x60.

Пока это сообщение присутствовало, значок моего приложения всегда не отображался (т.е. видел бы логотип приложения IOS по умолчанию). Я исправил файл значка проблемы (заменив его изображением с правильным размером), и теперь отображается значок приложения. По какой-то причине изменение "Идентификатора набора значков приложений в каталоге активов" исправило проблему как один раз. Последующие сборки приложений приведут к отображению значка по умолчанию.

Ответ 16

В моем случае один из Pods содержал .xcasset. Удаление этого решения проблемы.

Ответ 17

В моем случае значок приложения начал правильно отображаться в Finder после того, как я изменил

<key>CFBundleIconFile</key>
<string>AppIcon</string>

в

<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>

в Info.plist. Моя версия XCode - это 8.3.3

Ответ 18

Попробовав несколько таких решений, я решил это:

1). Удалите все папки .xcassets в любой из моих папок Pod

Затем удалите все ссылки на эти файлы в:

2). Pods> Целевые файлы поддержки> Pods-YourApp-resources.sh

Последнее, под моим приложением> Фазы сборки> Копировать ресурсы Pod

3). Удалите все ссылки на те же пути .xcassets

Впоследствии, чтобы быть в безопасности, я сделал папку "Очистить, очистить сборку", а затем удалил производные данные. Закрыл Xcode и снова открыл, вуаля!

Надеюсь, это кому-нибудь поможет, мне потребовалось около полдня, чтобы сгладить это...

Ответ 19

После нескольких дней исследований я выяснил проблему, в моем случае виновником была бета-версия xcode 10, которая вызвала проблему с отсутствующим значком приложения на ios 11.

Я опустился до xcode 9.4.1 и теперь значок появляется и на ios 11.