# تفعيل Firebase Crashlytics لتطبيق أندرويد — البسطية

> **الحالة الحقيقية:** Crashlytics الأصلي (Native) **غير مفعّل** حالياً. المتوفر اليوم هو
> تسجيل أخطاء طبقة الويب داخل جدول `error_logs` وتبويب «الأخطاء» في لوحة الإدارة.
> هذا الملف خطوات التفعيل، مو توثيق لشيء منجز.

## ليش الخطوات محلية

مشروع Lovable يحتوي كود الويب فقط؛ مجلد `android/` **مو موجود** داخل المستودع لأنه
يتولّد محلياً من Capacitor. يعني كل خطوات Gradle أدناه تنفّذ على جهازك بعد:

```bash
git clone <repo> && cd <repo>
bun install
bun run build
bunx cap add android      # أول مرة فقط
bunx cap sync android
```

## 1. نفس مشروع Firebase الحالي

استعمل **نفس** مشروع Firebase المستخدم حالياً لتسجيل الدخول والإشعارات — لا تنشئ مشروعاً جديداً.
تأكد أن `android/app/google-services.json` موجود ويطابق `appId` في `capacitor.config.ts`.

## 2. Gradle — مستوى المشروع

`android/build.gradle`:

```gradle
buildscript {
  dependencies {
    classpath 'com.google.gms:google-services:4.4.2'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2'
  }
}
```

## 3. Gradle — مستوى التطبيق

`android/app/build.gradle`:

```gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'

android {
  buildTypes {
    debug {
      // ما نرفع رموز الأخطاء من debug حتى ما نلوّث لوحة Crashlytics
      firebaseCrashlytics { mappingFileUploadEnabled false }
    }
    release {
      minifyEnabled true
      firebaseCrashlytics { mappingFileUploadEnabled true }
    }
  }
}

dependencies {
  implementation platform('com.google.firebase:firebase-bom:33.7.0')
  implementation 'com.google.firebase:firebase-crashlytics'
  implementation 'com.google.firebase:firebase-analytics'
}
```

## 4. فحص debug مقابل release

| الحالة | المتوقع |
| --- | --- |
| `bunx cap run android` (debug) | التطبيق يشتغل، ما يترفع mapping file |
| `./gradlew assembleRelease` | البناء ينجح ويترفع mapping file لمشروع Firebase |
| كراش تجريبي في release | يظهر داخل Firebase Console خلال دقائق |

كراش تجريبي (مؤقت فقط، احذفه قبل الرفع):

```java
throw new RuntimeException("Crashlytics smoke test");
```

## 5. ممنوع منعاً باتاً

- لا ترسل `setUserId` بمعرّف حقيقي، ولا بريد، ولا رقم هاتف.
- لا تضيف Custom Keys فيها توكن أو Authorization أو محتوى رسائل خاصة.
- لا تسجّل `?query` أو `#hash` من الروابط (ممكن تحوي توكنات OAuth).
- نفس قاعدة الويب: التنقية في `src/lib/errorLogger.ts` هي المرجع.

## 6. بعد التفعيل

حدّث «الأمان والبيانات» (Data Safety) في Google Play بأن التطبيق يجمع
**بيانات تعطّل مجهولة الهوية** لأغراض تحسين الأداء فقط.
