Xcode 8 build crash na iOS 9.2 i poniżej
Kiedy buduję swoją aplikację z Xcode 8 GM Seed i uruchamiam ją na iOS 9.2 poniżej urządzenia lub symulatora, dostaję dziwne EXC_BAD_ACCESS awarii podczas uruchamiania aplikacji lub kilka sekund po uruchomieniu aplikacji. Awaria zawsze dzieje się w innym miejscu(dodanie subview, [UIImage imageNamed:]
, główna metoda delegata aplikacji itp.). Nie dostaję tych awarii, gdy uruchamiam go na iOS 9.3+ lub 10 i nie dostaję ich, gdy budować z Xcode 7 i uruchomić na iOS 9.2 i poniżej. Czy ktoś jeszcze doświadczył czegoś podobnego? Na to znany problem z Xcode 8?
8 answers
Zobacz zaakceptowaną odpowiedź https://forums.developer.apple.com/thread/60919
16-bitowe zasoby można zapisać jako 8-bitowe z podglądem.app
Jak rozwiązać " błąd ITMS-90682: Invalid Bundle-the asset catalog at " Payload / XXXXX / Assets.car " nie może zawierać aktywów 16-bitowych lub P3, jeśli aplikacja obsługuje system iOS 8 lub wcześniejszy."
W Xcode 8 GM, ten błąd wystąpi, jeśli dołączysz 16-bit lub P3 zasoby w zgłoszeniu aplikacji skierowanym do systemu iOS wydanego wcześniej potem iOS 9.3. Jeśli aplikacja wymaga szerokiej funkcjonalności kolorów, musisz zmienić cel wdrożenia na system iOS 9.3 lub nowszy. Jeśli Twoja aplikacja nie wymaga szerokiej funkcjonalności kolorów i chcesz wdrożyć ją do starszych wersje iOS następnie należy zastąpić wszystkie zasoby 16-bitowe lub P3 8-bitowe zasoby sRGB. Możesz znaleźć zasoby 16-bitowe lub P3 uruchamiając "assetutil" w katalogu zasobów o nazwie w komunikacie o błędzie z iTunes Connect. Następujące kroki opisują proces:
Utwórz tablicę kontrolną .plik ipa. W Xcode Organizer (Xcode->Window - >Organizer) wybierz archiwum do sprawdzenia, kliknij "Eksport..."i wybierz" Eksportuj dla przedsiębiorstw lub wdrożenia Ad-Hoc". Spowoduje to utworzenie lokalnej kopii .plik ipa dla Twojej aplikacji.
Zlokalizuj to .plik ipa i zmień jego rozszerzenie na .zip.
Rozwiń .plik zip. Spowoduje to utworzenie folderu ładunku zawierającego Twoje .pakiet aplikacji.
Otwórz a terminala i zmień katalog roboczy na najwyższy poziom swojego .app bundle cd path / to / Payload / your.app
Użyj narzędzia Znajdź, aby zlokalizować zasoby.pliki samochodowe w Twoim .pakiet aplikacji, jak pokazano poniżej: znajdź . / align = "left" / samochód"
Użyj narzędzia assetutil, aby znaleźć dowolne zasoby 16-bitowe lub P3 w każdym z nich.samochód Twoja aplikacja ma jak pokazano poniżej. :
sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json
Zbadaj wynikowe/tmp / aktywa.json i poszukaj jakichkolwiek treści zawierających " DisplayGamut": "P3" i związana z nim"nazwa". To będzie być nazwą zestawu obrazów zawierającego jeden lub więcej 16-bitów lub P3 aktywa.
Zastąp te zasoby aktywami 8-bitowymi / sRGB, a następnie Przebuduj aplikację.
Aktualizacja: jeśli twój cel wdrożenia jest ustawiony na 8.3 lub 8.4 i masz katalog zasobów następnie otrzymasz ten sam komunikat o błędzie, nawet jeśli nie w rzeczywistości mają zasoby 16-bitowe lub P3. W takim przypadku musisz albo obniżyć Twój Cel rozmieszczenia do 8.2 lub przesuń go do 9.x.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-27 21:58:42
Mam nadzieję, że ten skrypt Basha może Ci pomóc. Argumentem wejściowym jest katalog, który zawiera wszystkie xcassety twojego projektu. Ten skrypt ustawi profil sRGB na wszystkie pngs. Pomogło mi:)
#!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"
XSAASSETSD="$(find "$DIRECTORY" -name '*.xcassets')"
for xcasset in $XSAASSETSD
do
echo "---$xcasset"
IMAGESETS="$(find "$xcasset" -name '*.imageset')"
for imageset in $IMAGESETS
do
echo "------$imageset"
FILES="$(find "$imageset" -name '*.png')"
for file in $FILES
do
echo "---------$file"
sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" $file --out $file
done
done
done
echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-19 10:51:58
Udało mi się odtworzyć problem i wydaje się, że jest związany z obrazami w katalogu zasobów. Filed a bug with Apple (with attached sample project)
Apple Bug Reporter: 28371396
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-20 12:31:43
Edytowany skrypt do konwersji plików png do poprawnego formatu w całym projekcie i ze spacjami:
#!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"
find "$DIRECTORY" -name '*png' -print0 | while read -d $'\0' file;
do
echo "---------$file"
sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" "$file" --out "$file"
done
echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-13 11:34:50
Ten sam problem.
Nie jestem pewien, czy to błąd, ale oto moje rozwiązanie : upewnij się, że zasoby obrazu bez Adobe RGB (1998) colorspace
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-06 14:57:08
Dodawanie dla kogokolwiek innego z podobnym problemem...
Aplikacja została upaść na iOS 9.0-iOS 9.2 na to, co wydawało się losowe / wokół Storyboard przejścia / wokół ustawiania UIImage (nazwa...).. Znaleziono ten wątek: ( https://forums.developer.apple.com/thread/61643 )
Jeśli Twoja aplikacja jest kierowana na iOS 8.4, zawiesi się na iOS 9.0 - 9.2 w Xcode 8.. coś wspólnego z xcassets. Ustawienie celu wdrożenia na 8.2 lub poniżej (użyłem 8.0) naprawiło to dla mnie. Nie żartuj. Worst bug nigdy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-17 21:02:11
Ustaw cel wdrożenia systemu iOSwewnątrz Info projektu i wszystkich celów na tę samą wartość.
W moim przypadku mój projekt został ustawiony na iOS 9.1 a cel został ustawiony na iOS 8.0 i został upaść na symulatorze z iOS 8.4
Teraz działa idealnie.
PS.: Wyczyść projekt przed ponownym uruchomieniem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-27 16:25:07
Chociaż pytanie zostało już udzielone, akceptowane rozwiązanie nie działa dla mnie, ponieważ nie miałem żadnych aktywów 16b / ch.
Zauważyłem, że pojawił się problem dla zasobów, które zostały skompresowane przy użyciu algorytmu lzfse
(można znaleźć informacje o kompresji wydobywającej informacje z zasobów.car using assetutil
). Niestety Xcode IDE nie pozwala programistom na zmianę algorytmu kompresji, jednak można to zrobić, kompilując zasoby ręcznie i obniżając cel wdrożenia w actool
dowództwo.
Tl;dr;
- Archiwum
- Unzip
ipa
- Compile assets - możesz znaleźć polecenie kompilatora zasobów dla Twojego projektu wygenerowane przez xcode, sprawdzając logi archiwalne w Xcode report navigator
Przykładowe polecenie:
xcrun actool --output-format human-readable-text --notices --warnings --minimum-deployment-target 8.0 --output-partial-info-plist info_partial.plist --app-icon AppIcon --launch-image LaunchImage --enable-on-demand-resources YES --sticker-pack-identifier-prefix {bundle_id}.sticker-pack --target-device iphone --target-device ipad --platform iphoneos --product-type com.apple.product-type.application --compile #{path_to_directory_containing_Assets_car} Assets/Assets.xcassets
-
Zamknij się.
- rezygnacja
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-18 12:42:02