ขั้นแรก ให้หาแหล่งที่มา และ สร้างเลย
วิธีแปลไฟล์ต้นฉบับ Java (เช่น 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
วิธีรวมไฟล์ที่แปลแล้ว
j2objcc -c Hello.m
j2objcc เป็นสคริปต์ Wrapper ที่เรียกใช้คอมไพเลอร์ C ของคุณ (โดยปกติแล้วจะเป็น clang หรือที่รู้จักกันในชื่อ LLVM หรือ C/C++/Objective-C ของ Apple คอมไพเลอร์) วิธีสร้างไฟล์ปฏิบัติการ
j2objcc -o hello Hello.o
./hello Hello
hello, world
j2objcc จะส่งต่อตัวเลือกที่คุณระบุสำหรับคอมไพเลอร์ Objective-C
เช่น หากต้องการแปลและสร้างด้วยสัญลักษณ์การแก้ไขข้อบกพร่อง ให้ใช้แฟล็ก -g
ดังนี้
j2objcc -g -o hello Hello.m
คำถามที่พบบ่อย
เมื่อฉันเรียกใช้ j2objcc
ระบบร้องเรียนว่า "Foundation/Foundation.h" ไม่พบ
หากการรวบรวมล้มเหลวเนื่องจากไม่พบ Foundation/Foundation.h ปัญหา คือไม่พบ iOS SDK (ตรงนั้นตรงที่เป็นส่วนหัวนั้น)
- ตรวจสอบว่าคุณได้ติดตั้ง Xcode แล้ว
- ติดตั้งเครื่องมือบรรทัดคำสั่งโดยเรียกใช้
xcode-select --install
- เรียกใช้
xcodebuild -showsdks
ซึ่งควรแสดง SDK อย่างน้อย 1 รายการสำหรับ OS X, iOS และเครื่องมือจำลอง iOS - หากไม่สำเร็จ ให้ลบแอปพลิเคชัน Xcode แล้วไปที่ขั้นตอนที่ 1
j2objcc
ใช้การติดธงอะไร
สคริปต์ j2objcc
เป็นเพียง Wrapper ของคอมไพเลอร์ Objective-C
เรียกใช้ man cc
หรือ man clang
เพื่อแสดงรายการตัวเลือก
เมื่อคอมไพล์ด้วย j2objcc
ไม่พบไฟล์ส่วนหัว (.h) ของโปรเจ็กต์
คอมไพเลอร์จำเป็นต้องทราบไดเรกทอรีที่มีไฟล์ที่แปลแล้วอยู่
ด้วย -I <directory>
ดังนั้นหากไฟล์สร้างขึ้นด้วย
j2objc -d foo/bar ...
,
คำสั่ง j2objcc
ต้องใช้ -Ifoo/bar
หากไม่มีไดเรกทอรีเอาต์พุตเดิมคือ
ที่ระบุในคำสั่ง j2objc
ต้องเพิ่ม -I.
ฉันจะเรียกใช้บน Windows หรือ Linux ได้อย่างไร
J2ObjC เป็นเครื่องมือ iOS ที่มีไว้สำหรับการพัฒนาบน Mac OS X คุณคอมไพล์ไม่ได้ เพราะต้องใช้ OS X หรือ iOS SDK จาก Apple SDK กำหนดให้ใช้บน Mac เท่านั้น
อย่างไรก็ตาม เนื่องจากเครื่องมือแปลภาษา J2ObjC เป็นโปรแกรม Java เฉพาะ จึงสามารถทำการแปลภาษาบน
ระบบอื่นๆ ใน Linux สคริปต์ j2objc
ควรทำงานโดยไม่มีการเปลี่ยนแปลง หน้าต่าง
การใช้งานต้องมี CygWin หรือการเรียกใช้ Java
โดยตรง หากต้องการเรียกใช้นักแปลที่ไม่มีสคริปต์ j2objc ให้ใช้
ต่อท้ายที่ J2OBJC_DIR
คือไดเรกทอรีที่ฟิลด์
มีการแตกไฟล์แจกจ่าย J2ObjC:
java -Xbootclasspath:\lib\jre_emul.jar -jar J2OBJC_DIR\lib\j2objc.jar [j2objc-flags] [source files]