ساخت J2ObjC

الزامات

  • سیستم عامل اپل مک او اس ایکس
  • آخرین نسخه Xcode
  • JDK 21 نصب شده است
  • آپاچی ماون
  • (توصیه می‌شود اما الزامی نیست) منبع بافر پروتکل گوگل

راه‌اندازی مک

  • ابزارهای خط فرمان Xcode را با اجرای دستور زیر نصب کنید:
sudo xcode-select --install
  • به .bash_profile خود اضافه کنید:
export JAVA_HOME=`/usr/libexec/java_home -v 21`
  • اگر Maven نصب نشده است ( mvn -version در ترمینال امتحان کنید)، از Homebrew استفاده کنید:
brew install maven

ایجاد یک انشعاب از پروژه J2ObjC

برای انشعاب پروژه J2ObjC، صفحه اصلی آن را باز کنید و روی دکمه انشعاب کلیک کنید:

چنگال

نام حساب گیت‌هاب خود را انتخاب کنید، و فورک در عرض چند ثانیه ایجاد خواهد شد.

در مرحله بعد، یک کپی از fork خود را برای توسعه در سیستم محلی خود کپی کنید. ابتدا روی [دکمه Clone or download] کلیک کنید، سپس روی دکمه Copy to Clipboard کلیک کنید:

کلون

سپس در یک دایرکتوری محلی کلون کنید:

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 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

برای آزمایش از طریق خط فرمان در پنجره ترمینال، دستور زیر را اجرا کنید:

# Run translator and library unit tests
make test

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

تمیز کردن یک ساختمان

# Remove all files generated by the build
make clean

ساخت‌های موازی

ساخت J2ObjC از ساخت‌های موازی پشتیبانی می‌کند که با استفاده از پرچم -j<n> مشخص می‌شوند، که در آن n حداکثر تعداد وظایف همزمان است. حداکثر به سرعت سیستم شما بستگی دارد؛ پیشنهاد می‌کنیم با -j4 شروع کنید. اگر سیستم شما می‌تواند آن را مدیریت کند، تعداد را افزایش دهید تا زمان ساخت کوتاه شود و اگر به دلیل خطاهای سیستمی با شکست مواجه شد، آن را کاهش دهید.

ساخت معماری‌های ۳۲ بیتی iOS

معماری‌های ۳۲ بیتی iOS ("iphone" و "simulator") به طور پیش‌فرض ساخته نشده‌اند. می‌توانید j2objc را با استفاده از این معماری‌ها و با مشخص کردن آنها در متغیر محیطی J2OBJC_ARCHS بسازید:

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

مشخص کردن زیرمجموعه‌ای از معماری‌های پشتیبانی‌شده به‌طورکلی می‌تواند برای سرعت بخشیدن به ساخت‌های محلی، تنها با مشخص کردن معماری‌هایی که برنامه شما نیاز دارد، مورد استفاده قرار گیرد. برای مثال، برای ساخت فقط iOS 64 بیتی ("iphone64") و شبیه‌ساز مرتبط با آن ("simulator64")، قبل از اجرای make، J2OBJC_ARCHS="iphone64 simulator64" را تعریف کنید.

ساخت توزیع کامل

اگرچه تیم j2objc به دلیل محدودیت‌های حجم فایل، دیگر توزیع‌های از پیش ساخته شده را در GitHub منتشر نمی‌کند، اما اسکریپت «ساخت همه چیز در یک مرحله» هنوز هم قابل استفاده است:

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

اجرای این اسکریپت زمان زیادی می‌برد زیرا هر معماری برای هر بسته j2objc ساخته شده است. با این حال، اگر در ساخت کلی با شکست مواجه شویم، بسیار مفید است، زیرا فقط با حداقل مجموعه متغیرهای محیطی ساخته می‌شود. اگر اسکریپت build_distribution موفقیت‌آمیز باشد اما مراحل ساخت عادی موفقیت‌آمیز نباشند، بررسی کنید که آیا متغیرهای محیطی محلی به اشتباه تنظیم شده‌اند یا خیر.