بنية إصدار Android

تحتوي مشاريع Android على العديد من الملفات وهياكل الأدلة ذات الصلة بالإصدارات تنظيم مصدر تطبيقك وموارده قبل التعمق في تفاصيل التهيئة، سنلقي نظرة على الهيكل العام والأساسيات لما ينتمي إلى كل جزء.

يسرد هذا الجدول الملفات النموذجية في مشروع Android. تُعد أوصاف كل منها الملف أو الدليل ملاحظات حول نوع المحتوى الذي ينتمي إليه. الأفضل الممارسات بمرور الوقت، وقد لا تتطابق هذه الأوصاف مع المشروع التي اكتسبها أو نزّلتها من الإنترنت.

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

مجلد/ملف

استخدام

.gradle/

دليل ذاكرة التخزين المؤقت لمشروع Gradle

مُدار بواسطة Gradle، ويحتوي على توزيع Gradle الذي تم تنزيله، وذاكرة التخزين المؤقت للمشروع، وملفات التهيئة.

لا تغيِّر الملفات في هذا الدليل.

.idea/

البيانات الوصفية لمشروع "استوديو Android"

لا تغيِّر الملفات في هذا الدليل.

Build.gradle(.kts)

ملف الإصدار الجذر

يجب أن يحتوي هذا الخيار فقط على إعلانات المكوّنات الإضافية لإعداد مسار فئة المكوّن الإضافي المشترك في جميع المشروعات الفرعية.

يجب أن يكون أي رمز آخر موجودًا في الإعدادات أو ملفات إنشاء على مستوى المشروع المتداخلة.

gradle.property

إعداد تنفيذ Gradle

يحتوي على خصائص Gradle، ويتحكم في جوانب بيئة إنشاء Gradle، مثل حجم الذاكرة والتخزين المؤقت والتنفيذ المتوازٍ.

يتم تحديد بعض خصائص Android المؤقتة هنا لتقليل التغييرات على AGP DSL عند إضافتها وإزالتها لاحقًا.

غرادلو (لينكس، ماكنتوش)

gradlew.bat (نظام التشغيل Windows)

ملف تضمين Gradle

يعمل هذا الإجراء على بدء تشغيل إصدارك من خلال تنزيل توزيع Gradle ثم إعادة توجيه الأوامر إليه. ويتيح لك ذلك تنفيذ إصدارات بدون الحاجة إلى تثبيت Gradle مسبقًا.

Local.property

ضبط الجهاز على الجهاز

يحتوي على خصائص ذات صلة بالجهاز المحلي، مثل موقع حزمة تطوير البرامج (SDK) لنظام التشغيل Android.

استبعاد هذا الملف من عنصر تحكّم المصدر

settings.gradle(.kts)

إعداد إصدار Gradle

يحتوي على معلومات إصدار عمومية لإعداد Gradle وإعداد المشروع، مثل

  • اسم المشروع
  • قائمة بالمشاريع الفرعية المُراد تضمينها في هذا الإصدار
  • مواصفات المستودع لتحديد موقع المكونات الإضافية والتبعيات
  • عمليات استيراد "كتالوج الإصدارات" الخارجية.

gradle/

↳ libs.versions.toml

قائمة الإصدارات

تحدِّد هذه السياسة المتغيّرات للتبعيات والمكوّنات الإضافية المستخدَمة في الإصدار. يمكنك تحديد الإصدارات التي تريد استخدامها هنا، مما يضمن الاتساق عبر جميع المشروعات الفرعية في مشروعك.

برنامج تضمين ↳/

↳ gradle‐wrapper.jar

عملية بدء تشغيل Gradle Bootstrapping قابلة للتنفيذ

يتم تنزيل توزيع Gradle المحدد (إذا لم يكن موجودًا)، وتشغيله مع تمرير أي وسيطات

↳ gradle‐wrapper.Properties

إعداد Gradle wrapper

تحدِّد هذه السياسة مكان تنزيل توزيع Gradle (بما في ذلك الإصدار المطلوب استخدامه).

app/

دليل المشروع الفرعي

يمكن للمشاريع الفرعية (المعروفة باسم "الوحدات" في "استوديو Android") إنشاء تطبيقات أو مكتبات وقد تعتمد على مشاريع فرعية أخرى أو تبعيات خارجية.

app هو الاسم التقليدي للمشروع الفرعي لتطبيق المستوى الأعلى (ولكنه ليس الاسم المطلوب). تمتلك المشاريع الفرعية الأخرى بنى متشابهة بأسماء مختلفة.

