gameboost-vpnservice

byAbderrahim Lamrabat

# الدور أنت كبير مهندسي أندرويد (Senior Android Engineer) متخصص في الشبكات وVpnService. مهمتك بناء مشروع أندرويد كامل جاهز لإنتاج ملف APK يعمل على هاتف حقيقي. لا تكتب كوداً لأي منصة أخرى (لا iOS، لا Flutter، لا React Native). # المنتج اسم التطبيق: GameBoost. الهدف: عند اللعب (eFootball / FC Mobile أو أي لعبة يختارها المستخدم) يُقطع الإنترنت كلياً عن جميع التطبيقات الأخرى، وتبقى اللعبة وحدها متصلة مباشرة لأفضل بينج ممكن. # المواصفات التقنية (إلزامية) - Kotlin + Jetpack Compose + Material 3، بنية MVVM + Clean Architecture (data / domain / ui)، Hilt للحقن، Coroutines وFlow، DataStore للإعدادات، Room لسجل الجلسات. - minSdk 26، targetSdk 35، Gradle Kotlin DSL مع Version Catalog. # المحرك الأساسي (VpnService) 1. أنشئ VpnService محلياً بدون أي خادم خارجي. 2. استدعِ addDisallowedApplication لـ: اللعبة المختارة، تطبيقنا نفسه، والتطبيقات المستثناة. بذلك تُوجَّه حزم كل التطبيقات الأخرى إلى واجهة TUN وتُهمَل (blackhole) فينقطع إنترنتها كلياً، وتتصل اللعبة مباشرة دون أي وسيط. 3. أضف مسارات 0.0.0.0/0 و::/0 حتى لا يتسرب أي اتصال عبر IPv6. 4. الخدمة Foreground Service مع إشعار دائم وزر "إيقاف" وعرض البينج. 5. أعد تشغيل الخدمة تلقائياً عند الفشل وعالج إلغاء إذن VPN وتبديل الشبكة (Wi-Fi ↔ بيانات) عبر ConnectivityManager.NetworkCallback. # الميزات 1. شاشة رئيسية: اختيار اللعبة من المثبتة (مع الأيقونات) وزر دائري كبير متحرك "ابدأ اللعب" يفعّل الحجب ثم يفتح اللعبة. 2. اكتشاف فتح/إغلاق اللعبة عبر UsageStatsManager وإيقاف الحجب تلقائياً بعد إغلاقها. 3. قائمة استثناءات (واتساب للمكالمات، الرسائل...). 4. قياس Ping وJitter وPacket Loss كل ثانية لخادم يختاره المستخدم، مع رسم بياني مباشر (Canvas) دون مكتبات ثقيلة. 5. WifiLock بوضع WIFI_MODE_FULL_LOW_LATENCY أثناء الجلسة. 6. طلب وضع عدم الإزعاج (NotificationManager.Policy) اختيارياً. 7. Quick Settings Tile للتشغيل السريع. 8. سجل الجلسات ومتوسط البينج، وإعدادات: بدء تلقائي مع اللعبة. 9. تنبيه عند التحول من Wi-Fi إلى بيانات الهاتف. # التصميم - واجهة داكنة بطابع ألعاب، ألوان نيون (أخضر #00FF9C / سماوي #00D4FF). - دعم العربية (RTL) والإنجليزية عبر strings.xml. - Onboarding من 3 شاشات يشرح الأذونات قبل طلبها. # الأذونات BIND_VPN_SERVICE، PACKAGE_USAGE_STATS، QUERY_ALL_PACKAGES، FOREGROUND_SERVICE (+ FOREGROUND_SERVICE_SPECIAL_USE)، POST_NOTIFICATIONS، ACCESS_NETWORK_STATE، ACCESS_WIFI_STATE. اشرح سبب كل إذن داخل التطبيق. # الأداء والجودة - لا Memory Leaks، لا عمل ثقيل على Main Thread، استهلاك بطارية منخفض. - ProGuard/R8 مفعّل في release، واختبارات وحدة للـ ViewModels ومنطق الاستثناءات. # المخرجات المطلوبة 1. شجرة المشروع الكاملة ثم كل ملف بمساره الكامل وكوده كاملاً دون اختصار أو "..."، بما فيها AndroidManifest وbuild.gradle.kts. 2. أوامر بناء الـ APK: ./gradlew assembleDebug → app/build/outputs/apk/debug/app-debug.apk وطريقة توقيع نسخة release (keystore) وإنتاج APK موقّع. 3. خطوات التثبيت عبر adb واختبار الحجب على هاتف حقيقي. 4. قائمة تحقق للتأكد أن المشروع يُبنى بدون أخطاء. ابدأ بالنسخة الأساسية (VPN + حجب + اختيار لعبة) ثم أضف بقية الميزات على مراحل، وأكّد اكتمال كل مرحلة قبل الانتقال للتالية.

