مقدمة
تُترجَم بناءات Flutter Web للإصدار (release) إلى JavaScript مُصغَّرة (minified)، لذا يبدو تتبّع المكدس (stack trace) القادم من مستخدم حقيقي هكذا:lib/chat/chat_store.dart:15، مع
اسم العضو (member) في Dart.
تُرفَع الخرائط بشكل خاص وتُحذف من مخرجات البناء قبل النشر. لا تُقدَّم علناً
أبداً، لذا يبقى كودك المصدري خاصاً.
أكمِل تثبيت Flutter أولاً. تتطلّب
تتبّعات المكدس على الويب الحزمة
lerix_flutter بالإصدار 0.0.2 أو أحدث.لا تحتاج خرائط المصدر إلا لـ Flutter Web. بناءات الإصدار على Android وiOS
تُبلغ أصلاً عن ملف Dart ورقم السطر، راجع
بناءات الأجهزة المحمولة.
1. ابنِ مع خرائط المصدر
أضِف--source-maps إلى بناء الويب:
main.dart.js.map بجانب main.dart.js في build/web.
2. أنشئ مفتاح API خاصاً
يحتاج رفع خرائط المصدر إلى مفتاح خاص، منفصل عن مفتاح المشروع العام الذي يستخدمه تطبيقك.- افتح مشروعك في لوحة تحكم Lerix.
- اذهب إلى Project settings ← API keys.
- أنشئ مفتاحاً بصلاحية Upload source maps (أو Full access).
3. ارفع الخرائط بعد كل بناء
بعدflutter build web --source-maps وقبل النشر، شغّل أداة Lerix CLI:
build/web تلقائياً وتستخدم
version من pubspec.yaml، دون رقم +build، كإصدار. فمع
version: 1.4.0+12 يكون الإصدار 1.4.0.
ترفع الأداة ملفات .map، ثم تحذفها من build/web كي لا تُنشر أبداً. إذا فشل
أي رفع، تُبقي الأداة الخرائط وتخرج بالرمز 1، لتتمكّن من إعادة الخطوة. تتطلّب
الأداة Node.js بالإصدار 18.17 أو أحدث.
الخيارات
يمكن تعيين كل خيار أيضاً عبر متغير بيئة.4. لا شيء لتمرّره إلى الـ SDK
يُبلغ Flutter SDK عن الإصدار نفسه تلقائياً: قيمةversion من pubspec.yaml،
دون رقم +build. لا حاجة لتعيين إصدار في Lerix.init().
مثال: GitHub Actions
يبني سير العمل هذا تطبيق الويب، ثم يرفع الخرائط، ثم ينشر. أضِفLERIX_API_KEY
وLERIX_PROJECT_ID وLERIX_SECRET_KEY كأسرار (secrets) في المستودع.
.github/workflows/deploy.yml
ما تراه في لوحة التحكم
تعرض أخطاء الويب الجديدة ملف Dart والسطر واسم العضو الأصلي. تظهر إطارات إطار عمل Flutter بصيغةpackage:flutter/... وتُعرض باهتة ككود مكتبة. يتلقّى
المساعد الذكي وقضايا GitHub وخادم MCP جميعهم المكدس المقروء أيضاً.
- لا تتضمّن خرائط المصدر التي يولّدها dart2js كودك المصدري، لذا تعرض أخطاء الويب الملف والسطر دون مقتطف من الكود.
- لا تُحوَّل إلا الأخطاء المُبلَّغ عنها بعد رفع الخرائط. تبقى الأخطاء الأقدم بمكدسها المُصغَّر.
بناءات الأجهزة المحمولة
تُبلغ بناءات الإصدار على Android وiOS أصلاً عن ملف Dart ورقم السطر. لا حاجة لأي إعداد. البناءات المصنوعة باستخدام--obfuscate --split-debug-info لا تُفكّ رموزها
(symbolicated) بعد.