רוב סוגי הפרויקטים של Xcode תומכים בכללי build שמאפשרים למפתחים לשנות אופן הבנייה של סוגי קבצים קיימים, והאופן שבו נוצרים סוגי קבצים חדשים. הסקריפטים של J2ObjC תוכננו בכוונה להתחבר למערכות build כמו Xcode.
פרויקט j2objc-sample-reversi הוא דוגמה שממחישה איך להוסיף מקורות Java למשחק פשוט ב-iOS.
כדי להשתמש בגרסת build מינימלית, צריך לעדכן את הגדרות ה-build ואז להוסיף כלל build מסוג J2ObjC.
עדכון הגדרות ה-build
- לוחצים על הפרויקט ב-Project Navigator כדי לפתוח את Project Editor ולוודא נבחר יעד האפליקציה.
- לוחצים על הכרטיסייה Build Settings (הגדרות Build).
- מקשרים את ספריית האמולציה של JRE (
jre_emul
) על ידי הוספה של-ljre_emul
ל-Other Linker Banners. זה אמור להיראות כך: - לוחצים על הסמל + כדי לבחור באפשרות Add User-Configured Setting (הוספת הגדרה בהגדרת משתמש).
- נותנים להגדרה את השם
J2OBJC_HOME
ומגדירים את הערך שלה למיקום של J2ObjC. הפעולה הזו להיות התיקייה שנובעת מפריסת קובץ ה-ZIP של קובץ ה-ZIP. או התיקייהj2objc/dist
, אם הרכבתם מהמקור והרמה הבסיסית (root) שלכם היאj2objc
. - בקטע נתיבי חיפוש משנים את הפרטים הבאים:
- Framework Search Paths מוסיף
${J2OBJC_HOME}/frameworks
- נתיבי חיפוש בספרייה מוסיפים
${J2OBJC_HOME}/lib
(לכל הגדרת build). - נתיבי חיפוש של כותרות משתמשים מוסיפים
${J2OBJC_HOME}/include
.
- Framework Search Paths מוסיף
- יש לאשר את ההגדרות על ידי חיפוש של
J2OBJC_HOME
. אתם אמורים לראות משהו כזה:
הוספת כלל Build של J2ObjC
מאתרים את ספריית השורש של קובצי המקור ב-Java, שאותה ניתן לקרוא
$source-root
תיקיית השורש היא הספרייה שמכילה את הקובץ ברמה העליונה של קובצי המקור שלכם.אם אתם משתמשים ב-Git ורוצים לשלוף את קובצי ה-Java שלכם מפרויקט git אחר, תוכלו מוסיפים מודול משנה שעוקב אחרי הפרויקט באמצעות ה-Java מקורות. לדוגמה, נניח שפרויקט ה-Xcode (xcodeproj) נמצא ב-
~/dev/MyProject
ואז כנראה שיש עוד ספרייהMyProject
עם מקור Objective-C. ב ספריית~/dev/MyProject/MyProject
מריצים אתgit submodule add git@github.com:user/javaproject
כדי יוצרים ספריית~/dev/MyProject/MyProject/javaproject
עם המקור לפרויקט Java לצד המקורות של Objective-C. לאחר מכן תוכלו לגרור את התיקייה אל פרויקט Xcode שלכם. בקבוצהMyProject
, שבה Xcode משקף את מערכת הקבצים שלכם.${PROJECT_DIR}/MyProject/javaproject/src
הוא$source-root
.אם מקורות ה-Java נמצאים בקבוצה או בספרייה בפרויקט Xcode, הערך של
$source-root
${PROJECT_DIR}/__group_or_directory_name__
.אם יש לכם ספק, לחצו לחיצה ימנית על הקבוצה או הספרייה ובחרו באפשרות 'הצגה ב-Finder' כדי לראות את ולהשתמש בנתיב המוחלט.
לדוגמה, אם יש לכם חבילת Java
foo.bar
בספרייה בשם~/myproject/src
, קובצי ה-Java של החבילה צריכים להיות ב-~/myproject/src/foo/bar/**.java
–~/myproject/src
היא תיקיית השורש של הפרויקט.אם קובצי המקור של Java הם חיצוניים לפרויקט Xcode, יש להזין את הנתיב המלא שבו נעשה שימוש כאשר להציג אותן בחלון Terminal.
לוחצים על הפרויקט ב-Project Navigator כדי לפתוח את Project Editor ולוודא נבחר יעד האפליקציה.
לוחצים על הכרטיסייה יצירת כללים.
לוחצים על הסמל + כדי להוסיף כלל build.
לאפשרות תהליך של הכלל החדש, בוחרים באפשרות 'קובצי מקור ב-Java'. האפשרות שימוש צריכה להיות 'סקריפט בהתאמה אישית:'.
בתיבת הטקסט של הסקריפט המותאם אישית, מוסיפים את הטקסט הבא (חשוב לזכור להחליף את
$source-root
):if [ ! -f "${J2OBJC_HOME}/j2objc" ]; then echo "J2OBJC_HOME is not correctly defined, currently set to '${J2OBJC_HOME}'"; exit 1; fi; "${J2OBJC_HOME}/j2objc" -d ${DERIVED_FILE_DIR} -sourcepath "$source-root" --no-package-directories -g ${INPUT_FILE_PATH};
בחלונית 'קובצי פלט', לוחצים על הלחצן + ומוסיפים:
${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.h
.לוחצים שוב על הלחצן + ומוסיפים
${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.m
.
בסיום, חלונית ההגדרות אמורה להיראות בערך כך (הערה: החל מ-10.2, Xcode עדיין מגדיר את המשתנה DERIVED_FILES_DIR זהה ל-DERIVED_FILE_DIR לצורך תאימות לאחור):
קישור ספריות נוספות
הצרכים של שלב ה-build של הקישור (שלב ה-build של "Link Binary With Libraries" ב-Xcode) דגלים ספציפיים ל-J2ObjC, שמשתנים בהתאם לאופן שבו האפליקציה משתמשת במחלקות Java מתורגמות. רשימה מלאה מופיעה במאמר הגדרות הקישור הנדרש. הנה כמה זוגות דוגמאות לספריות נוספות שאולי צריך לקשר:
- כדי להשתמש בחבילת
java.util.zip
, עליך לקשר את הספרייה libz.dylib על ידי הוספה של-ljre_zip
לסימונים של מקשר אחר. - כדי ליצור גיבוב (hash) מאובטח, צריך להוסיף את Security Framework לפרויקט.
ניפוי באגים ובעיות build
אם Xcode מדווח על כשל build לפי השלבים האלה, פותחים את Issue Navigator ללחוץ על שגיאה כדי לבדוק את הפרטים. יוצגו הפרטים של שורת הפקודה בוצעה הצהרה. ריכזנו כאן כמה שגיאות נפוצות:
לא ניתן לפתור את הבעיה Class - סביר להניח ש
$source-path
שבו השתמשת שגוי. צריך לחפש את האפשרות-sourcepath
בפקודת ההרצה ולוודא שהיא מפנה אל בתיקיית השורש של קובצי המקור ב-Java."JreEmulation.h" הקובץ לא נמצא - סביר להניח שהבעיה היא שגיאה שגויה בחיפוש כותרות של משתמשים הערך 'נתיבים'. מחפשים בפקודת ה-build את האפשרות
-I
עם הנתיב. אם זה נראה בסדר, מעתיקים את הנתיב (לא -I) ובחלון הטרמינל מריצים את הפקודהls
עם הנתיב הזה כדי לאמת אותו אינה שגיאת הקלדה."_IOSClass_FromClass", מקור הפנייה: או "_OBJCCLASS$_Java" - הספרייה מסלולי החיפוש שגויים או ששכחתם לקשר את ספריית האמולציה של JRE באמצעות ההגדרה אחר סימוני מקשר אל
-ljre_emul
. יכול להיות שתצטרכו לקשר גם ספריות נוספות.סמלים לא מוגדרים: _iconv* – קישור בספריית סמל v חובה.
אם הבעיות לא נפתרות, אפשר לפנות ל j2objc-Conversation group.