يفصل مشروع Lightbuild بين تجميع التطبيق ورمز التطبيق: حيث تقوم وحدة التطبيق (أو "هيكل التطبيق") بتجميع تطبيقك، وتحتوي وحدات المكتبة على ميزات تطبيقك وواجهة المستخدم ومنطق النشاط التجاري. توضّح هذه الصفحة تنسيق مشروع Lightbuild الجديد ودور كل وحدة وملف إصدار.
تنسيق المشروع
يحتوي نموذج مشروع Lightbuild التلقائي على ملفات ووحدات الإنشاء التالية:
MyApp/
├── project.lightbuild.yaml # Project-wide settings
├── app/ # App module
│ ├── lightbuild.yaml
│ └── resolved.deps
└── app-core/ # Library module
├── lightbuild.yaml
├── resolved.deps
└── src/ # The app's source code
يحتوي المشروع على ثلاثة ملفات إعدادات تصميم: ملف project.lightbuild.yaml في الدليل الجذري، وملف lightbuild.yaml في كل وحدة. تحتوي كل وحدة أيضًا
على ملف resolved.deps. لمعرفة تفاصيل حول الإعدادات في كل ملف إعداد، يُرجى الاطّلاع على مرجع إعدادات Lightbuild.
وحدة التطبيق
تستخدم مشاريع Lightbuild وحدة تطبيق كأساس لتطبيقك، ويُشار إليها أيضًا باسم "هيكل التطبيق" لأنّها تتولى تجميع المشروع بدون أن تحتوي على أي رمز مصدري. تظل جميع الميزات والمنطق في وحدات مكتبة منفصلة، ويركز هيكل التطبيق على الإعدادات النهائية، مثل التوقيع والتحسين.
يضبط ملف lightbuild.yaml الخاص بوحدة التطبيق type للوحدة على
application ويحدّد كيفية تجميع التطبيق النهائي، بما في ذلك
ما يلي:
- هوية التطبيق: رقم تعريف التطبيق ورمز الإصدار واسم الإصدار
- متطلبات حزمة تطوير البرامج (SDK) للتطبيق: إصدارات
compileSdkوminSdkوtargetSdk - الوحدات التي يعتمد عليها التطبيق، في هذا المثال
app-core
وحدات المكتبة
تحتوي وحدات المكتبة على الرمز البرمجي الذي تجمّعه وحدة التطبيق، مثل ميزات التطبيق ومكوّنات واجهة المستخدم ومنطق النشاط التجاري. في نموذج المشروع الجديد،
تحتوي وحدة مكتبة app-core على ملف MainActivity.kt مع نموذج
الرمز البرمجي.
يضبط ملف lightbuild.yaml الخاص بوحدة المكتبة قيمة type للوحدة على
library. تحدّد وحدات المكتبة إصدارات compileSdk وminSdk، ولكنّها لا تتيح استخدام الإعداد targetSdk. يحدّد ملف lightbuild.yaml الخاص بوحدة المكتبة أيضًا تبعيات الوحدة ومعالِجات KSP والاختبارات.
وحدات تطبيقات متعدّدة
يمكن أن يحتوي المشروع على أكثر من وحدة تطبيق واحدة. لا تتيح Lightbuild استخدام نكهات المنتجات وأنواع الإصدارات المخصّصة بالمعنى التقليدي. بدلاً من ذلك، يمكنك إنشاء وحدة تطبيق منفصلة لكل إصدار من تطبيقك، مثل الإصدارين dev وprod أو الإصدارين free وpaid.
تعتمد كل وحدة تطبيق على وحدات المكتبة التي يحتاجها إصدارها. يمكن لوحدات التطبيق مشاركة وحدات المكتبة، والاعتماد على وحدات مكتبة مختلفة للرموز والإعدادات الخاصة بالإصدار (مثل وحدات حقن التبعية (DI) المنفصلة)، واستبعاد وحدات المكتبة للميزات التي لا يتضمّنها الإصدار.
على سبيل المثال، قد يحتوي مشروع يتضمّن إصدارات مجانية ومدفوعة من تطبيق على الوحدات التالية:
MyApp/
├── project.lightbuild.yaml
├── app-free/ # App module for the free version
├── app-paid/ # App module for the paid version
├── core/ # Library module that both versions use
├── di-free/ # DI module for the free version
├── di-paid/ # DI module for the paid version
└── premium/ # Library module for paid-only features
يعتمد ملف app-paid/lightbuild.yaml الخاص بالإصدار المدفوع على جميع وحدات الإصدار المدفوع:
android:
applicationId: com.example.myapp.paid
dependencies:
module:
- //core
- //di-paid
- //premium
يعتمد ملف app-free/lightbuild.yaml الخاص بالإصدار المجاني على وحدة core المشتركة ووحدة DI الخاصة به، ويستبعد وحدة premium:
android:
applicationId: com.example.myapp.free
dependencies:
module:
- //core
- //di-free
لكل وحدة تطبيق إعداداتها الخاصة، مثل رقم تعريف التطبيق وتوقيع الإصدار، حتى تتمكّن من إنشاء كل إصدار وتثبيته ونشره بشكل منفصل. لإنشاء إصدار محدّد، حدِّد وحدة التطبيق الخاصة به عند تشغيل الأمر build. على سبيل المثال:
lightbuild build app-free
التبعيات التي تم حلّها
تتضمّن كل وحدة في مشروع Lightbuild ملف resolved.deps يسجّل جميع التبعيات التي تم حلّها في الوحدة، بما في ذلك التبعيات المتعدية. تُنشئ أداة Lightbuild هذا الملف تلقائيًا، وبالتالي لا تحتاج إلى حلّ التبعيات بشكل ديناميكي في كل مرة تفتح فيها مشروعك أو تنشئه. يجب عدم تعديل هذا الملف يدويًا.
تحقَّق من ملفات resolved.deps في نظام التحكّم في الإصدارات، بالإضافة إلى ملفات lightbuild.yaml الخاصة بمشروعك.
لقفل التبعيات، على سبيل المثال في إصدار CI، أضِف العلامة --locked-dependencies إلى lightbuild resolve أو lightbuild test. باستخدام هذه العلامة، يتعذّر تنفيذ الأمر إذا لم يتطابق ملف resolved.deps مع تبعيات الوحدة، بدلاً من تعديل الملف:
lightbuild resolve --locked-dependencies
التطبيقات المقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما يكون JavaScript غير مفعَّل
- مرجع إعدادات Lightbuild
- إنشاء مشاريع Lightbuild من سطر الأوامر
- مقارنة بين Lightbuild وKotlin DSL