أساسيات الاندرويد
خلينا نبدأ بمعلومة أساسية: الأندرويد في الأصل معمول على نواة اللينكس (Linux Kernel)، واللينكس عبارة نظام تشغيل بيعتمد على مبدأ المستخدمين (Users). يعني زي ما عندك على الويندوز يوزرز زي محمد و كريم، وفي واحد معاهم صلاحيات أدمن (Administrator)، في اللينكس برضه عندك يوزرز عاديين ويوزر قوي جداً اسمه **روت (Root)** اللي ليه تحكم كامل في الجهاز.
لما تيجي تنزل أي تطبيق (APK) على جهاز أندرويد، السيستم بيعمل حاجة كويسة: بيحسب كل تطبيق على إنه **يوزر جديد**. يعني لما تنزل تطبيق زي كروم أو لعبة أو أي حاجة، كل واحد فيهم بياخد **User ID** خاص بيه، وده اللي بيخليه وكأنه بيشتغل في بيئة مستقلة عن باقي التطبيقات. يعني لو مثلاً نزلت تطبيق زي كروم أو لعبة، فكل واحد فيهم بيشتغل كأنه مستخدم جديد تمامًا على الجهاز. دي ميزة كويسة، لأنها بتمنع التطبيقات من الوصول مباشرة لمكونات النظام أو التطبيقات التانية، وكمان بتزيد من الأمان لأن كل واحد فيهم شغال في بيئة معزولة sandbox.
---
### العزل بين التطبيقات
كل يوزر (أو تطبيق) ليه مساحة خاصة بيه على الجهاز، حاجة كده زي فولدرات شخصية. يعني بيانات كروم بتتخزن في فولدر خاص بيه، وفيسبوك برضه ليه فولدره الخاص. الفكرة هنا إن نظام الأندرويد بيعزل التطبيقات عن بعض بطريقة اسمها **Isolation**. العزل ده هدفه إن ما ينفعش أي تطبيق يدخل على بيانات تطبيق تاني.
مثال:
- **تطبيق كروم** مش هيقدر يشوف الصور أو الداتا اللي مخزنها **تطبيق فيسبوك**.
- ولعبة البلياردو مش هتقدر تدخل على بيانات جوجل كروم.
العزل ده بيحصل علشان كل تطبيق بيشتغل بيوزر ID خاص بيه، واليوزر ده هو اللي مسؤول عن تشغيل التطبيق. يعني لما تفتح أي برنامج، الأندرويد بيشغله بمعزل عن البرامج التانية. وده ليه فايدة كبيرة في حماية الخصوصية وانه يمنع التطبيقات إنها تتجسس على بعضها.
---
### ازاي بيتم التواصل بين التطبيقات؟
هنا بقى يظهر سؤال مهم: لو التطبيقات معزولة عن بعضها، إزاي ممكن يتكلموا مع بعض او يبعتوا بيانات لبعض؟
الإجابة بسيطة: التواصل المباشر ممنوع، لكن فيه طريقة معينة اسمها **IPC** (Inter-Process Communication). دي زي القناة الآمنة اللي بيتم استخدامها لما تطبيقين محتاجين يتشاركوا بيانات مع بعض.
مثلاً:
- **فيسبوك** ممكن يستخدم **IPC** عشان يفتح لينك على **كروم**.
- أو تطبيق الكاميرا يبعث صورة لتطبيق الصور.
الأندرويد بيعتمد على حاجات زي **Content Providers** و**Intents** عشان ينظم الاتصال ده، وفي نفس الوقت يحافظ على العزل والأمان.