Innanzitutto, ottieni l'origine e crearlo.
Per tradurre un file sorgente Java (ad esempio Hello.java):
public class Hello {
public static void main(String[] args) {
System.out.println("hello, world");
}
}
j2objc Hello.java
translating Hello.java Translated 1 file: 0 errors, 0 warnings
Per compilare il file tradotto:
j2objcc -c Hello.m
j2objcc è uno script wrapper che chiama il compilatore C (generalmente clang, noto anche come LLVM, C/C++/Objective-C di Apple compilatore). Per creare l'eseguibile:
j2objcc -o hello Hello.o
./hello Hello
hello, world
j2objcc inoltra le opzioni specificate per il compilatore Objective-C.
Ad esempio, per tradurre e creare con i simboli di debug, utilizza il flag -g
:
j2objcc -g -o hello Hello.m
Domande frequenti
Quando eseguo j2objcc
, viene visualizzato il messaggio "Foundation/Foundation.h" non trovato.
Se la compilazione non va a buon fine perché non viene trovata la soluzione Foundation/Foundation.h, il problema è che l'SDK per iOS non è stato trovato (è qui che si trova l'intestazione).
- Assicurati di aver installato Xcode.
- Installa gli strumenti a riga di comando eseguendo
xcode-select --install
. - Esegui
xcodebuild -showsdks
, che dovrebbe mostrare almeno un SDK per OS X, iOS e iOS. - Se il problema persiste, elimina l'applicazione Xcode e vai al passaggio 1.
Quali segnalazioni riceve j2objcc
?
Lo script j2objcc
è solo un wrapper per il compilatore Objective-C, clang.
Esegui man cc
o man clang
per elencare le opzioni.
Durante la compilazione con j2objcc
, i file di intestazione (.h) del mio progetto non sono stati trovati.
Il compilatore deve conoscere la directory in cui si trovano i file tradotti,
utilizzando -I <directory>
. Quindi se i file sono stati generati
j2objc -d foo/bar ...
,
il comando j2objcc
avrà bisogno di -Ifoo/bar
. Se la directory di output non è
specificato nel comando j2objc
, è necessario aggiungere -I.
.
Come posso essere eseguito su Windows o Linux?
J2ObjC è uno strumento iOS per lo sviluppo su Mac OS X. Non puoi compilare qualsiasi codice tradotto perché richiede un SDK OS X o iOS di Apple, che richiede l'utilizzo dei suoi SDK solo su Mac.
Tuttavia, poiché il traduttore J2ObjC è puro Java, la traduzione può essere eseguita
e altri sistemi. Su Linux, lo script j2objc
dovrebbe funzionare senza modifiche. Finestre
richiede CygWin o richiama Java
. Per richiamare il traduttore senza lo script j2objc, utilizza la classe
dove J2OBJC_DIR
è la directory in cui
Il file di distribuzione J2ObjC è stato decompresso:
java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]