الفصل الرابع عشر: النشر والرفع على المتاجر Chapter 14: Deployment & Store Submission

الخطوة النهائية لتحويل كودك إلى تطبيق حقيقي يراه الملايين.

🌍 من الكود إلى العالم From Code to the World

وصلنا للنهاية السعيدة! الرفع على المتاجر مش بس عملية تقنية، دي عملية إدارية وتسويقية وفنية.

1
Release Build

تحويل كود الـ Dart إلى ملفات تنفيذية (APK/AAB/IPA) جاهزة للنشر.

2
App Verification

التأكد من أن التطبيق يتبع سياسات Google و Apple الصارمة.

3
Go Live!

الانتظار حتى تتم مراجعة التطبيق وظهوره للمستخدمين.

🔑 توقيع التطبيق (App Signing) The Digital Identity

التطبيق مش هيرضى ينزل على الموبايل غير لو كان "موقع" إلكترونياً. دي هويتك كمطور:

Android
Upload KeyStore

بنستخدم ملف key.jks عشان نشفر الـ Build. جوجل دلوقتي هي اللي بتهندل الـ Release Key.

keytool -genkey -v -keystore ~/upload-key.jks ...
iOS
Provisioning Profiles

لازم يكون عندك حساب Apple Developer وتعمل Certificate و App ID و Provisioning Profile.

تحذير: لو ضيعت ملف الـ KeyStore بتاع الأندرويد، مش هتعرف ترفع تحديثات للتطبيق تاني للأبد! شيله في مكان آمن (cloud/physical drive).

🍎 آبل ستور (App Store Connect) iOS Distribution Path

رحلة الرفع لآبل بتبدأ من Xcode:

graph TD Code[Xcode Build] -- Archive --> Upload[App Store Connect] Upload -- Process --> TF[TestFlight Beta] TF -- Review --> Public[Public App Store]
1

تأكد إن الـ Bundle Identifier هو نفسه اللي في الـ Portal.

2

ارفع النسخة باستخدام Transporter أو مباشرة من Xcode.

🤖 جوجل بلاي (Google Play Console) Android Distribution Path

جوجل بلاي بيعتمد دلوقتي على ملف AAB (App Bundle) بدل الـ APK التقليدي.

flutter build appbundle --release

الميزة: الـ AAB بيخلي جوجل تنزل للمستخدم الأجزاء اللي محتاجها جهازه بس، وده بيصغر حجم التحميل جداً.

نصيحة: ابدأ دايماً بـ Internal Testing Track عشان تجرب التطبيق مع فريقك قبل النشر العام.

🖼️ الصور والوسائط (Screenshots) Visual Presentation

انطباع المستخدم الأول بيجي من الصور في المتجر. لازم تكون احترافية:

PlatformRequirementsBest Practice
iPhone6.5" & 5.5" DisplaysUse mockups with device frames.
iPad12.9" DisplayShow tablet-specific layouts (NavigationRail).
AndroidPhone, 7" & 10" TabletsFocus on ease of use and dark mode.
📄 سياسة الخصوصية (Privacy Policy) Legal Requirements

المتاجر مبقتش تقبل تطبيقات من غير رابط سياسة خصوصية. لازم توضح للمستخدم:

1

إيه البيانات اللي بنجمعها؟ (في حالتنا: Crash reports only).

2

إزاي بنحمي البيانات؟ (Local Encryption).

3

هل بنشارك البيانات مع طرف تالت؟ (No, except Firebase for diagnostics).

PRO TIP: ممكن تستخدم GitHub Pages عشان ترفع عليها ملف الـ Privacy Policy كصفحة ثابتة وتحط الرابط في المتاجر.

قائمة ما قبل الصعود (Final Checklist) Pre-Submission Audit

راجع القائمة دي بدقة قبل ما تلمس زرار الـ Submit:

1

النسخة Release (مش Debug).

2

الـ Version والـ Build Number زايدين عن النسخة اللي فاتت.

3

كل الـ print اتشالت أو اتحولت لـ Logger.

4

شاشة الـ Splash Screen والأيقونة مظبوطين.

5

تم تجربة التطبيق على جهاز حقيقي (مش Simulator).

6

تم عمل Smoke Test لكل الحركات المالية الأساسية.

