Mam trudności ze znalezieniem jakichkolwiek informacji na ten temat. Android sam wspomina o zaciemnianiu kodu jako o czymś, co należy zrobić przed przesłaniem do sklepu. Ale nie widzę o tym nic z Apple ani z list kontrolnych przedłożonych przez osoby trzecie. Jedyne podobne pytanie, jakie mogłem znaleźć, to jakieś 5 lat temu o Objective-C, i mogę znaleźć tylko 1 bibliotekę Github na temat zaciemniania iOS. Czy powszechną praktyką jest zaciemnianie kodu Swift podczas przesyłania do sklepu Apple App Store? W szczególności, aby ukryć prywatne adresy URL API lub klucze API? Czy istnieje odpowiednik Pro-Guard dla Apple?Objawianie kodu Swift przed przesłaniem do Apple App Store
Odpowiedz
Java jest konwertowana na kod bajtowy, który można dekompilować.
Swift jest językiem kompilowanym, a kompilator Clang jest wysoce zoptymalizowany. W trybie zwolnienia usuwa symbole i robi dużo optymalizacji, która sama w sobie powoduje wiele zaciemnień. Istnieją dekompilatory dla skompilowanych języków, ale wyniki są naprawdę okropne i trudne do odczytania.
W rzeczywistości Xcode także konwertuje kod Swift na rodzaj kodowania pośredniego reprezentacji, zwanego bitcodem przez Apple. Ale, IIRC, bitcode zostaje usunięte przez Apple przed wysłaniem aplikacji do klientów, a skompilowany kod aplikacji jest również szyfrowany przez Apple. Optymalizacje wykonywane przez kompilator Swift na Kompilacji wydania (w tym zmiany kolejności kodu itp.) Powodują pewne zaciemnienie. – hotpaw2
@ hotpaw2, nie sądzę, że to prawda, że skompilowany kod aplikacji jest zaszyfrowany. Jest podpisany przez kod, a system operacyjny urządzenia docelowego odmawia uruchomienia aplikacji, chyba że zostanie podpisany podpis (który obejmuje identyfikator AppleID użytkownika). –
Pobierz aplikację ze sklepu z aplikacjami na iOS i sprawdź, czy w pliku zip znajduje się kod maszynowy ARM. – hotpaw2
Co należy zaciemnić? Twój kod Swift nie jest widoczny nigdzie w zbudowanej aplikacji. – matt