يمكن أن يكون أي دليل مشروعًا فرعيًا، ويجب أن يحتوي على ملف build.gradle(.kts) على الأقل، وأن يتم تضمينه في الإصدار باستخدام settings.gradle(.kts).

↳ build.gradle(.kts)

ملف إنشاء على مستوى المشروع الفرعي

إعلان كيفية بناء هذا المشروع الفرعي. يتطلب كل مشروع فرعي ملف إصدار منفصل، ويجب أن يحتوي على

  • المكونات الإضافية المستخدمة لإنشاء هذا المشروع الفرعي
  • حظر الإعدادات التي تطلبها المكوّنات الإضافية
  • التبعيات (المكتبات والمنصات) المضمنة عند إنشاء هذا المشروع الفرعي

يجب عدم تضمين منطق الإصدار (مثل تعريفات دالة Kotlin أو شروطها) أو تصريحات المهام في ملفات الإصدار. ويجب تضمين منطق الإنشاء ومهامه داخل المكوّنات الإضافية فقط.

↳ src/

ملفات مصدر المشروع الفرعي

تجمِّع ملفات المصدر (رمز التطبيق والمراجع) في مجموعات المصادر. تحتوي مجموعة المصادر main على ملفات مصدر مشتركة بين جميع خيارات المنتج، بينما تحتوي مجموعات المصادر الأخرى على ملفات مصدر فريدة لصيغة واحدة.

↳ الرئيسي/

مجموعة المصادر الرئيسية

رمز المصدر والموارد المشتركة في جميع صيغ الإصدار. يعمل هذا المصدر كقاعدة لجميع عمليات الإنشاء، في حين تضيف مجموعات مصادر أخرى أكثر تحديدًا إلى هذا المصدر أو تلغيه.

↳ java/

↳ kotlin/

رمز المصدر بلغة Kotlin وJava

يمكن أن يحتوي الدليل java على رمز مصدر مختلط بلغة Java وKotlin. إذا كان هذا المشروع الفرعي يحتوي على رمز Kotlin فقط، يمكنك إعادة تسمية هذا الدليل kotlin.

Android
وهو نظام أساسي Kotlin أولاً. يتوفر مصدر Java، ولكن واجهات برمجة التطبيقات الجديدة تستهدف لغة Kotlin. ننصح باستخدام لغة Kotlin لجميع الرموز الجديدة والتحديثات الرئيسية للرموز الحالية.

↳ res/

ملفات موارد Android

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

↳ ملف AndroidManifest.xml

البيانات الوصفية لتطبيقات Android

القراءة من خلال مدير حزمة Android لإخبار النظام

  • والمكونات التي يحددها تطبيقك
  • الأذونات اللازمة
  • توافق الجهاز
  • القيود المفروضة على نظام Android الأساسي

↳ androidTest/

اختبار الجهاز مجموعة المصادر

يحتوي على مصدر للاختبارات التي سيتم إجراؤها على جهاز أو محاكي يعمل بنظام التشغيل Android. بإمكان هذه الاختبارات الوصول إلى بيئة Android حقيقية، ولكن تنفيذها أبطأ من الاختبارات المضيفة.

جميع الملفات المصدر في مجموعة المصادر main متاحة للاستخدام بواسطة المصدر ضمن androidTest.

↳ test/

مجموعة المصادر لاختبار المضيف

يحتوي على مصدر للاختبارات التي يتم إجراؤها محليًا في JVM، مقارنةً بالاختبارات التي يتم إجراؤها على الجهاز. ويتم إجراء هذه الاختبارات بشكل أسرع بكثير من اختبارات الأجهزة. ومع ذلك، فإن أي استدعاءات للنظام (بما في ذلك دورات الحياة التي تُشغِّل تطبيقك) يجب أن يتم تقليدها أو تزييفها أو محاكاتها أو محاكاتها.

جميع ملفات المصدر في المجموعة المصدر main متاحة للاستخدام حسب المصدر قيد الاختبار.

↳ proguard-rules.pro

قواعد إعداد R8

تحدِّد هذه السياسة قواعد التحكّم في تضييق نطاق التطبيقات والتحسين وإخفاء مفاتيح فك التشفير. يزيل R8 الرموز والموارد غير الضرورية، ويحسّن أداء وقت التشغيل ويقلل بشكل أكبر من الرمز عن طريق إعادة تسمية المعرّفات.