أسئلة الـ Store الشائعة Deployment FAQ
جوجل رفضت التطبيق بسبب "Permissions"، أعمل إيه؟
تأكد إنك مش طالب صلاحيات مش بتستخدمها (زي الـ Location أو Camera) في ملف المانيفست.
آبل طلبت "Review Account"، إيه ده؟
لو التطبيق فيه تسجيل دخول، لازم تعمل حساب تجريبي (Username/Password) وتديه لآبل عشان يقدروا يجربوا المميزات اللي جوا.
📖 قاموس النشر Deployment Glossary
TermMeaning (AR)
Productionالبيئة النهائية اللي المستخدم الحقيقي بيشوفها.
Stagingبيئة تجريبية مطابقة للواقع لكنها مخفية عن الناس.
App Reviewعملية مراجعة بشرية أو آليه من المتجر للتأكد من الجودة.
🚀 تحسين بيانات المتجر (ASO) App Store Optimization

عشان الناس تلاقي تطبيقك بسهولة، لازم تهتم بالـ Metadata:

FieldDescriptionTip
App Titleاسم التطبيق الأساسي.خليه قصير وجذاب (MRE CashBook).
Subtitle/Short Descوصف مختصر يظهر تحت الاسم.استخدم كلمات دلالية (Keywords) زي "مصاريف" أو "محفظة".
Keywordsكلمات بحث مخفية (iOS only).افصل بينها بـ commas من غير مسافات.

PRO TIP: الوصف الطويل (Long Description) في جوجل بلاي بيأثر على الـ SEO جداً، لكن في آبل ملوش لازمة غير للقراءة.

🚫 التعامل مع الرفض (Rejections) Handling Store Rejections

كل المطورين بتترفض تطبيقاتهم في الأول، ده عادي جداً. أشهر أسباب الرفض:

!
Guideline 2.1 - Performance

لو التطبيق عمل Crash وهما بيجربوه. تأكد إنك باعت "Review Account" شغال.

!
Guideline 5.1 - Privacy

نقص رابط سياسة الخصوصية أو طلب صلاحيات زيادة عن اللزوم.

الحل: رد عليهم باحترام، صلح المشكلة، وارفع Build جديد بنفس الـ Version لكن Build Number أعلى.

🔄 مخطط تدفق النشر الكامل Full Deployment Workflow
graph TD Start[Code Finished] --> Clean[flutter clean] Clean --> Build[flutter build appbundle/ios] Build --> Test[Internal Testing] Test -- OK --> Submit[Submit for Review] Submit -- Reject --> Fix[Fix & Re-upload] Submit -- Approve --> Live[Published to Store] Live --> Monitor[Monitor Crashlytics]
⚖️ مقارنة بين المتجرين App Store vs. Google Play
FeatureApple App StoreGoogle Play Store
Review Time24-48 Hours (usually)1-7 Days (can be slow)
Cost$99 / Year$25 / One-time
StrictnessVery Strict UI/UXMore relaxed but strict on Security
🤖 أداة فحص الإصدار (Automation) Version Integrity Script

عشان نضمن إننا مش بنرفع نسخة مكررة بالصدفة، ممكن نستخدم Script بسيط يفحص الـ pubspec.yaml:

# Basic bash script to check version before build
VERSION=$(grep 'version: ' pubspec.yaml | sed 's/version: //')
echo "Building version: $VERSION"

if [[ "$VERSION" == *"+"* ]]; then
  echo "✅ Version format is valid."
else
  echo "❌ Error: Build number is missing (+N)."
  exit 1
fi

السكريبت ده بيمنع الـ Build لو نسيت تحط الـ Build Number، وده بيوفر عليك وقت رفع فاشل للمتجر.

🎨 نصائح تسويق الصور Marketing Asset Strategies

الصور مش بس سكرين شوت، دي "قصة" بتحكيها للمستخدم:

!
The First Screenshot

لازم توضح الميزة الأساسية (تتبع المصاريف) بوضوح تام.

!
Short Captions

استخدم جمل قصيرة وقوية فوق الصورة (مثلاً: "إدارة أموالك في ثوانٍ").

نصيحة فنية: استخدم ألوان الخلفية في الصور متناسقة مع ألوان التطبيق (Dark Mode) عشان تدي إيحاء بالاحترافية.

🏆 الخاتمة: أنت الآن مطور محترف Course Conclusion

مبروك! لو وصلت للنقطة دي، فأنت خلصت دورة بناء تطبيق MRE CashBook بالكامل. اتعلمت فيها:

هندسة البرمجيات (Clean Architecture).

إدارة الحالة المتقدمة (BLoC / Cubit).

قواعد البيانات المحلية والسحابية.

الأداء، الأمان، والتوافق مع Huawei.

النشر والصيانة المستمرة.

شكراً لثقتكم، وبالتوفيق في مشاريعكم القادمة! 🚀

📝 ملخص الفصل Chapter Summary
anchor

سنقوم ببناء هذا الفصل لنغطي كل جوانب Deployment المشروع.