التثبيت والتكوين
استنساخ المستودع
git clone <url-del-repositorio>
cd AppFinal
يحتوي الدليل الجذر على غلاف Gradle (gradlew / gradlew.bat) ووحدة التطبيق الفردية (:app).
هيكل المشروع
AppFinal/
├── app/
│ ├── build.gradle.kts # Dependencias y configuración del módulo
│ ├── google-services.json # Credenciales Firebase (no incluir en repos públicos)
│ ├── dataconnect/ # Esquemas y queries de Firebase Data Connect
│ │ ├── dataconnect.yaml
│ │ ├── schema/
│ │ │ └── schema.gql
│ │ └── default_connector/
│ │ ├── connector.yaml
│ │ └── queries.gql
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/com/example/trainium2/
│ │ ├── AppConfig.kt # Constantes de configuración
│ │ ├── DbConstants.kt # Nombres de tablas y columnas
│ │ ├── SecureSessionManager.kt
│ │ ├── SupabaseClient.kt
│ │ ├── DataConnectClient.kt
│ │ ├── ThemeManager.kt
│ │ ├── ImageUtils.kt
│ │ ├── MainActivity.kt
│ │ ├── *Screen.kt # Composables de pantalla
│ │ ├── data/repository/ # Repositorios
│ │ ├── di/ # ServiceLocator
│ │ ├── models/ # Data classes
│ │ └── ui/ # Tema, ViewModels y componentes
│ └── res/
│ ├── drawable/ # Imágenes de máquinas y fondos
│ ├── raw/ # video_app.mp4 (splash)
│ └── values/
├── build.gradle.kts # Configuración raíz (plugins)
├── settings.gradle.kts # Nombre del proyecto e inclusión del módulo
├── gradle.properties # JVM args y flags de AndroidX
├── setup_database.sql # Script SQL de referencia
├── bs.sql # Script SQL alternativo
└── gradlew / gradlew.bat
تكوين بيانات اعتماد Supabase
تتمركز بيانات اعتماد Supabase في AppConfig.kt:
object AppConfig {
const val SUPABASE_URL = "https://<tu-proyecto>.supabase.co"
const val SUPABASE_KEY = "<tu-anon-key>"
// ...
}
استبدل القيم بتلك الموجودة في مشروع Supabase الخاص بك. استخدم anon key (المفتاح العام)، ولا تستخدم service_role key أبدًا في تطبيق العميل.
يقرأ المفرد SupabaseClient.kt هذه الثوابت من AppConfig عند التهيئة:
object SupabaseClient {
val client = createSupabaseClient(
supabaseUrl = AppConfig.SUPABASE_URL,
supabaseKey = AppConfig.SUPABASE_KEY
) {
install(Postgrest)
install(Auth)
}
}
تكوين Firebase
- قم بالوصول إلى وحدة تحكم Firebase وحدد المشروع المقابل.
- انتقل إلى إعدادات المشروع > عام > تطبيقاتك.
- قم بتنزيل الملف
google-services.json. - انسخ الملف إلى
app/google-services.json.
يقوم البرنامج الإضافي com.google.gms.google-services المُعلن عنه في app/build.gradle.kts بمعالجة هذا الملف تلقائيًا أثناء التجميع. يتم أيضًا مركزية ثوابت Firebase (مفتاح API ومعرف التطبيق وعنوان URL لـ Data Connect) في AppConfig.kt.
تجميع المشروع
من أندرويد ستوديو
- افتح ستوديو أندرويد.
- حدد ملف > فتح وأشر إلى الدليل الجذر
AppFinal/. - انتظر حتى يقوم Gradle بمزامنة المشروع (في المرة الأولى التي يقوم فيها بتنزيل التبعيات).
- قم بتوصيل جهاز Android (API 24+) أو قم بتشغيل AVD.
- اضغط على تشغيل > تشغيل "التطبيق" أو على أيقونة التشغيل.
من سطر الأوامر
# En sistemas Unix/macOS
./gradlew assembleDebug
# En Windows
gradlew.bat assembleDebug
تم إنشاء تصحيح APK على app/build/outputs/apk/debug/app-debug.apk.
##تكوين قاعدة البيانات
يحتوي الملف setup_database.sql على البرنامج النصي للتهيئة لـ MySQL/MariaDB (مرجع التطوير الأولي). الواجهة الخلفية النشطة هي Supabase. راجع Esquema de Supabase للاطلاع على مخطط الجدول الكامل الذي يجب أن يكون موجودًا في مشروع Supabase.
معلمات تكوين Gradle
يحتوي الملف gradle.properties على الخصائص التالية ذات الصلة:
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
android.useAndroidX=true
kotlin.code.style=official
android.nonTransitiveRClass=true
تقوم الخاصية org.gradle.jvmargs=-Xmx2048m بتخصيص 2 غيغابايت من الكومة لعملية Gradle. في الأجهزة ذات ذاكرة الوصول العشوائي المنخفضة، يمكن تقليلها إلى -Xmx1024m على حساب أوقات الترجمة الأبطأ.