به عبارت دیگر، طراحی اپلیکیشن کتابخانه Kivy یک «واسط اپلیکیشن کاربردی» (Application Programming Interface) برای انجام وظایف و شغل های پیچیده در چنگ یوزرها، نرم افزارنویسان و گسترشدهندگان نرمافزارهای کاربردی قرار میدهد. براین اساس، کتابخانه kivy یک ابزار انتزاعی برای نرم افزارنویسان و بسطدهندگان اپهای کاربردی در پایتون آماده مینماید. در مرحله سپس و برای ایجاد واسط کاربری گرافیکی بوسیله کتابخانه kivy، اپلیکیشننویسان و بسط دهندگان می بایست معین نمایند که کتابخانه kivy بایستی از کدام کتابخانه backend برای انجام شغل های خویش استعمال نماید.
درین مقاله، جهت نرمافزار نویسی اندروید با پایتون و بسط اپلیکیشنهای اندرویدی، از یک کتابخانه چندسکویی (Cross-Platform) به اسم SDL یا این که Simple DirectMedia Layer، تحت عنوان کتابخانه backend برای kivy به کارگیری میشود و از این نحوه به نرم افزارنویسی اندروید با پایتون میپردازیم. مزیت اصلی کتابخانه SDL، تولید «دسترسی سطح تحت» (low Level Access) به مشقت بارافزارهای گرافیکی از روش OpenGL میباشد. همینطور، در کنار کتابخانه SDL، از کتابخانههای دیگری نظیر GStreamer جهت مدیر صدا و تصویر استعمال میگردد. از آنجایی که چنین کتابخانههایی به وسیله گویش نرم افزارنویسی C مندرجاند، نصب کتابخانه Cython ضروری میباشد.
نصب تعلقهای نرمافزارنویسی گوشی پایتون در کتابخانه kivyبا اعتنا به راهبردهای ارائه گردیده جهت نصب kivy در توزیع Ubuntu سیستم برهان لینوکس [+]، کتابخانههای تحت می بایست نصب شوند تا بتوان از kivy و کتابخانههای دیگر نظیر GStreamer و SDL2 برای بسط یک واسط کاربری در گویش پایتون استفاده نمود.
morteza-jaderyan@ubuntu:~$ sudo apt install -y \\
python-pip \\
build-essential \\
git \\
python3 \\
python3-dev \\
ffmpeg \\
libsdl2-dev \\
libsdl2-image-dev \\
libsdl2-mixer-dev \\
libsdl2-ttf-dev \\
libportmidi-dev \\
libswscale-dev \\
libavformat-dev \\
libavcodec-dev \\
zlib1g-dev \\
libgstreamer1.0 \\
gstreamer1.0-plugins-base \\
gstreamer1.0-plugins-good12345678910111213141516171819202122232425262728293031323334353637
morteza-jaderyan@ubuntu:~$ sudo apt install -y \\
python-pip \\
build-essential \\
git \\
python3 \\
python3-dev \\
ffmpeg \\
libsdl2-dev \\
libsdl2-image-dev \\
libsdl2-mixer-dev \\
libsdl2-ttf-dev \\
libportmidi-dev \\
libswscale-dev \\
libavformat-dev \\
libavcodec-dev \\
zlib1g-dev \\
libgstreamer1.0 \\
gstreamer1.0-plugins-base \\
gstreamer1.0-plugins-goodقابل توجه میباشد کهاین قابلیت برای اپنویسان مهیا شدهاست تا ورژن پایتون متبوع خویش را برای کدنویسی با به کار گیری از kivy تعیین نمایند؛ یوزرها و اپنویسانی که تصمیم به به کارگیری از ورژن 3 پایتون داراهستند، میتوانند از دستورها python-dev و python و آن دسته از نرم افزارنویسانی که قصد به به کارگیری از ورژن 2 پایتون داراهستند، میتوانند از دستورها python3-dev و python3 به کار گیری نمایند. همینطور در روند بعدی، کتابخانه Pip برای فراهمسازی اطراف مجازی موردنیاز برای نصب Kivy نصب میگردد تا موقعیت موردنیاز برای نرمافزار نویسی اندروید با پایتون مهیا آید.
ساختوساز دور و اطراف مجازی برای نصب کتابخانه kivyبعد از فراهمسازی تعلقهای کتابخانه kivy، نخست یک دور و اطراف مجازی ساخته میگردد و آنگاه، کتابخانه kivy در اطراف مجازی تشکیلشده نصب گردد. قابل توجه میباشد که برای نصب کردن کتابخانه kivy در پایتون، نیازی به ساختن دور و بر مجازی نیست. با این اکنون، به شدت سفارش میگردد که برای مدیر پروژههای قابل انعطافافزاری و ایزوله کردن پروژههای متفاوت از یکدیگر، هریک از آنها در یک فضا مجازی مختص به خویش نصب شوند.
قبل از ساختن گوشه و کنار مجازی در پایتون، بایستی اطمینان نتایج گردد که ابزارهای ما یحتاج برای ساختن آن در سیستم جان دار و بهروز می باشند. امر پایین، سیستم را ارزیابی مینماید تا اطمینان نتایج خواهد شد که ابزارهای virtualenv و setuptools در سیستم جان دار و بهروز می باشند.
morteza-jaderyan@ubuntu:~$ sudo pip install --upgrade pip virtualenv setuptools1
morteza-jaderyan@ubuntu:~$ sudo pip install --upgrade pip virtualenv setuptoolsخروجی:
Collecting pipDownloading https://files.pythonhosted.org/packages/30/db/9e38760b32e3e7f40cce46dd5fb107b8c73840df38f0046d8e6514e675a1/pip-19.2.3-py2.py3-none-any.whl (1.4MB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 1.4MB 499kB/sCollecting virtualenvDownloading https://files.pythonhosted.org/packages/8b/12/8d4f45b8962b03ac9efefe5ed5053f6b29334d83e438b4fe379d21c0cb8e/virtualenv-16.7.5-py2.py3-none-any.whl (3.3MB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 3.3MB 747kB/sCollecting setuptoolsDownloading https://files.pythonhosted.org/packages/b2/86/095d2f7829badc207c893dd4ac767e871f6cd547145df797ea26baea4e2e/setuptools-41.2.0-py2.py3-none-any.whl (576kB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 583kB 1.9MB/sInstalling collected packages: pip, virtualenv, setuptoolsFound existing installation: pip 18.1Uninstalling pip-18.1:Successfully uninstalled pip-18.1
Collecting virtualenvUsing cached https://files.pythonhosted.org/packages/8b/12/8d4f45b8962b03ac9efefe5ed5053f6b29334d83e438b4fe379d21c0cb8e/virtualenv-16.7.5-py2.py3-none-any.whlCollecting setuptoolsUsing cached https://files.pythonhosted.org/packages/b2/86/095d2f7829badc207c893dd4ac767e871f6cd547145df797ea26baea4e2e/setuptools-41.2.0-py2.py3-none-any.whlInstalling collected packages: virtualenv, setuptoolsFound existing installation: setuptools 40.6.2Uninstalling setuptools-40.6.2:Successfully uninstalled setuptools-40.6.2Successfully installed setuptools-41.2.0 virtualenv-16.7.5از کتابخانه virtualenv برای ساختن دور و بر مجازی و از کتابخانه setuptools، برای «بستهای سازی» (Packaging) پروژههای قابل انعطافافزاری در لهجه اپنویسی پایتون به کارگیری می شود. بعد از نصب یا این که بهروزرسانی کتابخانههای virtualenv و setuptools، سیستم برای ساختن دور و اطراف مجازی مهیا میگردد. از فرمان ذیل، جهت ساختن یک دور و بر مجازی به اسم mykivyinstall به کار گیری میگردد.
morteza-jaderyan@ubuntu:~$ virtualenv --no-site-packages mykivyinstall1
morteza-jaderyan@ubuntu:~$ virtualenv --no-site-packages mykivyinstallدراین امر، از آرگومان no-site-packages– برای ایزوله کردن اطراف مجازی تشکیل شده، از فضا اپلیکیشننویسی مهم لهجه پایتون به کار گیری میگردد. با چنین کاری، نرمافزارنویسان و بسطدهندگان پایتون توانا خواهند تا فارغ از ایراد در دیگر پروژههای قابل انعطافافزاری، آزادانه روی پروژه اتومات نمایند.
بعداز اجرای امر بالا، مانند صورت پایین، فایلای به اسم mykivyinstall (متناظر با اسم دور و اطراف مجازی ساخت و ساز گردیده) در دایرکتوری فعلی (یا این که پیشفرض) سیستم دلیل لینوکس (توزیع Ubuntu) ساخت میگردد.
نرمافزار نویسی اندروید با پایتونفرمان پیشین، از مفسر پیشفرض پایتون برای اجرای کدها در گوشه و کنار مجازی استعمال مینماید. ایراد اصلی در چنین حالتی این میباشد که ممکن میباشد نرمافزارنویس پیرو به کارگیری از ورژن 3 پایتون برای پروژهقابل انعطافافزاری خویش باشد، در حالی که ورژن 2 پایتون، تحت عنوان ورژن پیشفرض پایتون در سیستم برهان تعریفوتمجید شدهاست. در چنین حالتی، با استعمال از مورد p- و به صورت تحت، برای سیستم معلوم میکنیم که بایستی کدام یک از ورژنهای نصب گردیده از پایتون، تحت عنوان مفسر اساسی جهت اجرای کدهای پایتون در دور و اطراف مجازی گزینه استعمال قرار بگیرد.
morteza-jaderyan@ubuntu:~$ virtualenv --no-site-packages -p /usr/bin/python3 mykivyinstall1
morteza-jaderyan@ubuntu:~$ virtualenv --no-site-packages -p /usr/bin/python3 mykivyinstallبعد از ساختن فضا مجازی، این فضا می بایست فعال گردد تا بتوان کتابخانه kivy را روی آن نصب کرد. از فرمان ذیل، برای فعال سازی دور و اطراف مجازی تشکیل شده به کار گیری میگردد:
morteza-jaderyan@ubuntu:~$ . mykivyinstall/bin/activate1
morteza-jaderyan@ubuntu:~$ . mykivyinstall/bin/activateاز «نقطه» (dot | .) در فرمان پیشین مصرف شده میباشد. امر نقطه (dot | .)، یک فرمان داخلی و درنظرگرفته شده میباشد که محتویات پاس داده گردیده تحت عنوان آرگومان را، در سیستم ادله Ubuntu اجرا مینماید. امر نقطه (.)، مترادف و هم معنی امر source میباشد. در فیض، امر پیشین تماما شبیه فرمان تحت میباشد:
morteza-jaderyan@ubuntu:~$ source mykivyinstall/bin/activate1
morteza-jaderyan@ubuntu:~$ source mykivyinstall/bin/activateبعد از اجرای این فرمان و راه اندازی گوشه و کنار مجازی، پنجره command prompt یا این که به عبارتی ترمینال این چنین تغییر تحول مینماید:
(mykivyinstall) morteza-jaderyan@ubuntu:~$1
(mykivyinstall) morteza-jaderyan@ubuntu:~$نصب کتابخانه Cythonقبل از نصب کتابخانه kivy، ما یحتاج میباشد تا کتابخانه Cython با به کار گیری از فرمان تحت در دور و بر مجازی نصب خواهد شد. از آنجایی که کتابخانههای GStreamer و SDL2 بوسیله لهجه اپنویسی C درج شدهاند، نصب کتابخانه Cython ضروری میباشد.
(mykivyinstall) morteza-jaderyan@ubuntu:~$ pip install cython==0.25.21
(mykivyinstall) morteza-jaderyan@ubuntu:~$ pip install cython==0.25.2خروجی:
Collecting cython==0.25.2Downloading https://files.pythonhosted.org/packages/e2/da/0bb5a20302b99639417ea0450578de734971ee4457ccff77cf6263f7d7d0/Cython-0.25.2-cp27-none-win_amd64.whl (2.1MB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 2.1MB 1.5MB/sInstalling collected packages: cythonSuccessfully installed cython-0.25.2قابل توجه میباشد که نصب یک ورژن خاص از کتابخانه kivy، به ورژن نصب گردیده از کتابخانه Cython بستگی داراست. از آنجایی که بهروزترین ورژن کتابخانه kivy، ورژن 1.11.1 میباشد و این ورژن از kivy برای اجرا، به ورژن 0.25.2 از کتابخانه Cython احتیاج دارااست، در فرمان بالا نیز cython=0.25.2 به وسیله Pip نصب می گردد.
نصب کتابخانه kivy برای اپلیکیشن نویسی اندروید با پایتونبرای نرمافزار نویسی اندروید با پایتون و نصب کتابخانه kivy در دور و اطراف مجازی، از خط فرمان ذیل به کارگیری میگردد:
(mykivyinstall) morteza-jaderyan@ubuntu:~$ pip install kivy1
(mykivyinstall) morteza-jaderyan@ubuntu:~$ pip install kivyبعد از اجرای فرمان بالا، فولدرهای مربوط به کتابخانه kivy دانلود و نصب می گردد. همینطور، بعد از پیروزی آمیز بودن نصب کتابخانه kivy، خروجی تحت به وجود خواهد آمد:
Collecting kivyDownloading https://files.pythonhosted.org/packages/2b/a5/0c9b7e8d7970fcde223772487872aee499b56684da87e8fbf9b21fce7828/Kivy-1.11.1-cp27-cp27m-win_amd64.whl (4.3MB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 4.3MB 1.5MB/sCollecting Kivy-Garden>=0.1.4 (from kivy)Downloading https://files.pythonhosted.org/packages/7d/68/decaee596ff8168a39432eb3949fc7c0be952ebb9467806823bffc165d48/kivy-garden-0.1.4.tar.gzCollecting pygments (from kivy)Using cached https://files.pythonhosted.org/packages/5c/73/1dfa428150e3ccb0fa3e68db406e5be48698f2a979ccbcec795f28f44048/Pygments-2.4.2-py2.py3-none-any.whlCollecting docutils (from kivy)Downloading https://files.pythonhosted.org/packages/3a/dc/bf2b15d1fa15a6f7a9e77a61b74ecbbae7258558fcda8ffc9a6638a6b327/docutils-0.15.2-py2-none-any.whl (548kB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 552kB 1.4MB/sCollecting requests (from Kivy-Garden>=0.1.4->kivy)Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 61kB 1.7MB/sCollecting certifi>=2017.4.17 (from requests->Kivy-Garden>=0.1.4->kivy)Downloading https://files.pythonhosted.org/packages/69/1b/b853c7a9d4f6a6d00749e94eb6f3a041e342a885b87340b79c1ef73e3a78/certifi-2019.6.16-py2.py3-none-any.whl (157kB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 163kB 1.9MB/sCollecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests->Kivy-Garden>=0.1.4->kivy)Downloading https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl (150kB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 153kB 2.0MB/sCollecting idna<2.9,>=2.5 (from requests->Kivy-Garden>=0.1.4->kivy)Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 61kB 1.0MB/sCollecting chardet<3.1.0,>=3.0.2 (from requests->Kivy-Garden>=0.1.4->kivy)Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)100% |UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU| 143kB 2.0MB/sInstalling collected packages: certifi, urllib3, idna, chardet, requests, Kivy-Garden, pygments, docutils, kivyRunning setup.py install for Kivy-Garden ... doneSuccessfully installed Kivy-Garden-0.1.4 certifi-2019.6.16 chardet-3.0.4 docutils-0.15.2 idna-2.8 kivy-1.11.1 pygments-2.4.2 requests-2.22.0 urllib3-1.25.3
نکته قابل توجه دربارهی اپ نویسی اندروید با پایتون و گسترش نرمافزارهای اندرویدی، بحرانبرانگیز بودن نصب کتابخانه kivy در فضاهای مجازی میباشد. چون، نصب شدن پیروزی آمیز بخش اعظمی از تعلقهای اپنویسی موردنیاز برای صحیح فعالیت کردن این کتابخانه، به سیستم برهان نصب گردیده روی سیستم، خصوصیات سیستم، کتابخانههای از پیش نصب گردیده در سیستم و حتی کتابخانههای از مداد افتاده بستگی داراست. از یک سو، روند نصب کتابخانه kivy و تعلقهای آن روشن و رمز راست وجود ندارد و از سوی دیگر، راهحل مطلوب و یکسانی نیز برای رفع خطاهای احتمالی در هنگام نصب آن ها ارائه نشده میباشد. تحت عنوان مثال، راه و روش دیگر نصب کردن کتابخانه kivy با غرض اپلیکیشن نویسی اندروید با پایتون، استعمال از فولدر با فرمت wheel و یا این که «کلون» (Clone) کردن پروژه Github متناظر با این کتابخانه، از روش خط دستوری تحت میباشد:
(mykivyinstall) morteza-jaderyan@ubuntu:~$ pip install git+https://github.com/kivy/kivy.git@master1
(mykivyinstall) morteza-jaderyan@ubuntu:~$ pip install git+https://github.com/kivy/kivy.git@masterایمپورت کردن کتابخانه kivy در پایتوندر مرحله بعد از آن و بعد از نصب کردن کتابخانه kivy در دور و اطراف مجازی تعریفوتمجید گردیده، میقدرت صحیح فعالیت کردن kivy در گوشه و کنار مجازی را به وسیله فرمان import kivy در ترمینال سیستم برهان لینوکس آزمون کرد.
نرمافزار نویسی اندروید با پایتونبعد از اطمینان از صحیح عمل کردن کتابخانه kivy، در مرحله بعد از آن، یک اپلیکیشن کاربردی بسیار معمولی بوسیله کتابخانه kivy ساخته گردد.