موضوع جانبي من درس أول تطبيق أندرويد.

يعني إيه SDK؟

الـ SDK اختصار لـ Software Development Kit. هي kit بتجمع كل اللي الـ developer محتاجه عشان يبني نظام أو تطبيق بيشتغل على بيئة معينة:

  • Libraries — كود جاهز بتستخدمه بدل ما تكتبه بنفسك.
  • ملفات — تعريفات و system images و documentation.
  • برامج مساعدة — أدوات بتعمل build للي بتكتبه وتشغّله وتعمله debug.

ده المفهوم العام، وبينطبق على أي منصة: فيه Windows SDK و iOS SDK وهكذا.

إيه هو الـ Android SDK؟

الـ Android SDK هو الـ SDK الخاص بالأندرويد. هو الـ layer الأساسي اللي بيربط الكود اللي بتكتبه (Java أو Kotlin) بحاجتين:

  1. نظام التشغيل أندرويد نفسه — الخدمات بتاعته زي الـ notifications والـ permissions وفتح تطبيقات تانية.
  2. الموبايل نفسه — الهاردوير بتاعه زي الكاميرا والـ GPS والـ storage والبصمة.

من غيره الكود بتاعك مالوش أي طريقة يطلب بيها حاجة من الأندرويد أو من الموبايل.

الـ Android Studio بيسطّب الـ SDK لوحده، وبتدير أجزاءه من Tools → SDK Manager. ومكانه على جهازك بيتحفظ في ملف local.properties جوه المشروع (هتلاقيه في مقال Gradle).

الـ Android SDK بيتكون من إيه؟

1. الـ Android API Libraries

كود مكتوب مسبقًا بيسمح للتطبيق اللي بتكتبه إنه يتعامل مع features الموبايل: الكاميرا والـ GPS والـ storage وغيرهم.

مثلًا عشان تعرف مكان الموبايل، مش هتكتب كود يكلّم شريحة الـ GPS. هتستخدم class جاهزة من مكتبات الأندرويد زي LocationManager، والأندرويد هو اللي يعمل الشغل.

2. الـ Build Tools

مجموعة برامج بتاخد الكود اللي إنت كاتبه (Java أو Kotlin) وتحوّله لتعليمات الأندرويد يقدر يشغّلها، وبعدين تجمع الكود وكل الـ resources بتاعة التطبيق (الصور والـ layouts والنصوص) في ملف التثبيت النهائي زي الـ APK.

وهي ماشية في الطريق ده بتعمل:

  1. Compile للـ resources بتاعة التطبيق (layouts وصور و strings).
  2. تحويل الكود المتعمله compile لصيغة DEX — دي الصيغة اللي الأندرويد بيشغّلها.
  3. Package لكل حاجة في ملف واحد.
  4. Align و Sign للملف ده، عشان الأندرويد يقبله ويقدر يسطّبه.

إنت مش بتشغّل الأدوات دي بإيدك — Gradle هو اللي بيناديها لما تعمل build للتطبيق.

3. الـ Platform Tools

أدوات بتشتغل من الـ Command Line وبتخلّي الكمبيوتر بتاعك يتواصل مع جهاز أندرويد — موبايل حقيقي أو emulator.

أهمهم ADB (Android Debug Bridge). بيه تقدر تسطّب تطبيقات وتمسحها، وتنقل ملفات من وإلى الجهاز، وتفتح shell عليه، وتقرا الـ logs بتاعته. الـ ADB من أكتر الأدوات اللي هتستخدمها في الـ Android Pentesting، وليه كورس لوحده بعد كده في نفس المرحلة.

4. الـ Android Emulator

برنامج بيشغّل موبايل أندرويد افتراضي على الكمبيوتر، عشان تسطّب التطبيقات وتشغّلها وتختبرها من غير ما تحتاج موبايل حقيقي. كل موبايل افتراضي بتعمله اسمه AVD (Android Virtual Device) — وعملنا واحد في درس أول تطبيق أندرويد.

5. الـ SDK Platforms

كل إصدار أندرويد بينزل بيكون معاه SDK Platform خاصة بيه، فيها الـ APIs اللي بتخلّي التطبيقات تشتغل صح على الإصدار ده، وليها رقم تعريف اسمه API Level.

لما جوجل بتنزّل أندرويد جديد (مثلًا Android 15)، بتنزّل معاه SDK Platform جديدة فيها كل الكود والـ APIs اللي بتسمح للمطور إنه يستغل الـ features الجديدة اللي نزلت في الإصدار ده. في حالة Android 15 الرقم ده هو API Level 35. (و Android 10 اللي اخترناه كـ minimum لأول تطبيق هو API Level 29.)

وده بقى إزاي الحاجات دي بتشتغل مع بعض: الكود بتاعك بيكلّم الـ APIs اللي في الـ SDK Platform، وهي بدورها بتاخد الأوامر وتترجمها لتصرفات يفهمها النظام والموبايل — زي فتح الكاميرا، أو تشغيل الـ GPS، أو قراية البصمة — من غير ما تحتاج تكتب كود يتعامل مع الهاردوير بشكل مباشر.

مثال يقرّب الصورة

  • الأندرويد هو النظام الكبير — أكبر دايرة.
  • التطبيقات اللي على الموبايل دواير صغيرة جواه.
  • أما الـ Android SDK فهو الدليل اللي فيه الأدوات والخريطة اللي بتسمح لتطبيقك إنه يوصل للأندرويد، ولهاردوير الموبايل، لو احتاج منهم حاجة.