Convertir votre premier fichier java vers ObjectiveC via J2ObjC

Catégorie: Mobile (Mis à jour le 06-07-2015 19:17:04)

Cet article fait suite à ma présentation de J2ObjC dans ce précédent billet.

Ici, je compte exposer comment effectuer votre première conversion d'un fichier java vers un code J2ObjC équivalent.

Autres articles de la série J2ObjC

Préparer un projet existant à la conversion est une tache loin d'être simple au départ. Cette phase sera donc l'objectif d'un autre article ulterieur qui se basera sur les connaissances présentées dans celui-ci.

Dans tous les cas n'hésitez pas a commenter si quelque chose ne fonctionne pas chez vous ou si je n'ai pas assez détaillé certaines parties.

Quoi convertir?

La première étape est de comprendre ce que l'on peut convertir et ce que l'on ne peut pas.

J2ObjC est capable de convertir tout le code Java tel quel, excepté les appels propres à la plateforme. Ainsi, on dispose de la totalité de l'API java de base (Lists, Threads, Serialization, etc). En revanche, dès qu'une classe deviens dépendante de l'API d'android, le convertisseur indiquera une erreur sur le fichier concerné et ne sortira aucun résultat.

Pour savoir si une classe dépend de l'API android, un moyen simple est de regarder les imports en tête de fichier.

Par exemple une classe qui contient les imports suivants est une bonne candidate à la conversion:

import java.util.ArrayList;
import java.util.List;

Par contre, si vous imports contiennent des références vers android comme dans l'extrait suivant, alors la conversion ne sera pas possible:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;

Travail avec un exemple

Pour exposer la suite de l'article, je vais prendre pour exemple la classe disponible ici.

Cette classe est une candidate parfaite pour la conversion car elle n'a aucune dépendance externe en dehors de l'API java. Comme J2Objc fonctionne comme la compilation Java, les dépendances doivent être être résolues et le code doit compiler pour être converti.

Lancer la transformation

Pour cette étape, il vous faudra:

  • J2ObjC
  • Java
  • le SDK d'iOS (Xcode)
  • Un Mac

La ligne de commande à exécuter est simple:

export J2OBJC=/vtre/chemin/vers/J2ObjC
$J2OBJC/j2objc -use-arc -d build/objc \
    -classpath $J2OBJC/lib/javax-inject.jar \
    --prefix prefixes.properties \
    fichier.java

Dans ce script, la variable J2OBJC doit contenir le chemin vers J2Objc.

Le dossier build/objc contient à présent les fichiers Objective C convertis. Vous n'avez plus qu'à les integrer dans XCode pour les compiler. Pour cette partie, les instructions sont fournies sur le wiki du projet.

Conclusion et suite

Si tout fonctionne bien, vous avez converti votre premier fichier Java en Objective C. Rendez vous donc au prochain article qui explique comment concevoir une architecture compatible J2ObjC tout en restant simple et maintenable.

En attendant, n'hésitez pas à commenter si vous rencontrez des difficultés!

A lire aussi:

Concevoir un projet android compatible J2ObjC

[Mobile] Cet article à pour but de proposer une architecture propre et claire afin de mettre en oeuvre un partage optimal du code entre les versions Android et iOS pour une application simple.
Suite...

J2ObjC, le convertisseur Android vers iOS: présentation

[Mobile] Les plateformes Android et iOS sont les deux grands du marché mobile, et proposer une application sur ces deux plateformes est un avantage économique intéréssant. Je vous présente ici J2ObjC, un convertisseur qui permet de porter du code Java vers iOS.
Suite...