Bắt đầu

Trước tiên, hãy lấy nguồnxây dựng ứng dụng đó.

Để dịch một tệp nguồn Java (ví dụ: 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

Để biên dịch tệp được dịch:

j2objcc -c Hello.m

j2objcc là tập lệnh trình bao bọc gọi trình biên dịch C (thường clang, còn được gọi là LLVM, C/C++/Target-C của Apple trình biên dịch). Cách tạo tệp thực thi:

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

j2objcc chuyển tiếp bất kỳ tuỳ chọn nào mà bạn chỉ định cho trình biên dịch Mục tiêu-C. Ví dụ: để dịch và xây dựng bằng các biểu tượng gỡ lỗi, hãy sử dụng cờ -g:

j2objcc -g -o hello Hello.m

Câu hỏi thường gặp

Khi tôi chạy j2objcc, lệnh này sẽ báo cáo rằng "Foundation/Foundation.h" không tìm thấy.

Nếu quá trình biên dịch không thành công do không tìm thấy Foundation/Foundation.h, thì đó là do vấn đề là không tìm thấy SDK iOS (đó là nơi có tiêu đề đó).

  1. Đảm bảo bạn đã cài đặt Xcode.
  2. Cài đặt các công cụ dòng lệnh bằng cách chạy xcode-select --install.
  3. Chạy xcodebuild -showsdks sẽ hiển thị ít nhất một SDK cho OS X, iOS, và Trình mô phỏng iOS.
  4. Nếu không thành công, hãy xoá ứng dụng Xcode rồi chuyển sang bước 1.

j2objcc sẽ sử dụng những cờ nào?

Tập lệnh j2objcc chỉ là một trình bao bọc xung quanh trình biên dịch Object-C, clang. Chạy man cc hoặc man clang để liệt kê các tuỳ chọn.

Khi biên dịch bằng j2objcc, tôi không thể tìm thấy tệp tiêu đề (.h) của dự án.

Trình biên dịch cần biết thư mục chứa các tệp được dịch, đang sử dụng -I <directory>. Vậy nên, nếu các tệp được tạo bằng j2objc -d foo/bar ..., thì lệnh j2objcc cần -Ifoo/bar. Nếu không có thư mục đầu ra nào đã chỉ định trong lệnh j2objc, thì bạn cần thêm -I..

Làm cách nào để chạy trên Windows hoặc Linux?

J2ObjC là công cụ iOS dùng để phát triển trên Mac OS X. Bạn không thể biên dịch mọi mã đã được dịch vì mã này đòi hỏi phải có SDK OS X hoặc iOS của Apple, yêu cầu chỉ sử dụng SDK trên máy Mac.

Tuy nhiên, vì trình dịch J2ObjC là thuần Java, nên việc dịch có thể được thực hiện trên các hệ thống khác. Trên Linux, tập lệnh j2objc sẽ hoạt động không thay đổi. Cửa sổ sử dụng yêu cầu sử dụng CygWin hoặc gọi Java trực tiếp. Để gọi trình biên dịch mà không cần tập lệnh j2objc, hãy sử dụng theo sau là J2OBJC_DIR là thư mục nơi Đã giải nén tệp phân phối J2ObjC:

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