بشكل عام ، تم تطوير Android أصلاً بواسطة Android Inc. خطط المبدعون لاستخدامه لإنشاء "كاميرات ذكية". في عام 2005 ، اشترت Google Android Inc وغيرت تطبيق ناقل النظام الأساسي للأجهزة المحمولة.وقال أندي روبين ، المؤسس المشارك لنظام أندرويد: "بالضبط نفس النظام ونظام التشغيل اللذين أنشأناهما للكاميرات - أصبحا أندرويد للهواتف المحمولة".
Android Debug Bridge
ADB (Android Debug Bridge) هي أداة سطر أوامر تنفذ الأوامر على أجهزة Android. هذا برنامج خادم عميل يتكون من ثلاثة مكونات:- عميل يسمح لك بإرسال الأوامر ؛- أوامر تنفيذ الخفي على الجهاز ؛- خادم إدارة الاتصالات بين العميل والخفي.
Android Package
APK (Android Package) هو تنسيق ملف قابل للتنفيذ للأرشيف لنظام Android. محملة aapt (أداة تغليف الأصول Android). يمكن تقسيم عمل هذه الأداة بشكلٍ مشروط إلى مرحلتين:- تجميع. في هذه المرحلة ، يتم إعداد الموارد: يتم إنشاء الفئة R ، وترجمة موارد XML إلى تنسيق ثنائي ، ومعالجة PNG ، إلخ.- التغليف (ربط). يتم تجميع جميع الملفات الوسيطة التي تم إنشاؤها في مرحلة الترجمة في APK.تم توضيح عملية إنشاء تطبيق Android في الوثائق .
Agera
Agera هو إطار برمجة تفاعلي لنظام Android. غير المدرجة في JetPack.Jetpack - مجموعة من المكتبات التي تعمل على تبسيط عملية تطوير التطبيقات الجديدة لنظام Android.الشرائح - قوالب واجهة المستخدم للتضمين في التطبيقات الأخرى.Android KTX عبارة عن مجموعة من ميزات ملحق Kotlin التي تعمل على تبسيط عملية تطوير Android.ربط البيانات هي تقنية يمكننا بواسطتها ربط البيانات تلقائيًا في كود XML.
val hh = 1.
كان السؤال في أفق لغات البرمجة.يمكن العثور على الخيار `hh = 1` في Python و` def hh = 1` - في Groovy والخيار الأخير - في Java ، والذي يجب أن نحدد فيه نوع البيانات.
Remote
عادي - تتضمن هذه الفئة أذونات لا تتطلب الوصول إلى بيانات المستخدم السرية أو لا تؤثر على تشغيل التطبيقات الأخرى. يمنح النظام هذه الأذونات تلقائيًا إلى التطبيق أثناء التثبيت ولا يمكن للمستخدمين إبطالها.التوقيع - يتم توفيرها تلقائيًا للتطبيق من قبل النظام أثناء التثبيت ، وكذلك الأذونات العادية. ومع ذلك ، فإن الفرق هو أنه لا يمكن لكل تطبيق الحصول على هذه الأذونات. للقيام بذلك ، يجب أن يتم توقيعه بنفس الشهادة مثل التطبيق الذي أعلن هذا الإذن.خطورة - تتضمن هذه الفئة أذونات تتطلب الوصول إلى بيانات المستخدم السرية أو قد تؤثر على تشغيل التطبيقات الأخرى.خاص هو SYSTEM_ALERT_WINDOW و WRITE_SETTINGS.الوثائق
Principle Of Least Astonishment
أوه ، تلك الحروف الخمسة.مبدأ المسؤولية - يجب على الفصل أن يفعل شيئًا واحدًا.O pen Closed Principle - يجب أن تكون كيانات البرامج مفتوحة للتوسع ، ولكن مغلقة للتغيير.L iskov مبدأ الاستبدال (مبدأ استبدال Barbara Liskov) - يجب ألا يتعارض سلوك طبقة الوريث مع السلوك الذي حددته الفئة الأصل.I nterface Segregation Principle - لا ينبغي أن تعتمد كيانات البرامج على الأساليب التي لا تستخدمهامبدأ انعكاس ependency - يجب ألا تعتمد التجريدات على التفاصيل. يجب أن تعتمد التفاصيل على التجريد.لكن "مبدأ الدهشة الأقل" لم يتم تضمينه في SOLID . تنص هذه القاعدة على أنه إذا كان الغرض من العنصر غير واضح ، فينبغي توقع سلوكه للمستخدم (مبدأ الأقل مفاجأة).
Slices
حول ربط البيانات والشرائح تحدثنا أعلى قليلاً. يعد Toast و Snackbar عنصرين لإخطار المستخدمين في تطبيقات Android ولا يمكن تضمينهما في تطبيقات أخرى. على الرغم من أنه قد يتم عرض Toast بعد وبعد تصغير التطبيق ، على عكس الشرائح ، لا يمكن تضمينه في أي مكان.
64K
تحدد مواصفات ملف dex إجمالي عدد الطرق التي يمكن الرجوع إليها إلى 65،536.في الإصدارات التي تحتوي على Dalvik على متن الطائرة (عصر ما قبل API 21) ، للتحايل على هذا القيد ، من الضروري توصيل مكتبة multidex ، التي تصبح جزءًا من ملف dex الرئيسي وتتحكم في الوصول إلى الباقي.ART ، بدوره ، يدعم تحميل العديد من ملفات dex خارج الصندوق. عند تثبيت التطبيق ، يقوم ART بفحص ملفات classesN.dex ويجمعها في ملف .oat واحد لمزيد من تهيئة التطبيق.Multidex
onPostPause()
onPostCreate () - يسمى بعد استدعاء onStart () و onRestoreInstanceState ()onPostResume () - يسمى بعد استدعاء onResume ()onResumeFragments () هو إصدار مجزأ من أسلوب onResume (). تم استدعاؤه داخل onPostResume () ، بعد استدعاء onResume () للقطع.
9-patch هي صورة عادية .png فيها حواف 1px تحتوي على معلومات الخدمة التي يتم تفسيرها بواسطة نظام الرسومات الفرعي لنظام Android على النحو التالي:تحدد الحدود العليا واليسرى منطقة المحتوى التي سيتم تمديدها.الحدود اليمنى والدنيا تحدد المنطقة التي سيتم وضع المحتوى فيها.
Zygote
Zygote هو أحد المكونات الرئيسية لأي نظام أندرويد. وهو مسؤول عن تهيئة خدمات النظام وبدء تشغيلها وبدء تشغيل تطبيقات المستخدم وإيقافها والعديد من المهام الأخرى. أثناء التهيئة ، تشكل Zygote بيئة وقت تشغيل تطبيقات Java (عن طريق تحميل جميع فئات Java للإطار) وتبدأ خدمات النظام عالية المستوى (WindowManager ، و ActivityManager ، وما إلى ذلك) ، وبعد ذلك تبدأ في النوم. عند تلقي طلب لبدء التطبيق ، تقوم Zygote بنسخ نفسها (متشعب) وتشغيل التطبيق المرغوب فيه أعلى النسخة المتلقاة من الجهاز الظاهري. يسمح مبدأ التشغيل هذا بتقليل استهلاك الذاكرة (يقوم نظام Linux بنسخ ذاكرة النسخ عند الكتابة أثناء عملية التفرع) ويسرّع تشغيل التطبيق (تفرع العملية أسرع بكثير من بدء تشغيل جهاز افتراضي جديد).
Libraries
تم تحليل مستويات بنية أندرويد في الاختبار السابق في السؤال 14.
VM
هناك طريقتان رئيسيتان لتنفيذ جهاز افتراضي: المكدس (Java ، .Net CLR) والتسجيل (Lua VM ، Dalvik VM). الفرق الرئيسي بين النهجين هو الآلية المستخدمة لكتابة واستلام المعاملات ونتائج تنفيذ الأوامر.يستخدم المكدس VM المكدس لتخزين المعاملات. تلقي العمليات البيانات من المكدس ، ومعالجتها ودفع النتيجة مرة أخرى إلى المكدس وفقًا لقاعدة LIFO.يستخدم تسجيل VM سجلات المعالج لتخصيص المعاملات. يجب أن تحتوي تعليمات مثل VM بشكل صريح على العناوين (السجلات) التي تحتوي عليها المعاملات.نظرًا لهذا الاختلاف ، تكون الإرشادات الموجودة في السجل VM أسرع من الإرشادات المماثلة في مكدس VM ، ولكنها في المتوسط تشغل ذاكرة أكبر عن طريق تحديد المعاملات بوضوح.ميزة أخرى للسجل VM هي القدرة على تخزين القيمة المحسوبة في السجل ، مما يوفر الوقت اللازم لإعادة حساب التعبيرات.أسباب اختيار تطبيق Dalvik VM كسجل VM ( مقاطع فيديو أو شرائح (35.36)
Z
توفر JNI - واجهة Java الأصلية - القدرة على تشغيل كود C / C ++ الأصلي من Java ، والعكس صحيح.للاتصال بوظيفة Java من رمز C ++ ، يجب عليك وصف توقيعها بشكل صحيح. لنفترض أننا نريد استدعاء وظيفة: boolean f(String s) ثم في JNI يمكننا الحصول على رابط إليها على النحو التالي: jmethodID myFunc = env->GetMethodID( activityClass, "myFunc", "(Ljava/lang/String;)Z"); فيما يتعلق بالأنواع في وصف التوقيع: يتم استخدام "B" للبايت ، "C" هو char ، "I" int.اكتب التوقيعنوع جافاZمنطقيةBبايتCشارسقصيرأناكثافة العملياتجطويلفتطفوDضعففئة L مؤهلة بالكامل ؛المؤهلين تماما من الدرجة[النوعاكتب [](arg-types) ret-typeنوع الطريقة( المصدر )من الغريب أن أشعل النار مع "B" و "Z" على ما يبدو بشعبية كبيرة بحيث تنص قواعد Android بوضوح: "تذكر أن" B "بايت و" Z "منطقية . "حسنا ، نحن نتذكر)
boolean f(String s)
jmethodID myFunc = env->GetMethodID( activityClass, "myFunc", "(Ljava/lang/String;)Z");
Source: https://habr.com/ru/post/ar443786/More articles:الآثار: IBM ThinkPad T40 ، أول اتصال لاسلكيكيف تتدخل البيولوجيا العصبية في الانتخابات الرئاسية الأمريكيةالصين تقدم نظام تجريبي للتعرف على الوجوه عند الدفع مقابل المترومشروع MCDM. الجزء 1. مفهوميمكن للمطورين الآن استخدام API لشبكة Valve لألعاب Steam الخاصة بهمأساسيات التوجيه الثابت في Mikrotik RouterOSخطأ الناجيأخطاء نموذجية عند العمل مع PostgreSQL. الجزء 2الاتجاهات الرئيسية لشركات تكنولوجيا المعلومات الناشئة في مجال مبيعات العقاراتالاختراقات Zotero: تخزين غير متزامن غير محدود واستخدامه السلس مع rmarkdownAll Articles