Ajouter le projet JreEmulation à votre projet Xcode

La bibliothèque d'émulation JRE de J2ObjC peut être créée à l'aide de Xcode et peut être incluse en tant que sous-projet dans vos projets Xcode. Cela vous permet de contrôler les paramètres utilisés pour créer cette bibliothèque afin qu'elle puisse être utilisée au mieux par vos projets.

Télécharger le code source

Soit : - Téléchargez et compressez le bundle source actuel dans un répertoire local ; ou - Clonez l'arborescence du code source à l'aide de git. L’avantage d’une vérification de la source locale est qu’il est plus facile de se tenir au courant des dernières modifications apportées au projet J2ObjC, mais cela nécessite une certaine connaissance des systèmes de contrôle de version.

Le code source peut être inséré n'importe où sur votre système local. Pour les besoins de ce document, nous utiliserons /usr/local/src/j2objc, mais vous pouvez modifier ce chemin selon vos préférences.

Installer Build Tools

Pour compiler J2ObjC, vous devez installer les outils de ligne de commande de Xcode et Apache Maven. Voici quelques conseils :

Il s'agit de recherches Google et non de pages statiques, car l'installation peut souvent changer avec les nouvelles versions de Mac OS X et Xcode.

Compiler le projet

Suivez la procédure permettant de créer J2ObjC. Les builds de ligne de commande sont facultatifs, mais plus faciles à déboguer que lorsqu'ils sont appelés dans Xcode.

Lors du débogage du JRE, il est recommandé d'ajouter les lignes suivantes en haut du fichier jre_emul/environment.mk avant d'exécuter une compilation propre:

DEBUGGING_SYMBOLS=YES
OPTIMIZATION_LEVEL=0

Projet Xcode JreEmulation

Dans Xcode, ouvrez /usr/local/src/j2objc/jre_emul/JreEmulation.xcodeproj. Voici les différents dossiers qu'il contient:

  • Classes: ensemble des classes d'émulation JRE principales, qui ne sont pas créées par la traduction des fichiers sources Java.
  • jre_emul_tests: ensemble des tests unitaires créés et exécutés dans Xcode. Ils n'incluent pas les tests JUnit traduits, qui sont créés et exécutés à partir de la ligne de commande à l'aide de make test dans le répertoire jre_emul.
  • Classes transpilées: il s'agit des fichiers créés en traduisant les fichiers sources Java de la bibliothèque JRE. Remarques :
  • Xcode indique les fichiers manquants en rouge. Étant donné que ces fichiers sont créés pendant la compilation, ils sont initialement tous rouges jusqu'à la création du projet.
  • Nous ajoutons régulièrement de nouvelles classes à la bibliothèque d'émulation JRE. Cette liste peut donc être obsolète. Si tel est le cas, effectuez un clic droit sur ce dossier, cliquez sur "Ajouter des fichiers à JreEmulation.xcodeproj", puis ajoutez les nouveaux fichiers .m et .h à partir de jre_emul/build_result/Classes et de ses sous-répertoires.

Pour compiler le projet JreEmulation, sélectionnez la cible jre_emul et cliquez sur le bouton Run (Exécuter) de Xcode. Pour compiler et exécuter les tests unitaires, cliquez sur la flèche vers le bas à côté du bouton Run (Exécuter), puis sélectionnez Test (Tester).

Ajouter le projet JreEmulation à votre projet

  • Dans le panneau "Projet Naviagator" à gauche, effectuez un clic droit sur votre projet, puis sélectionnez "Ajouter des fichiers à Nom du projet".
  • Recherchez le fichier jre_emul/JreEmulation.xcodeproj, puis cliquez sur le bouton Add (Ajouter).
  • Cliquez sur votre projet et sélectionnez sa cible principale, puis sélectionnez l'onglet Build Phases (Phases de compilation) de la cible.
  • Ouvrez la section "Dépendances cibles", cliquez sur le bouton +, puis sélectionnez la cible jre_emul.
  • Ouvrez la section "Link Binary With libraries", cliquez sur le bouton +, puis sélectionnez libjre_emul.a.
  • Sélectionnez l'onglet "Build Settings" (Paramètres de compilation) de la cible, recherchez "Header Search Paths" (Chemins de recherche d'en-tête) et ajoutez le chemin d'accès au répertoire /usr/local/src/j2objc/dist/include (en remplaçant l'emplacement réel).

Une fois votre projet créé, le projet JreEmulation est créé selon les besoins.