Я не вижу iOS AppIcon при установке сборки из последней версии Xcode 6. Что может быть возможной ошибкой?
Я включил необходимые размеры значков, включая 1024x1024.
Я не вижу iOS AppIcon при установке сборки из последней версии Xcode 6. Что может быть возможной ошибкой?
Я включил необходимые размеры значков, включая 1024x1024.
Ты не одинок.
В моем проекте я обнаружил, что предыдущий ресурс AppIcon, который работал отлично, больше не приводил к отображению значка приложения. Ряд экспериментов нашел следующее:
Объединившись вместе, точки на этом этапе предположили, что, возможно, что-то не так с самими файлами изображений. Поэтому я попытался выполнить различные шаги, чтобы решить эту проблему:
Все вышесказанное говорит о том, что в Xcode 9 есть что-то, что отклоняет или не использует ранее созданные изображения значков приложений и что некоторые процессы для создания значков приложений, которые ранее были прекрасными, создают изображения, которые Xcode 9 не может использовать. Возможно, есть что-то в пределах спецификации png, которая является допустимым png, но не приемлемым значком приложения для Xcode 9. Наиболее очевидная мысль заключается в том, что иконки приложений с прозрачностью могут быть отклонены, но я не верю, что изображения значков, которые я использовал, содержались прозрачность, и я попытался устранить это в своих тестах выше.
Полностью отдельная причина, о которой сообщалось для некоторых пользователей, связана с интеграцией CocoaPods. См. Обсуждение с возможным временным исправлением здесь и запрос на pull, который был создан для Cocoapods, которые теоретически решают эту проблему. Я говорю теоретически, потому что я попытался реализовать оба этих решения, и ни один из них не разрешил проблему в проекте, где я столкнулся с ней.
Для наглядности убедитесь, что для цветового профиля установлено значение: sRGB IEC61966-2.1. Мои иконки не имели цветового профиля, прежде чем я наткнулся на эту проблему.
Я уверен, что другие профили цвета должны работать, но я не сделал этого теста, чтобы быть уверенным.
Это можно сделать в режиме предварительного просмотра:
Когда вы получите информацию о значке на значке, теперь он должен указать правильный профиль цвета.
У меня была такая же проблема с иконками приложения. Они отображаются на некоторых устройствах, но не на других. Я рассмотрел проблему и обнаружил, что не все мои значки были сплющены, и у всех было неправильное цветовое пространство (Adobe RGB). Я сплющил все значки и преобразовал в цветовое пространство SRGB, а затем заменил существующие значки. Теперь все значки прекрасно отображаются.
Попробовав различные решения, такие как "Назначение цветового профиля (sRGB IEC61966-2.1) для значков" и "Решение CocoaPods", указанные выше, или "Изменение имени источника иконки приложения на другое имя ресурса в настройке проекта", я нашел одно очень простое решение::
Найдите скриншот для лучшего понимания.
До
После
Примечание. Вы можете проверить, что создает проблему для значка приложения в вашем проекте, просто изменив положение "Копировать ресурсы комплекта" в направлении вверх.
Еще одно простое исправление:
У меня была такая же проблема с XCode 9.0, проектом, который отлично работал под XCode 8, и iOS 10 внезапно теряет иконки (только на iPads), когда я обновил решение.
Вырвал мои волосы, сделал вещь sRGB, сделал Transparency вещь.
Оказывается, у меня все еще была следующая пустая запись в моем файле info.plist.
CFBundleIcons ~ Ipad
Я давно перешел к указанию этого в настройках целевой сборки.
Решение состояло в том, чтобы просто удалить эту запись из файла info.plist(щелкнув по маленькой кнопке "-". Восстановлено и протестировано, и все было отлично еще раз.
Изменить: Это нужно запустить в середине 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")
Я потратил целый день на это. Я проверил свои png файлы, чтобы гарантировать отсутствие прозрачности, чтобы обеспечить правильные настройки RGB, я также изменил podfile, как обсуждалось здесь. Ничего не получилось. Обновление до Xcode 9/iOS 11, казалось, сломало/изменило что-то, поскольку ранее для меня показывались значки для одного и того же приложения.
Во всяком случае, для меня было исправлено изменение имени значка приложения iOS в Assets.xcassets(по умолчанию = AppIcon), а также изменение имени набора значков приложения каталога активов в настройках сборки для выравнивания с новым именем.
Странно, после того, как я получил это на работу, я обновил все свои изображения в AppIcon в Assets.xcassets, и я снова получил пустое изображение! Повторяется выше шагов и проблема решена во второй раз.
Проблема:
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.
TL; DR: создайте фазу сборки "Копирование запаса"
После полутора дней, пробовав почти все решения по этому и другим темам, я нашел совсем другое исправление, которое сработало для меня. Глядя на пакет приложения в моей папке сборки, я заметил, что файлы png приложения Icon не копируются в него. Я создал пустое приложение с нуля, добавил значок приложения, и в этом пустом приложении он скопировал файл значка. Так что же дает?
В пустом приложении была фаза сборки "Скопируйте ресурсы пакета", которая скопировала пакет Assets.xcassets. Мой не сделал. Поэтому я создал один, добавил мои Images.xcassets и presto change-o, мой архив получил подтверждение. NB Я уверен, что раньше у меня никогда не было этой фазы сборки, но я смог отправить сборку всего месяц назад...
В моем случае ни одно из этих решений не сработало.
Мои иконки не показывались, потому что они НЕ В ПРАВИЛЬНЫХ РАЗМЕРАХ. Как только я изменил их размер правильно, моя проблема была решена.
Ответа на этот вопрос 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". Это должно решить вашу проблему!
Эта проблема возникает из-за 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
конец
Он отлично работает, когда имеется несколько файлов.
Легкий способ изменить цвет. Профиль использует Automator. Создайте задание для каждого файла и папки
И сохраните его. то вы можете отметить все файлы значков в своем активе и выбрать "Работа". Все профили для значков будут сделаны:)
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: (проверьте изображение)
Наличие неправильного размера значка в вашем наборе значков может привести к тому, что значок приложения не отобразится на экране @iOS11. После многих дней расследования я нашел эту запись в своем журнале сборки:
Отображение всех сообщений, фильтрация для "значка". предупреждение: ApplicationIcons.appiconset/[email protected] - 80x80, но должно быть 60x60.
Пока это сообщение присутствовало, значок моего приложения всегда не отображался (т.е. видел бы логотип приложения IOS по умолчанию). Я исправил файл значка проблемы (заменив его изображением с правильным размером), и теперь отображается значок приложения. По какой-то причине изменение "Идентификатора набора значков приложений в каталоге активов" исправило проблему как один раз. Последующие сборки приложений приведут к отображению значка по умолчанию.
В моем случае один из Pods содержал .xcasset. Удаление этого решения проблемы.
В моем случае значок приложения начал правильно отображаться в Finder после того, как я изменил
<key>CFBundleIconFile</key>
<string>AppIcon</string>
в
<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>
в Info.plist. Моя версия XCode - это 8.3.3
Попробовав несколько таких решений, я решил это:
1). Удалите все папки .xcassets в любой из моих папок Pod
Затем удалите все ссылки на эти файлы в:
2). Pods> Целевые файлы поддержки> Pods-YourApp-resources.sh
Последнее, под моим приложением> Фазы сборки> Копировать ресурсы Pod
3). Удалите все ссылки на те же пути .xcassets
Впоследствии, чтобы быть в безопасности, я сделал папку "Очистить, очистить сборку", а затем удалил производные данные. Закрыл Xcode и снова открыл, вуаля!
Надеюсь, это кому-нибудь поможет, мне потребовалось около полдня, чтобы сгладить это...
После нескольких дней исследований я выяснил проблему, в моем случае виновником была бета-версия xcode 10, которая вызвала проблему с отсутствующим значком приложения на ios 11.
Я опустился до xcode 9.4.1 и теперь значок появляется и на ios 11.