Primeiro, acesse a origem e desenvolvê-lo.
Para traduzir 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, linguagem de programação C/C++/Objective-C da Apple) compilador (em inglês). 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 administro o j2objcc
, ele reclama que "Foundation/Foundation.h" não foi encontrada.
Se a compilação falhar porque Foundation/Foundation.h não é encontrado, o problema é que o SDK do iOS não foi encontrado (é aí que o cabeçalho está).
- Verifique se o Xcode está instalado.
- Execute
xcode-select --install
para instalar as ferramentas de linha de comando. - Execute
xcodebuild -showsdks
, que precisa mostrar pelo menos um SDK para OS X, iOS e e iOS Simulator. - Se isso falhar, exclua o aplicativo Xcode e pule para a etapa 1.
Quais sinalizações o j2objcc
usa?
O script j2objcc
é apenas um wrapper em torno do compilador do Objective-C, clang.
Execute man cc
ou man clang
para listar as opções.
Durante a compilação com j2objcc
, os arquivos de cabeçalho (.h) do meu projeto não foram encontrados.
O compilador precisa saber o diretório em que estão os arquivos traduzidos.
usando -I <directory>
. Então, se os arquivos foram gerados
j2objc -d foo/bar ...
,
o comando j2objcc
vai precisar de -Ifoo/bar
. Se nenhum diretório de saída for
especificado no comando j2objc
, adicione -I.
.
Como executar no Windows ou no Linux?
J2ObjC é uma ferramenta do iOS para desenvolvimento no Mac OS X. Não é possível compilar qualquer código traduzido, porque requer um SDK OS X ou iOS da Apple, que exige que os SDKs sejam usados apenas em Macs.
No entanto, como o tradutor J2ObjC é Java puro, a tradução pode ser feita no
outros sistemas. No Linux, o script j2objc
deve funcionar inalterado. Janelas
usar requer o CygWin ou a invocação de Java
diretamente. Para invocar o tradutor sem o script j2objc, use o
seguindo, 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]