Landing
Landing

Comments (0)

No comments yet. Be the first!

Project Tasks

24 planning tasks
#1

Generate system requirement document

1m 14s0.05 cr used
Done
#2

Generate personas & user flows

0m 7s0.05 cr used
Done
#7

Create flow for لاعب (Player)

0m 6sCredits in parent
Done
#8

Landing

4m 48sCredits in subtasks
Done
#26

Fix Landing review findings: Q1 as reviewed now: Current Landing Poster Hero.jsx still… (+1 more)

0m 26s0.02 cr used
Done
#25

Fix Landing review findings: Mobile landing omits the requested game selection… (+2 more)

0m 44s0.02 cr used
Done
#18

Landing / Navigation

0m 0s0.85 cr used
Done
#15

Landing / Poster Hero

0m 34s0.85 cr used
Done
#16

Landing / What It Does

0m 33s0.85 cr used
Done
#17

Landing / Action Dock

0m 46s0.85 cr used
Done
#19

Landing / Footer

0m 0s0.85 cr used
Done
#22

Fix Landing: Mobile landing omits the requested game selection, circular Start action, and…

2m 28sCredits unavailable
Done
#23

Fix Landing: Mobile hero headline does not retain the explicitly requested two-line composition.

2m 13sCredits unavailable
Done
#24

Fix Landing: The required product mark and wordmark are replaced by the project identifier ; the…

1m 5sCredits unavailable
Done
#20

Navigation

0m 32sCredits in parent
Done
#21

Footer

0m 22sCredits in parent
Done
#9

Onboarding

Credits in subtasks
Backlog
#10

الرئيسية

Credits in subtasks
Backlog
#11

الاستثناءات

Credits in subtasks
Backlog
#12

القياس

Credits in subtasks
Backlog
#13

السجل

Credits in subtasks
Backlog
#14

الإعدادات

Credits in subtasks
Backlog
#5

Architecture

0.05 cr needed
Backlog
#6

Workspace task plan

0.05 cr needed
Backlog
Landing design preview
Landing: View headline and product mark
Landing: Tap Get started
Onboarding: Read VPN permission reason
Onboarding: Grant VPN consent
Onboarding: Skip VPN for now
Onboarding: Read Usage Access reason
Onboarding: Grant Usage Access
Onboarding: Read notifications and package visibility reason
Onboarding: Grant notification permission
Onboarding: Tap Finish
الرئيسية: Select installed game tile
الرئيسية: 1. Tap START MATCH
الرئيسية: 2. Retry Start after consent denial
الرئيسية: 1. View LOCKED shield and telemetry
الرئيسية: Stop session from shield
الرئيسية: 2. Respond to Wi-Fi to data alert
الاستثناءات: 1. Toggle WhatsApp exception
الاستثناءات: 2. Retry failed toggle
القياس: Set measurement server
القياس: 1. Start live measurement
القياس: 2. Change server after unreachable error
الإعدادات: Toggle auto-start with game
الإعدادات: Request Do Not Disturb access
الإعدادات: Open missing permission surface
السجل: 1. Open session entry details
السجل: 2. Retry failed log query
Landing: Tap I already set up
Landing design preview
Landing: View headline and product mark
Landing: Tap Get started
Onboarding: Read VPN permission reason
Onboarding: Grant VPN consent
Onboarding: Skip VPN for now
Onboarding: Read Usage Access reason
Onboarding: Grant Usage Access
Onboarding: Read notifications and package visibility reason
Onboarding: Grant notification permission
Onboarding: Tap Finish
الرئيسية: Select installed game tile
الرئيسية: 1. Tap START MATCH
الرئيسية: 2. Retry Start after consent denial
الرئيسية: 1. View LOCKED shield and telemetry
الرئيسية: Stop session from shield
الرئيسية: 2. Respond to Wi-Fi to data alert
الاستثناءات: 1. Toggle WhatsApp exception
الاستثناءات: 2. Retry failed toggle
القياس: Set measurement server
القياس: 1. Start live measurement
القياس: 2. Change server after unreachable error
الإعدادات: Toggle auto-start with game
الإعدادات: Request Do Not Disturb access
الإعدادات: Open missing permission surface
السجل: 1. Open session entry details
السجل: 2. Retry failed log query
Landing: Tap I already set up