كيفية تعيين موارد Java لموارد iOS

ما المقصود بموارد Java

موارد Java هي ملفات بيانات يتم تجميعها مع تطبيقات ومكتبات Java. ويتم تحميل هذه الموارد في وقت التشغيل إما Class.getResource(String name)، ما يؤدي إلى عرض java.net.URL أو Class.getResourceAsStream(String name) لعرض java.io.InputStream. يتم استخدام الطريقة getResourceAsStream() عادةً عندما يكون من المتوقّع أن يكون مورد ما متاحًا، لأنه يطرح IOException إذا لم يكن متوفرًا. تعرض الطريقة getResource() قيمة فارغة إذا لم يكن المورد موجودًا، لذا من المفيد اختبار الموارد الاختيارية.

أسماء الموارد ومساراتها

يحدد J2ObjC موقع الموارد من خلال البحث في الحزمة الرئيسية للتطبيق ([NSBundle mainBundle])، باستخدام المسار النسبي أو المطلق للمورد:

المسارات النسبية

إن الطريقة المفضلة لتحديد مسارات الموارد هي استخدام المسارات النسبية. لا تبدأ المسارات النسبية بشرطة مائلة للأمام ('/'). عند قراءة مورد ذي مسار نسبي، يتم تعديل اسم الحزمة للفئة، مع تغيير النقاط ('.') في اسم الحزمة إلى شُرط مائلة للأمام ('/')، ثم يتم إلحاق المسار النسبي المحدَّد في استدعاء طريقة Class.getResource(String name) أو Class.getResourceAsStream(String name) بمسار الحزمة.

على سبيل المثال، إذا كان التطبيق يحتوي على فئة foo.bar.Mumble، يكون المسار الأساسي لجميع الموارد المرتبطة بالفئات في هذه الحزمة هو /foo/bar. عند استدعاء Mumble.class.getResource("oops/error.jpg")، يتم إلحاق oops/error.jpg بمسار الحزمة، وبالتالي يكون مسار مواردها الكامل هو /foo/bar/oops/error.jpg.

المسارات المطلقة

يمكن أيضًا الوصول إلى المورد باستخدام مسار مطلق من خلال بدء اسم المورد بشرطة مائلة للأمام ('/'). ويتم تجاهل أسماء الحزم، لذا يحدد J2ObjC المسارات المطلقة في الحزمة الرئيسية للتطبيق باستخدام المسارات تمامًا كما هو محدد في مراجع Class.getResource(String name) أو Class.getResourceAsStream(String name) في مصادر Java للتطبيق. في المثال أعلاه، يحتوي Mumble.class.getResource("/oops/error.jpg") على مسار موارد كامل، وهو /oops/error.jpg، مع تجاهل اسم الحزمة foo.bar.

إضافة موارد إلى تطبيق iOS

لإضافة ملفات موارد إلى تطبيق iOS في Xcode، افتح علامة التبويب "مراحل الإنشاء" لاستهداف الإصدار. بعد ذلك:

  • انقر على الرمز + (ضمن علامة التبويب "إعدادات عامة") واختَر "مرحلة جديدة لنسخ الملفات".
  • حدد "الموارد" كوجهة (وليس موارد جافا).
  • حدد دليل المورد(الموارد).
  • اختَر + وأضِف الملفات إلى القائمة.

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

مثال

يحتوي مشروع JreEmulation على تطبيق "JRE JUnit Tests" الذي يشغّل اختبارات الوحدات الخاصة بتلك المكتبة. اختَر مراحل إنشاء هذا الهدف للاطّلاع على عدة مراحل لنسخ الملفات، واحدة لكل مسار نسبي تستخدمه موارده. هنا، تُحمّل ClassTest.java المورد نفسه باستخدام مسار مطلق أولاً، ثم مسارًا نسبيًا. يتم تضمين مورد الاختبار باستخدام مرحلة إصدار الملفات هذه:

موارد Xcode