תחילת העבודה

קודם כול, מקבלים את המקור ליצור אותו.

כדי לתרגם קובץ מקור ב-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 compiler). כדי ליצור את קובץ ההפעלה:

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

j2objcc מעביר את האפשרויות שצוינו לגבי המהדר של Objective-C. לדוגמה, כדי לתרגם ולבנות עם סמלים של ניפוי באגים, משתמשים בדגל -g:

j2objcc -g -o hello Hello.m

שאלות נפוצות

כשמפעילים את j2objcc, מקבלים תלונה על כך ש-"foundation/Foundation.h" לא נמצא.

אם 'הידור' נכשל כי הבסיס/Foundation.h לא נמצאו, הבעיה הוא שה-SDK ל-iOS לא נמצא (שם הכותרת).

  1. מוודאים ש-Xcode מותקן.
  2. כדי להתקין את כלי שורת הפקודה, צריך להריץ את xcode-select --install.
  3. מריצים את הפקודה xcodebuild -showsdks, שאמורה להציג לפחות ערכת SDK אחת עבור OS X, iOS, ובסימולטור של iOS.
  4. אם זה נכשל, מוחקים את אפליקציית 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]