הבניין J2ObjC

דרישות

  • מערכת Apple Mac OS X
  • הגרסה העדכנית של Xcode
  • ‫JDK 21 מותקן
  • Apache Maven
  • (מומלץ אבל לא חובה) מקור Google Protocol Buffer

הגדרה ב-Mac

  • מריצים את הפקודה הבאה כדי להתקין את כלי שורת הפקודה של Xcode:
sudo xcode-select --install
  • הוספה ל.bash_profile:
export JAVA_HOME=`/usr/libexec/java_home -v 21`
  • אם Maven לא מותקן (אפשר לנסות להריץ את הפקודה mvn -version במסוף), משתמשים ב-Homebrew:
brew install maven

יצירת Fork של פרויקט J2ObjC

כדי ליצור Fork של פרויקט J2ObjC, פותחים את הדף הראשי שלו ולוחצים על הלחצן Fork:

פיצול

בוחרים את שם החשבון ב-GitHub, והמזלג ייווצר תוך כמה שניות.

לאחר מכן, משכפלים עותק של הפיצול למערכת המקומית לצורך פיתוח. קודם, לוחצים על [לחצן שיבוט או הורדה], ואז לוחצים על הלחצן 'העתקה ללוח':

שכפול

לאחר מכן משכפלים לספרייה מקומית:

git clone (Command-V)  # Paste the copied URL

התקנה של protobuf ו-abseil

כדי לבנות את J2ObjC, צריך להתקין את protobuf C++.

כדי להתקין את חבילת ה-protobuf הבינארית, משתמשים ב-Homebrew:

brew install protobuf

הגרסה של Protobuf C++‎ תלויה עכשיו בספריית Abseil, ולכן צריך להתקין גם אותה:

brew install abseil

צריך להגדיר את PROTOBUF_ROOT_DIR לנתיב הבסיס שבו מותקן protobuf. בדרך כלל זה הנתיב שמוגדר כברירת מחדל ב-Homebrew‏ /usr/local. מוסיפים את השורות הבאות לקובץ .bash_profile:

export PROTOBUF_ROOT_DIR=/usr/local # or your custom Homebrew dir

כדי לאמת, מריצים את $PROTOBUF_ROOT_DIR/bin/protoc --version.

בניית J2ObjC

כדי לבצע build משורת פקודה בחלון Terminal, מריצים את הפקודה:

# Build just the translator and libraries
make dist

# Build the protocol buffer compiler and runtime for J2ObjC
make protobuf_dist

# Build everything that is included in the project's
distribution bundles
make all_dist

בדיקה של J2ObjC

כדי לבדוק משורת פקודה בחלון Terminal, מריצים את הפקודה:

# Run translator and library unit tests
make test

# Run all unit tests, including for protocol buffers
make test_all

ניקוי של Build

# Remove all files generated by the build
make clean

פיתוח גרסאות build מקביליות

גרסת ה-build של J2ObjC תומכת בגרסאות build מקבילות, שמצוינות באמצעות הדגל -j<n>, כאשר n הוא המספר המקסימלי של משימות מקבילות. הערך המקסימלי תלוי במהירות המערכת. מומלץ להתחיל עם -j4. כדי לקצר את זמני הבנייה, אפשר להגדיל את המספר אם המערכת יכולה להתמודד עם זה, ולהקטין אותו אם הפעולה make נכשלת בגלל שגיאות מערכת.

יצירת ארכיטקטורות iOS ב-32 ביט

ארכיטקטורות iOS‏ 32 ביט (iphone ו-simulator) לא נוצרות כברירת מחדל. כדי לבצע build של j2objc באמצעות הארכיטקטורות האלה, צריך קודם לציין אותן במשתנה הסביבה J2OBJC_ARCHS:

$ export J2OBJC_ARCHS="iphone simulator"
$ make -j8 all_dist

בדרך כלל, אפשר לציין קבוצת משנה של ארכיטקטורות נתמכות כדי להאיץ את הבנייה המקומית, על ידי ציון רק הארכיטקטורות שהאפליקציה צריכה. כדי ליצור רק את iOS‏ (iphone64)‎‏ 64 ביט ואת הסימולטור המשויך אליו (simulator64), לדוגמה, מגדירים את J2OBJC_ARCHS="iphone64 simulator64" לפני שמריצים את הפקודה make.

יצירת הפצה מלאה

צוות j2objc כבר לא מפרסם הפצות מוכנות מראש ב-GitHub בגלל מגבלות גודל הקובץ, אבל עדיין אפשר להשתמש בסקריפט 'build everything in one step':

$ scripts/build_distribution.sh HEAD-<current-date> $PROTOBUF_ROOT_DIR

הרצת הסקריפט הזה נמשכת זמן רב כי הוא בונה כל ארכיטקטורה לכל חבילת j2objc. עם זאת, הוא שימושי מאוד אם יש כשלים כלליים ב-build, כי הוא מתבצע רק עם קבוצת המינימום של משתני הסביבה. אם הסקריפט build_distribution מצליח אבל שלבי ה-build הרגילים לא, צריך לבדוק אם יש משתני סביבה מקומיים שהוגדרו בצורה שגויה.