XCFrameworks, une révolution pour Mac et iOS ?

Primary tabs

En novembre 2020, Apple a commencé à commercialiser des ordinateurs MacOS composés d’un nouveau type de matériel. Un processeur utilisant l'architecture ARM64 appelé M1.

L'un des avantages de ce changement est la possibilité pour les applications iOS de s’exécuter également sur MacOS avec des changements minimes. En effet, sur les ordinateurs équipés de M1, les applications pour iPhone et MacOS utilisent à présent toutes deux la même architecture : AMR64. Le M1 apporte également d'importantes améliorations en matière de performance et d'efficacité énergétique.
 
Cependant, la manière initiale de lier les frameworks binaires ("fat" frameworks) ne correspond pas à cette nouvelle façon de compiler. Un message d’erreur s’affichera bien que l’AMR64 pour iPhone et l’AMR64 pour Mac aient le même nom d'architecture, le code interne diffère. Les simulateurs iOS et iPhone n'ont pas la même structure. Par exemple, 'lipo' (l'ancienne façon de lier les frameworks binaires) est incapable d'utiliser un binaire fusionné contenant plusieurs binaires avec la même architecture.

Cela provoquerait le type d'erreur suivante lors de la compilation d'une application avec le SDK Linphone pour le simulateur : "building for iOS Simulator, as the linked and embedded framework 'linphone.framework' was built for iOS + iOS Simulator."

Les XCFrameworks seront utilisés à partir de la version 5.2 du SDK de Linphone. Cela signifie qu'au lieu de construire un seul framework pour de multiples architectures, nous aurons plusieurs petits frameworks pour chaque combinaison de plateforme et d’architecture. Cela permettra aux développeurs d'utiliser le SDK linphone pour toutes les applications développées avec XCode 12 ou plus récentes. Ainsi, ils pourront exécuter leurs applications pour les simulateurs sur les Macs M1 également.