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?

Author: KSR, 2016-09-09

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:

  1. 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.

  2. Zlokalizuj to .plik ipa i zmień jego rozszerzenie na .zip.

  3. Rozwiń .plik zip. Spowoduje to utworzenie folderu ładunku zawierającego Twoje .pakiet aplikacji.

  4. Otwórz a terminala i zmień katalog roboczy na najwyższy poziom swojego .app bundle cd path / to / Payload / your.app

  5. Użyj narzędzia Znajdź, aby zlokalizować zasoby.pliki samochodowe w Twoim .pakiet aplikacji, jak pokazano poniżej: znajdź . / align = "left" / samochód"

  6. 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

  7. 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.

  8. 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.

 53
Author: Kostia Dombrovsky,
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 "------------------------------"
 30
Author: Aleksandr Terentev,
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

 16
Author: Evtim Georgiev,
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 "------------------------------"
 12
Author: Никита Конопелько,
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

In xcode

 3
Author: ping,
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.

 1
Author: karnett,
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.

 0
Author: Gustavo Barbosa,
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;

  1. Archiwum
  2. Unzip ipa
  3. 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ę.
  1. rezygnacja
 0
Author: badeleux,
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