قواعد إنشاء Xcode

تدعم معظم أنواع مشاريع Xcode قواعد الإصدار، التي تسمح للمطورين بتعديل وكيف يتم إنشاء أنواع الملفات الحالية، وتحديد كيفية إنشاء أنواع الملفات الجديدة. تم تصميم النصوص البرمجية J2ObjC عمدًا للتوصيل بأنظمة إنشاء مثل Xcode.

يُعد مشروع j2objc- sample-reversi مثال على كيفية إضافة مصادر Java إلى لعبة iOS بسيطة.

يتطلب الإصدار البسيط تحديث إعدادات الإصدار، ثم إضافة قاعدة إصدار J2ObjC.

تعديل إعدادات الإصدار

  1. انقر على المشروع في Project Navigator (أداة التنقّل في المشروع) لفتح محرِّر المشروع وتأكَّد من تم تحديد هدف التطبيق.
  2. انقر على علامة التبويب إعدادات الإصدار.
  3. يمكنك ربط مكتبة محاكاة JRE (jre_emul) من خلال إضافة -ljre_emul إلى علامات ربط أخرى. من المفترض أن يظهر على النحو التالي: ربط مكتبة محاكاة JRE في Xcode
  4. انقر على + لاختيار إضافة إعداد من تحديد المستخدم.
  5. أدخِل اسمًا للإعداد J2OBJC_HOME واضبط قيمته على موقع J2ObjC. من المفترض أن يؤدي هذا المجلد الناتج عن فك ضغط الإصدار المضغوط أو المجلد j2objc/dist إذا أجريت التجميع من المصدر وكان الجذر هو j2objc.
  6. ضمن مسارات البحث، عدِّل ما يلي:
    • مسارات بحث الإطار إضافة ${J2OBJC_HOME}/frameworks
    • أضِف ${J2OBJC_HOME}/lib في مسارات البحث في المكتبة (لكل إعدادات عملية الإنشاء).
    • أضِف مسارات البحث في عناوين المستخدمين ${J2OBJC_HOME}/include.
  7. أكِّد إعداداتك من خلال البحث عن "J2OBJC_HOME". من المفترض أن يظهر لك محتوى مشابه لما يلي: إعدادات إصدار Xcode

إضافة قاعدة بناء J2ObjC

  1. حدِّد الدليل الجذري لملفات مصدر 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 بجانب مصادر الهدف-ج. يمكنك بعد ذلك سحب هذا المجلد إلى مشروع 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، أدخِل المسار الكامل المستخدَم عند وإدراجها في نافذة طرفية.

  2. انقر على المشروع في Project Navigator (أداة التنقّل في المشروع) لفتح محرِّر المشروع وتأكَّد من تم تحديد هدف التطبيق.

  3. انقر على علامة التبويب إنشاء القواعد.

  4. انقر على + لإضافة قاعدة إصدار.

  5. بالنسبة إلى خيار المعالجة للقاعدة الجديدة، اختَر "ملفات مصدر جافا". يجب أن يكون الخيار استخدام هو "نص برمجي مخصص:".

  6. في مربّع نص النص البرمجي المخصّص، أضِف ما يلي (تذكر استبدال $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};
    
  7. في لوحة "ملفات الإخراج"، انقر على الزر + وأضِف: ${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.h.

  8. انقر على الزر + مرة أخرى وأضِف ${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.m.

عند الانتهاء، يُفترض أن تبدو لوحة الإعدادات على النحو التالي (ملاحظة: اعتبارًا من 10.2، لا يزال Xcode يحدد المتغير DERIVED_Files_DIR هو نفسه المتغير DERIVED_FILE_DIR للتوافق مع الأنظمة القديمة):

قواعد إنشاء Xcode

ربط المكتبات الإضافية

تحتاج خطوة إنشاء الرابط (مرحلة إنشاء "Link Binary With Libraries" في Xcode) إلى علامات خاصة بـ J2ObjC، والتي تختلف بناءً على كيفية استخدام تطبيقك لفئات Java المترجمة. للحصول على قائمة كاملة، راجِع إعدادات الروابط المطلوبة. إليك بعض الأمثلة أمثلة للمكتبات الإضافية التي قد تحتاج إلى ربطها:

  • لاستخدام حزمة java.util.zip، يجب ربط مكتبة libz.dylib عن طريق إضافة -ljre_zip إلى علامات الروابط الأخرى.
  • لإنشاء تجزئة آمنة، يجب إضافة إطار عمل الأمان إلى مشروعك.

تصحيح أخطاء الإصدار

إذا أبلغ Xcode عن تعذُّر إنشاء الإصدار باتّباع هذه الخطوات، افتح أداة استكشاف المشاكل. والنقر فوق الخطأ لفحص التفاصيل. سيعرض هذا تفاصيل سطر الأوامر تم توقيعه. في ما يلي بعض الأخطاء الشائعة:

  • لا يمكن حلّ الفئة: على الأرجح، كانت قيمة $source-path التي استخدمتها غير صحيحة. ابحث عن الخيار -sourcepath في الأمر الذي تم تنفيذه وتأكَّد من أنّه يشير إلى الدليل الجذري لملفات مصدر Java.

  • "JreEmulation.h" لم يتم العثور على الملف - على الأرجح ستكون المشكلة مشكلة بحث في عناوين المستخدم "المسارات". ابحث في أمر الإصدار عن الخيار -I الذي يتضمّن المسار. إذا بدا الأمر على ما يرام، انسخ المسار (وليس -I) وفي نافذة طرفية، نفِّذ ls مع هذا المسار للتحقّق منه. ليس خطأ إملائيًا.

  • "_IOSClass_FromClass" ، المُشار إليها من: أو "_OBJCClass$_Java"، أو المكتبة مسارات البحث غير صحيحة أو نسيت ربط مكتبة محاكاة JRE من خلال الإعداد غير ذلك يُعلم الرابط عن -ljre_emul. قد تحتاج أيضًا إلى ربط مكتبات إضافية.

  • الرموز غير المحدّدة: _iconv* - رابط في مكتبة الرموز المطلوبة

إذا استمرّت المشكلة، يمكنك طلب مجموعة مناقشة j2objc.