Pierwsze kroki

Najpierw:

Aby przetłumaczyć plik źródłowy Java (np. 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

Aby skompilować przetłumaczony plik:

j2objcc -c Hello.m

j2objcc to skrypt opakowujący, który wywołuje kompilator C (zwykle clang, czyli LLVM, kompilator C/C++/Objective-C firmy Apple). Aby skompilować plik wykonywalny:

j2objcc -o hello Hello.o
./hello Hello
hello, world

Metoda j2objcc przekazuje wszystkie opcje określone dla kompilatora Objective-C. Na przykład do tłumaczenia i tworzenia z użyciem symboli debugowania możesz użyć flagi -g:

j2objcc -g -o hello Hello.m

Najczęstsze pytania

Gdy uruchamiam j2objcc, wyświetla się komunikat, że nie można znaleźć pliku „Foundation/Foundation.h”.

Jeśli kompilacja się nie uda z powodu nieznalezienia obiektu Foundation/Foundation.h, problem polega na tym, że nie znaleziono pakietu SDK na iOS (tam jest nagłówek).

  1. Upewnij się, że masz zainstalowany Xcode.
  2. Zainstaluj narzędzia wiersza poleceń, uruchamiając polecenie xcode-select --install.
  3. Uruchom plik xcodebuild -showsdks, który powinien wyświetlać co najmniej 1 pakiet SDK dla symulatora OS X, iOS i iOS.
  4. Jeśli to nie pomoże, usuń aplikację Xcode i przejdź do kroku 1.

Jakie flagi rejestruje j2objcc?

Skrypt j2objcc jest po prostu otoką kompilatora Objective-C (clang). Uruchom polecenie man cc lub man clang, aby wyświetlić listę opcji.

Podczas kompilacji za pomocą usługi j2objcc nie mogę znaleźć plików nagłówka (.h) mojego projektu.

Kompilator musi za pomocą -I <directory> mieć dostęp do katalogu, w którym znajdują się przetłumaczone pliki. Jeśli więc pliki zostały wygenerowane za pomocą j2objc -d foo/bar ..., polecenie j2objcc wymaga -Ifoo/bar. Jeśli w poleceniu j2objc nie określono katalogu wyjściowego, należy dodać -I..

Jak uruchomić grę w systemie Windows lub Linux?

J2ObjC to narzędzie na iOS przeznaczone do programowania w systemie Mac OS X. Nie można kompilować przetłumaczonego kodu, ponieważ wymaga on pakietu SDK OS X lub iOS od Apple, który wymaga, aby pakiety SDK były używane tylko na komputerach Mac.

Ponieważ jednak tłumacz J2ObjC jest w języku Java, tłumaczenie może być wykonywane w innych systemach. W Linuksie skrypt j2objc powinien działać bez zmian. Używanie w systemie Windows wymaga CygWin lub bezpośredniego wywoływania Javy. Aby wywołać tłumacza bez skryptu j2objc, użyj tego kodu, gdzie J2OBJC_DIR to katalog, w którym rozpakowano plik dystrybucyjny J2ObjC:

java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]