Vous aurez besoin d'un fichier .tbd
pour lier contre.
Apple a arrêté de fournir ces derniers pour les cadres privés commençant par le SDK iOS 9.3, mais vous pouvez les générer vous-même avec un peu d'effort:
- Obtenez un IPSW pour une version plus récente iOS (ipsw.me ou the iPhone wiki ont beau listes).
- Décompressez l'IPSW et montez le système de fichiers racine (le
.dmg
qui est plusieurs Go).
- Recherchez le cache de bibliothèque partagée pour votre architecture dans
/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm*
.
En utilisant one of various tools (je préfère jtool), extraire CoreDuet
de celui-ci, avec par exemple:
jtool -e CoreDuet /path/to/dyld_shared_cache
Facultatif: étape 4 pour plusieurs architectures, puis combiner les fichiers extraits à un binaire gras:
lipo -output CoreDuet dyld_shared_cache_*.CoreDuet
en utilisant soit machotbd ou mon propre outil, tbdumpnotes, créez un fichier .tbd
de la bibliothèque/cadre que vous venez d'extraire, par exemple .:
tbdump CoreDuet > CoreDuet.tbd
notes 1. Je l'ai écrit, donc je suis évidemment affilié.
2. Il est une version bêta, et il est actuellement un peu trop zélés avec des symboles, l'impression même
ceux qu'il ne doit pas - mais jusqu'à présent, il a toujours bien fonctionné pour moi .
Créer une structure de dossiers comme ceci:
some_path/
CoreDuet.framework/
CoreDuet.tbd
Soit ajouter CoreDuet.framework à vos cadres dans XCode, ou utiliser ces drapeaux du compilateur:
-Fsome_path -framework CoreDuet
Profit.
En outre, si les étapes 1-6 sont trop gênant pour vous et vous devez simplement le symbole _CDBatterySaver
, alors vous pouvez simplement l'utiliser pour votre CoreDuet.tbd
et faire avec elle:
---
archs: [ armv7, armv7s, arm64 ]
platform: ios
install-name: /System/Library/PrivateFrameworks/CoreDuet.framework/CoreDuet
exports:
- archs: [ armv7, armv7s, arm64 ]
objc-classes: [ __CDBatterySaver ]
...