7.4 KiB
Publier VniDrop sur TestFlight interne — guide complet
Ce guide décrit toutes les étapes pour compiler l'application et l'envoyer sur TestFlight interne (aucune revue Apple n'est nécessaire pour les testeurs internes).
- Bundle ID :
com.vnidrop.app - Team ID Apple :
A8A4JSMV5D - Branche à utiliser :
feat/release-test-flight
⚠️ Point crucial : il faut compiler avec un Xcode de version finale (release), par exemple Xcode 26 — pas une version bêta. Un envoi construit avec un Xcode bêta est refusé par App Store Connect (« Unsupported SDK or Xcode version »).
1. Prérequis
- Un Mac sous macOS stable (pas une bêta) avec Xcode 26 installé.
- Un identifiant Apple (gratuit) — aucun abonnement développeur payant n'est nécessaire de votre côté. Le propriétaire du compte vous invitera sur le sien.
- Une connexion internet.
2. Obtenir l'accès au compte développeur
Le propriétaire du compte doit vous inviter (une seule fois) :
- Sur App Store Connect → Utilisateurs et accès → Ajouter un utilisateur.
- Il saisit votre identifiant Apple et vous attribue le rôle Admin (nécessaire pour gérer la signature) ou au minimum App Manager.
- Vous recevez un e-mail d'invitation — acceptez-le.
Ensuite, dans Xcode → menu Xcode → Settings → Accounts → + → connectez-vous avec votre identifiant Apple. L'équipe VniDrop (A8A4JSMV5D) doit apparaître.
3. Installer les outils
Dans le Terminal :
# Homebrew (si absent) : voir https://brew.sh
# Outils de génération de projet et de qualité de code
brew install xcodegen swiftlint
# Rust (pour compiler le cœur natif)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Installez aussi les Command Line Tools de Xcode si demandé :
xcode-select --install
4. Récupérer le projet
git clone <URL_DU_DEPOT> vnidrop
cd vnidrop
git checkout feat/release-test-flight
Le fichier
.xcodeproj, leLocal.xcconfiget le framework compilé ne sont pas versionnés : ils seront (re)générés localement aux étapes suivantes.
5. Configurer la signature
Créez le fichier apple/Local.xcconfig (ignoré par git) avec ce contenu :
DEVELOPMENT_TEAM = A8A4JSMV5D
CODE_SIGN_STYLE = Automatic
CODE_SIGNING_ALLOWED = YES
Cela active la signature sur cette machine sans modifier la configuration partagée (qui reste non signée pour l'intégration continue).
6. Compiler le cœur Rust
Depuis la racine du dépôt :
apple/scripts/build-core.sh
Cela produit apple/VnidropCore/vnidrop.xcframework (avec la tranche arm64 device
requise pour TestFlight) et les liaisons Swift.
- La compilation debug (par défaut) convient parfaitement pour TestFlight.
- Si vous voulez une compilation release :
apple/scripts/build-core.sh release. Sur macOS stable, cela devrait fonctionner. En cas d'erreurcan't find crate(dylibs de macros corrompus), nettoyez et repassez en debug :cargo clean apple/scripts/build-core.sh
7. Incrémenter le numéro de build
Chaque envoi doit avoir un numéro de build unique et supérieur au précédent.
Dans apple/project.yml, cherchez CURRENT_PROJECT_VERSION et mettez 4
(les numéros 1 à 3 ont déjà été utilisés) :
CURRENT_PROJECT_VERSION: "4"
Pour tout envoi ultérieur, augmentez encore ce nombre (5, 6, …).
8. Générer le projet Xcode
cd apple
xcodegen generate
Cela crée apple/VniDrop.xcodeproj à partir de project.yml et du Local.xcconfig.
9. Archiver dans Xcode
- Ouvrez
apple/VniDrop.xcodeprojdans Xcode 26. - En haut, sélectionnez le schéma VniDrop et la destination Any iOS Device (arm64) (surtout pas un simulateur).
- Menu Product → Archive.
- À la fin, la fenêtre Organizer s'ouvre avec votre archive.
10. Envoyer sur App Store Connect
- Dans l'Organizer, sélectionnez l'archive → Distribute App.
- Choisissez App Store Connect → Upload.
- Laissez les options par défaut (signature automatique) → Upload.
- La question sur le chiffrement ne sera pas posée (déjà réglée dans l'Info.plist).
Patientez quelques minutes : le build apparaît ensuite dans App Store Connect avec le statut « En cours de traitement », puis devient disponible.
11. Publier sur TestFlight interne (sans revue)
- Sur App Store Connect → l'app VniDrop → onglet TestFlight.
- Attendez que le build passe de « En cours de traitement » à disponible.
- Section Tests internes → créez un groupe (ou utilisez celui par défaut) → ajoutez les testeurs internes (ce sont des utilisateurs de l'équipe App Store Connect ; le propriétaire les ajoute via Utilisateurs et accès si besoin).
- Activez le build pour le groupe.
- Les testeurs reçoivent un e-mail, installent l'app TestFlight, acceptent, puis installent VniDrop. Aucune revue Apple n'est requise pour les tests internes.
12. Solution de repli pour la signature
Si, à l'étape 9/10, Xcode refuse de créer un certificat de distribution automatiquement (limitation possible des comptes individuels), le propriétaire du compte doit fournir les éléments de signature :
- Portail développeur → Certificates → créer un certificat Apple Distribution,
puis l'exporter en
.p12(avec la clé privée) depuis le Trousseau (Keychain). - Profiles → créer un profil de provisioning App Store pour
com.vnidrop.app. - Vous transmet le
.p12(+ son mot de passe) et le profil.
De votre côté :
- Importez le
.p12dans le Trousseau (double-clic). - Dans Xcode, désactivez la signature automatique et sélectionnez la signature manuelle avec ce profil, puis reprenez l'archivage (étape 9).
🔒 Un
.p12de distribution permet de signer des apps au nom du propriétaire : à n'utiliser qu'entre personnes de confiance. Le certificat peut être révoqué ensuite.
13. Dépannage
- « Unsupported SDK or Xcode version » → vous compilez avec un Xcode bêta. Utilisez Xcode 26 (release).
- Échec de la phase SwiftLint →
brew install swiftlint(obligatoire, la build échoue sinon). - Numéro de build déjà utilisé → augmentez
CURRENT_PROJECT_VERSIONpuisxcodegen generateà nouveau. - L'app n'apparaît pas dans TestFlight → attendez la fin du « traitement » ; la conformité export est déjà déclarée, aucune action supplémentaire.
- Le même Xcode pour le cœur Rust et l'archivage n'est pas obligatoire (le cœur est du Rust), mais l'archivage doit impérativement se faire avec Xcode 26 release.
Récapitulatif express
# 1. Outils
brew install xcodegen swiftlint
# 2. Projet
git checkout feat/release-test-flight
# 3. Signature : créer apple/Local.xcconfig (voir §5)
# 4. Cœur natif
apple/scripts/build-core.sh
# 5. Numéro de build : CURRENT_PROJECT_VERSION -> 4 dans apple/project.yml
# 6. Projet Xcode
cd apple && xcodegen generate
# 7. Xcode 26 : schéma VniDrop, destination « Any iOS Device (arm64) »,
# Product → Archive → Distribute App → App Store Connect → Upload
# 8. App Store Connect → TestFlight → Tests internes → ajouter les testeurs