Primeiro:
- Faça o download da distribuição atual na seção "Versões" e descompacte-a.
- Conseguir a origem e criá-la.
Para converter um arquivo de origem Java (Hello.java, por exemplo):
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
Para compilar o arquivo traduzido:
j2objcc -c Hello.m
j2objcc é um script de wrapper que invoca seu compilador C (normalmente clang, também conhecido como LLVM, compilador C/C++/Objective-C da Apple). Para criar o executável:
j2objcc -o hello Hello.o
./hello Hello
hello, world
j2objcc encaminha quaisquer opções especificadas para o compilador Objective-C.
Por exemplo, para traduzir e criar com símbolos de depuração, use a flag -g
:
j2objcc -g -o hello Hello.m
Perguntas frequentes
Quando executo o j2objcc
, ele informa que "Foundation/Foundation.h" não foi encontrado.
Se a compilação falhar porque Foundation/Foundation.h não foi encontrado, o problema é que o SDK do iOS não foi encontrado (onde está esse cabeçalho).
- Verifique se o Xcode está instalado.
- Instale as ferramentas de linha de comando executando
xcode-select --install
. - Execute
xcodebuild -showsdks
, que precisa mostrar pelo menos um SDK para OS X, iOS e iOS Simulator. - Se isso falhar, exclua o aplicativo Xcode e vá para a etapa 1.
Quais flags são usadas pelo j2objcc
?
O script j2objcc
é apenas um wrapper em torno do compilador Objective-C, clang.
Execute man cc
ou man clang
para listar as opções.
Ao compilar com j2objcc
, os arquivos de cabeçalho (.h) do meu projeto não foram encontrados.
O compilador precisa saber o diretório em que os arquivos traduzidos residem,
usando -I <directory>
. Portanto, se os arquivos foram gerados com j2objc -d foo/bar ...
,
o comando j2objcc
vai precisar de -Ifoo/bar
. Se nenhum diretório de saída tiver sido
especificado no comando j2objc
, será necessário adicionar -I.
.
Como faço para executar no Windows ou no Linux?
J2ObjC é uma ferramenta para iOS desenvolvida para o Mac OS X. Não é possível compilar um código traduzido porque ele exige um SDK do OS X ou iOS da Apple, o que exige que os SDKs sejam usados apenas em Macs.
No entanto, como o tradutor J2ObjC é Java puro, a tradução pode ser feita em
outros sistemas. No Linux, o script j2objc
funcionará inalterado. O uso do Windows requer o CygWin ou a invocação direta do Java. Para invocar o tradutor sem o script j2objc, use o
código abaixo, em que J2OBJC_DIR
é o diretório em que o
arquivo de distribuição J2ObjC foi descompactado:
java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]