Xcode 14, l’ultima versione dell’ambiente di sviluppo integrato (Integrated development environment, IDE) di Apple, avrebbe dovuto permettere di ridurre il “peso” delle app eseguite su iOS 16 e versioni seguenti, ma in realtà è responsabile dell’aumento delle dimensioni delle app iOS, in alcuni casi cresciute del 68% passando da Xcode 13 a Xcode 14.
A riferirlo sono gli sviluppatori di Emerge Tools, una serie di utility destinate agli sviluppatori di app per dispositivi mobili, che evidenziano il problema in un articolo pubblicato sul loro blog. Uno degli strumenti offerti da Emerge Tools consente di analizzare il “peso” delle app offrendo indicazioni per ottimizzarle, ed essendo “pane per i loro denti” sanno dunque bene di ciò che si parla.
L’aumento delle dimensioni delle app compilate con Xcode 14 a quanto pare è conseguenza dell’abbandono di Bitcode, un servizio di ottimizzazione delle app che Apple aveva presentato nel 2015 e che consentiva di compilare in qualunque momento app già presenti nello store secondo nuovi criteri di compatibilità e/o ottimizzazione, ricreando il pacchetto senza bisogno di avere a che fare con i sorgenti ma con una sorta di rappresentazione intermedia che consentiva in qualunque momento di migliorare, ad esempio, la compatibilità. Il meccanismo in questione era stato utile per semplificare la transizione a 64 bit su Apple, ottimizzando le app automaticamente per le nuove versioni dei sistemi operativi (iOS, tvOS e watchOS), senza bisogno di ricompilarne ogni volta ed era obbligatorio con le app per watchOS.
Tra i vantaggi di Bitcode, ottimizzazioni specifiche un base all’hardware-target, rimuovendo in particolare i “simboli binari”, metadati utili durante lo sviluppo e la compilazione, ma inutili nel file finale. Sembra niente ma i simboli generati per l’app nello store saranno (diversi da quelli del proprio sistema di compilazione) sono quelli che hanno causato un aumento del “peso” di varie app.
Nel caso dell’app Nike indicata come esempio (qui i dettagli), si tratta di 127MB in più legati ai simboli binari, non rimossi dall’app distribuita sullo store. Problemi di “peso” sono evidenti con i framework sottostanti, giacché ognuno di questi sfrutta propri simboli e finisce per pesare particolarmente sulle dimensioni finale dell’app.
Gli sviluppatori di Emerge Tools hanno analizzato varie app e individuato questo inconveniente in vari casi, ma è il problema è presente anche su app di Apple stessa (Shazam è cresciuta, ad esempio di circa 2MB).
Emerge Tools riferisce come gli sviluppatori possono risolvere il problema configurando adeguatamente Xcode 14 per rimuovere i simboli generati dall’app finale, sfruttando uno script per la shell prima di firmare l’app da distribuire ma si spera che Apple integri una opzione specifica nei futuri aggiornamenti di Xcode.
Apple non ha al momento indicato il motivo dell’abbandono di Bitcode; sappiamo ad ogni modo che oltre a vantaggi vi erano in alcuni casi svantaggi, come ad esempio il mancato supporto completo per l’interruzione degli arresti anomali (utile in fase di debug).