اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

السلام عليكم ورحمة الله تعالى وبركاته،

بايثون في الأساس هي لغة برمجة مصممة للعمل على أنظمة التشغيل التقليدية مثل Windows وLinux وmacOS، وليس على الأجهزة المحمولة. ونظام الأندرويد يعتمد على Java وKotlin كلغات أساسية، ويستخدم آلة افتراضية خاصة تسمى ART (Android Runtime) لتشغيل التطبيقات. وهذا يعني أن كود Python لا يمكن تشغيله مباشرة على الأندرويد دون حلول وسطية.

والحل يكمن في تغليف مفسر Python بالكامل داخل تطبيق الأندرويد، مما يعني أننا نقوم بتضمين نسخة كاملة من Python مع جميع المكتبات المطلوبة داخل ملف APK وهذا يشبه حمل حاسوب صغير داخل هاتفك لتشغيل كود Python، مما يفسر لماذا حجم التطبيقات الناتجة يكون كبيرا نسبيا عادة 20-50 ميجابايت حتى للتطبيقات البسيطة.

يمكن استخدام Buildozer فهو أداة تلقائية تقوم بعدة مهام معقدة خلف الكواليس.

أولا يجب القيام بتحميل Python-for-Android (P4A) وهو مشروع مخصص لتجميع Python ومكتباته للعمل على معمارية ARM المستخدمة في معظم هواتف الأندرويد ثم تقوم بتجميع جميع المكتبات المطلوبة من الكود المصدري، مما يعني تحويلها من كود C/C++ إلى ملفات قابلة للتنفيذ على الأندرويد بعدها تقوم بإنشاء wrapper بلغة Java يعمل كجسر بين نظام الأندرويد وكود Python الخاص بك ثم جمع كل هذه المكونات في ملف APK واحد قابل للتثبيت.

بداية لتحضير البيئة ننفذ:

pip install buildozer cython==0.29.19

ونقوم بتثبيت Cython هنا لأنه أداة تحويل كود Python إلى C، مما يسمح لنا بتشغيل أسرع وتوافق أفضل مع المكتبات المكتوبة بلغة C.

والإصدار 0.29.19 محدد لأنه آخر إصدار مستقر تم اختباره مع Buildozer ولأن الإصدارات الأحدث قد تحتوي على تغييرات تكسر التوافق مع عملية البناء، ثم نثبت تبعيات النظام:

sudo apt-get install -y python3-pip build-essential git python3 python3-dev

ثم مكتبات الوسائط المتعددة:

sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

ثم مكتبات SDL (Simple DirectMedia Layer):

sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

ثم مكتبات النظام الأساسية:

sudo apt-get install -y libffi-dev libffi6 zlib1g-dev libssl-dev openssl

ولتهيئة المشروع buildozer.spec نقوم بتنفيذ الأمر:

buildozer init

هذا الأمر ينشئ ملف buildozer.spec وهو قلب عملية البناء. فهذا الملف يحتوي على جميع إعدادات المشروع التي تخبر Buildozer بكيفية بناء التطبيق وأهم الأقسام في buildozer.spec:

[app]
title = اسم التطبيق الذي سيظهر للمستخدم
package.name = اسم الحزمة التقني (بدون مسافات أو أحرف خاصة)
package.domain = org.example (عادة عكس اسم النطاق)
source.dir = . (مجلد كود Python)
version = 0.1
requirements = python3,kivy (المكتبات المطلوبة)

ثم عملية البناء:

buildozer -v android debug

والخيار -v (verbose) يعرض تفاصيل العملية، وهو مهم للغاية لفهم أي أخطاء قد تحدث وأما كلمة debug تعني أن APK الناتج سيكون للاختبار وليس للنشر ومراحل البناء هي كالتالي:

  • تحميل NDK وSDK: يحمل Android NDK (Native Development Kit) للتجميع وSDK لأدوات البناء
  • تحميل Python-for-Android: يحمل P4A والذي يحتوي على Python مجمع خصيصا للأندرويد
  • تجميع المكتبات: كل مكتبة في requirements تُجمّع منفصلة من الكود المصدري
  • إنشاء البرنامج الرئيسي: ينشئ Java wrapper يستدعي كود Python
  • تجميع APK: يجمع كل المكونات في ملف APK واحد
  • 0
نشر
بتاريخ 57 دقائق مضت قال محمد Mmm2:

هل يوجد طريقة سهله من خلال CMD

أسهل طريقة هي من خلال مكتبة BeeWare، ستحتاج إلى تثبيت التالي:

pip install briefcase

ثم تنفيذ الأمر التالي لإنشاء مشروع وسيقوم بسؤالك عن بيانات المشروع قم بإدخالها خطوة بخطوة:

briefcase new

ثم في مجلد src ستجد ملف باسم app.py ضع به الكود الخاص بك، ثم توجه لمسار مجلد المشروع الرئيسي وليس src عن طريق منفذ الأوامر، ثم نفذ الأوامر التالية:

briefcase build android
briefcase package android

ستجد تفصيل هنا:

https://docs.beeware.org/en/latest/tutorial/tutorial-1.html

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...