Conditions requises
- Système Apple Mac OS X
- La dernière version de Xcode
- JDK 21 installé
- Apache Maven
- (Recommandé, mais pas obligatoire) Source Google Protocol Buffer
Configuration sur Mac
- Exécutez la commande suivante pour installer les outils de ligne de commande Xcode :
sudo xcode-select --install- Ajoutez ceci au fichier
.bash_profile:
export JAVA_HOME=`/usr/libexec/java_home -v 21`- Si Maven n'est pas installé (essayez
mvn -versiondans un terminal), utilisez Homebrew :
brew install mavenCréer un fork du projet J2ObjC
Pour forker le projet J2ObjC, ouvrez sa page principale et cliquez sur le bouton "Fork" :

Sélectionnez le nom de votre compte GitHub. Le fork sera créé en quelques secondes.
Ensuite, clonez une copie de votre fork sur votre système local pour le développement. Tout d'abord, cliquez sur le bouton [Clone or download] (Cloner ou télécharger), puis sur le bouton "Copy to Clipboard" (Copier dans le presse-papiers) :

Clonez ensuite le dépôt dans un répertoire local :
git clone (Command-V) # Paste the copied URLInstaller protobuf et abseil
Vous devez avoir installé protobuf C++ avant de pouvoir compiler J2ObjC.
Pour installer le package binaire protobuf, utilisez Homebrew :
brew install protobufLa compilation Protobuf C++ dépend désormais de la bibliothèque Abseil. Installez-la également :
brew install abseilVous devez définir PROTOBUF_ROOT_DIR sur la racine où protobuf est installé.
Il s'agit normalement de la valeur par défaut de Homebrew : /usr/local. Ajoutez le code suivant à votre .bash_profile :
export PROTOBUF_ROOT_DIR=/usr/local # or your custom Homebrew dirPour le vérifier, exécutez $PROTOBUF_ROOT_DIR/bin/protoc --version.
Compiler J2ObjC
Pour compiler à partir d'une ligne de commande dans une fenêtre de terminal, exécutez :
# Build just the translator and librariesmake dist# Build the protocol buffer compiler and runtime for J2ObjCmake protobuf_dist# Build everything that is included in the project's distribution bundlesmake all_dist
Tester J2ObjC
Pour effectuer un test à partir d'une ligne de commande dans une fenêtre de terminal, exécutez la commande suivante :
# Run translator and library unit testsmake test# Run all unit tests, including for protocol buffersmake test_all
Nettoyer un build
# Remove all files generated by the buildmake clean
Builds parallèles
La compilation J2ObjC est compatible avec les compilations parallèles, qui sont spécifiées à l'aide de l'indicateur -j<n>, où n correspond au nombre maximal de tâches simultanées. La valeur maximale dépend de la vitesse de votre système. Nous vous suggérons de commencer par -j4.
Augmentez le nombre pour raccourcir les temps de compilation si votre système peut le gérer, et diminuez-le si la compilation échoue avec des erreurs système.
Créer des architectures iOS 32 bits
Les architectures iOS 32 bits ("iphone" et "simulator") ne sont pas compilées par défaut. Vous pouvez compiler j2objc avec ces architectures en les spécifiant d'abord dans la variable d'environnement J2OBJC_ARCHS :
$ export J2OBJC_ARCHS="iphone simulator"
$ make -j8 all_dist
Spécifier un sous-ensemble d'architectures compatibles peut généralement être utilisé pour accélérer les builds locaux, en ne spécifiant que les architectures dont votre application a besoin.
Pour ne créer que l'iOS 64 bits ("iphone64") et son simulateur associé ("simulator64"), par exemple, définissez J2OBJC_ARCHS="iphone64 simulator64" avant d'exécuter make.
Créer la distribution complète
Bien que l'équipe j2objc ne publie plus de distributions précompilées sur GitHub en raison des limites de taille de fichier, le script "build everything in one step" (tout compiler en une seule étape) peut toujours être utilisé :
$ scripts/build_distribution.sh HEAD-<current-date> $PROTOBUF_ROOT_DIR
L'exécution de ce script prend beaucoup de temps, car chaque architecture de chaque package j2objc est compilée. Toutefois, il est très utile en cas d'échec général de la compilation, car il ne compile qu'avec l'ensemble minimal de variables d'environnement. Si le script build_distribution réussit, mais pas les étapes de compilation normales, vérifiez si des variables d'environnement local sont mal définies.