Hacker News

Głębokie zapoznanie się z formatem plików .car firmy Apple

Głębokie zapoznanie się z formatem plików .car firmy Apple Ta eksploracja sięga głęboko, badając jej znaczenie i potencjalny wpływ. — System operacyjny Mewayz Business.

5 min. przeczytaj

Mewayz Team

Editorial Team

Hacker News

Głębokie zapoznanie się z formatem plików .car firmy Apple

Format pliku .car firmy Apple — skrót od Compiled Asset Catalog Resource — to binarny kontener używany przez firmę Apple do pakowania, optymalizacji i dostarczania zasobów aplikacji w całym ekosystemie platform. Zrozumienie tego formatu ma znaczenie dla każdego programisty iOS, macOS, tvOS lub watchOS, który chce dostarczać oszczędniejsze, szybsze i lepiej zoptymalizowane aplikacje.

Czym dokładnie jest plik .car i dlaczego Apple go używa?

Kiedy tworzysz projekt Xcode, Twój katalog Assets.xcassets jest kompilowany przez kompilator katalogu zasobów (actool) do binarnego pliku .car, który jest dostarczany w pakiecie aplikacji. Zamiast dostarczać luźne pliki PNG, PDF lub HEIC w czasie wykonywania, Apple pakuje wszystko w jeden ustrukturyzowany plik binarny.

Motywacje stojące za tym projektem są celowe i wielowarstwowe. Kompilator przeprowadza w czasie kompilacji kilka optymalizacji, które byłyby niemożliwe w przypadku nieprzetworzonych plików obrazów:

Kompresja tekstur zoptymalizowana pod kątem procesora graficznego — obrazy są wstępnie konwertowane do formatów takich jak ASTC lub PVR, które procesor graficzny może wykorzystać bezpośrednio, bez obciążania procesora dekodowaniem.

Dzielenie na współczynnik skali — warianty @1x, @2x i @3x są przechowywane i udostępniane w oparciu o gęstość ekranu urządzenia docelowego.

Integracja z funkcją App Thing — App Store usuwa warianty zasobów nieistotne dla urządzenia pobierającego, znacznie zmniejszając rozmiar instalacji.

Zarządzanie przestrzenią kolorów — zasoby są oznaczane i konwertowane odpowiednio do wyświetlania P3, sRGB lub rozszerzonych przestrzeni kolorów.

Obsługa nazwanych kolorów i symboli — Symbole SF i semantyczne tokeny kolorów są rozpoznawane i osadzane wraz z danymi rastrowymi.

💡 CZY WIESZ?

Mewayz replaces 8+ business tools in one platform

CRM · Fakturowanie · HR · Projekty · Rezerwacje · eCommerce · POS · Analityka. Darmowy plan dostępny na zawsze.

Zacznij za darmo →

Kluczowy wniosek: format .car to nie tylko kontener — to aktywny proces optymalizacji. Ciężkie prace mają miejsce w czasie kompilacji, dzięki czemu ładowanie zasobów w czasie wykonywania staje się niemal natychmiastowe, co jest głównym powodem, dla którego natywne aplikacje Apple działają szybciej niż alternatywy internetowe obsługujące równoważne zasoby.

Jak zorganizowana jest wewnętrzna struktura pliku .car?

Firma Apple nigdy nie opublikowała oficjalnej specyfikacji formatu binarnego .car, ale wysiłki społeczności związane z inżynierią wsteczną — w szczególności projekty takie jak Asset Catalog Tinkerer i ThemeEngine — pozwoliły na szczegółowe odwzorowanie jego układu.

Na najwyższym poziomie plik .car jest tworzony na podstawie systemu plików BOM (Bill of Materials) — tego samego formatu, jakiego Apple używa w przypadku pakietów instalacyjnych. W tym drzewie BOM znajdziesz kilka nazwanych strumieni:

Strumień RENDITIONS jest największym i najważniejszym i zawiera rzeczywisty obraz i ładunki danych indeksowane unikalnym kluczem interpretacji. Strumień KEYFORMAT definiuje schemat tych kluczy, atrybuty kodowania, takie jak idiom (iPhone, iPad, Mac), skala, gama wyświetlania i wygląd (jasny, ciemny). Strumienie FACETKEYSDB i FEATUREFLAGS przechowują metadane dotyczące odpowiednio nazwanych zasobów i flag możliwości. Strumień EXTENDED_METADATA, dodany w nowszych wersjach SDK, obsługuje takie rzeczy, jak zlokalizowane nazwy symboli i symbole o zmiennej szerokości.

Każdy ładunek renderowania ma własną strukturę — ​​zawiera nagłówek opisujący wymiary w pikselach, przestrzeń kolorów, typ kompresji, a następnie surowe, skompresowane dane. W przypadku obrazów rastrowych mogą to być surowe piksele skompresowane metodą LZFSE; w przypadku wektorów PDF są to oryginalne bajty PDF; w przypadku zasobów danych jest to dowolny przechowywany binarny obiekt blob.

Jakich narzędzi mogą używać programiści do sprawdzania i wyodrębniania zawartości .car?

Ponieważ pliki .car są skompilowanymi plikami binarnymi, nie można ich po prostu otworzyć w Podglądzie ani w Finderze. Apple zapewnia pewną oficjalną powierzchnię za pośrednictwem prywatnych platform, ale w celu praktycznej kontroli zwykle sięga się po narzędzia innych firm.

Asset Catalog Tinkerer (autorstwa Guilherme Rambo) to najpopularniejsze narzędzie GUI — umożliwia przeglądanie, podgląd i eksportowanie poszczególnych zasobów z dowolnego pliku .car. acextract to społecznościowe narzędzie wiersza poleceń, które rekonstruuje luźną strukturę folderów ze skompilowanego katalogu. Własne polecenie Assetutil firmy Apple, dostarczane z zestawem narzędzi Xcode, może wysyłać zapytania do metadanych i filtrować katalogi dla określonych urządzeń. Do głębokiego wejścia binarnego

Streamline Your Business with Mewayz

Mewayz brings 207 business modules into one platform — CRM, invoicing, project management, and more. Join 138,000+ users who simplified their workflow.

Start Free Today →

Wypróbuj Mewayz za Darmo

Kompleksowa platforma dla CRM, fakturowania, projektów, HR i więcej. Karta kredytowa nie jest wymagana.

Zacznij dziś zarządzać swoją firmą mądrzej.

Dołącz do 30,000+ firm. Plan darmowy na zawsze · Bez karty kredytowej.

Uznałeś to za przydatne? Udostępnij to.

Gotowy, aby wprowadzić to w życie?

Dołącz do 30,000+ firm korzystających z Mewayz. Darmowy plan forever — karta kredytowa nie jest wymagana.

Rozpocznij darmowy okres próbny →

Gotowy, by podjąć działanie?

Rozpocznij swój darmowy okres próbny Mewayz dziś

Platforma biznesowa wszystko w jednym. Karta kredytowa nie jest wymagana.

Zacznij za darmo →

14-dniowy darmowy okres próbny · Bez karty kredytowej · Anuluj w dowolnym momencie