Иконки приложений, не включенные в сборку из Xcode
Я не вижу iOS AppIcon при установке сборки из последней версии Xcode 6. Что может быть возможной ошибкой?
Я включил необходимые размеры значков, включая 1024x1024.
Ответы
Ответ 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]()
- Выберите sRGB IEC61966-2.1
![Назначить профиль2]()
Когда вы получите информацию о значке на значке, теперь он должен указать правильный профиль цвета.
![Пример рабочего/нерабочего получения информации о двух изображениях]()
Ответ 3
У меня была такая же проблема с иконками приложения. Они отображаются на некоторых устройствах, но не на других. Я рассмотрел проблему и обнаружил, что не все мои значки были сплющены, и у всех было неправильное цветовое пространство (Adobe RGB). Я сплющил все значки и преобразовал в цветовое пространство SRGB, а затем заменил существующие значки. Теперь все значки прекрасно отображаются.
Ответ 4
Попробовав различные решения, такие как "Назначение цветового профиля (sRGB IEC61966-2.1) для значков" и "Решение CocoaPods", указанные выше, или "Изменение имени источника иконки приложения на другое имя ресурса в настройке проекта", я нашел одно очень простое решение::
- Очистить свой проект.
- Очистить производные данные в (~/Library/Developer/Xcode/DerivedData/)
- Перейти в "Проект → Фаза сборки"
- Найдите "Копировать ресурсы комплекта и перетащите его как последний элемент списка".
- Удалите приложение, если оно уже есть, и запустите проект.
Найдите скриншот для лучшего понимания.
До
![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.