در این مطلب، با مبحث برنامه نویسی اندروید با پایتون آشنا خواهید شد یا به بیانی دیگر به توضیح اصول برنامه نویسی اندروید با پایتون خواهیم پرداخت. زبان جاوا، زبان رسمی توسعه برنامههای کاربردی در اندروید محسوب و توسط «اندروید استودیو» (Android Studio) پشتیبانی میشود. با این حال، فرایند یادگیری جاوا برای برنامهنویسی در اندروید تا حدودی سخت و وقتگیر است.
در سالهای اخیر زبان دیگری به نام «کاتلین» (Kotlin) برای برنامهنویسی در اندروید معرفی شده است که از جهات زیادی به جاوا شباهت دارد و مبتنی بر آن توسعه داده شده است. هم اکنون، کاتلین به عنوان دومین زبان رسمی برای توسعه برنامههای اندرویدی محسوب میشود. ویژگی مهم کاتلین که در نقطه مقابل جاوا قرار دارد، «پرگویی» (verbose) کمتر، آسانی یادگیری، فرایند کدنویسی کوتاهتر و خوانایی بالاتر کدهای آن (نسبت به جاوا) است.
با این حال، در چند سال اخیر ابزارهای دیگری برای برنامهنویسی اندروید، در دیگر زبانهای برنامهنویسی نیز ارائه شده است. هدف از ارائه این مطلب، آشناسازی خوانندگان و مخاطبان با مبحث برنامه نویسی اندروید با پایتون و توسعه برنامههای کاربردی توسط این زبان برنامهنویسی است. به طور ویژه، در این مطلب گامهای لازم جهت توسعه یک برنامه کاربردی ساده برای سیستم عامل اندروید با استفاده از «زبان برنامهنویسی پایتون» (Python Programming Language) آموزش داده میشود. بنابراین اگر قصد دارید اقدام به برنامه نویسی اندروید با پایتون بکنید در ادامه این مقاله با مجله فرادرس همراه باشید.
پیش از اینکه قادر به استفاده از کتابخانه Kivy در زبان پایتون، جهت توسعه برنامههای کاربردی اندرویدی باشید، لازم است تا ابتدا زبان پایتون را روی سیستم عامل مقصد خود نصب کنید. کاربران و مخاطبان این مطلب میتوانند آموزش جامع نصب پایتون در سیستمهای عامل مختلف را در اینجا مطالعه کنند. همچنین، مجموعهای از آموزشهای مرتبط با یادگیری پایتون و نصب نسخه 2 و 3 پایتون در سیستمهای عامل ویندوز، لینوکس و مک نیز در اینجا گردآوری شده است.
جهت استفاده از زبان پایتون برای اندروید (برنامه نویسی اندروید با پایتون) و توسعه برنامههای کاربردی در این سیستم عامل محبوب، از یک کتابخانه برنامهنویسی در زبان پایتون به نام Kivy استفاده میشود. کتابخانه Kivy، یک «ابزار و پلتفرم چندسکویی» (Cross-Platform Framework) در زبان پایتون و برنامه نویسی اندروید با پایتون محسوب میشود. همچنین در این آموزش، از سیستمعامل لینوکس و توزیع Ubuntu جهت برنامه نویسی اندروید با پایتون استفاده میشود.
پیش از آنکه قادر به نصب، اجرا و استفاده از Kivy جهت توسعه برنامههای کاربردی در اندروید باشیم، لازم است تا «وابستگیهای برنامهنویسی» (Programming Dependencies) این ابزار کاربردی نصب و آماده شوند. شایان ذکر است که بیشتر زمان شما، صرف آمادهسازی محیط kivy و نصب کتابخانههای لازم برای اطمینان از اجرای صحیح آن در تولید برنامههای اندرویدی میشود.
اگر چه نصب و آمادهسازی بستهها و وابستگیهای برنامهنویسی Kivy ممکن است زمانگیر باشد، با این حال وجود آنها جهت برنامه نویسی اندروید با پایتون و توسعه برنامههای کاربردی اندرویدی ضروری است. همچنین، برای جلوگیری از ایجاد خطاهای ناشی از تناقضات نسخههای مختلف بستههای برنامهنویسی با یکدیگر، کتابخانه Kivy در یک «محیط مجازی» (Virtual Environment) نصب خواهد شد.
ساخت اپلیکیشن اندرویدی در پایتون با استفاده از Kivy
در این مطلب و برای آموزش برنامه نویسی اندروید با پایتون و توسعه برنامههای کاربردی در این سیستم عامل، از توزیع Ubuntu سیستم عامل لینوکس استفاده شده است. همچنین، نسخه 3.6.5 زبان برنامهنویسی پایتون جهت اجرای Kivy و تولید برنامههای اندرویدی مورد استفاده قرار میگیرد. البته، از نسخههای بهروزتر زبان پایتون نیز میتوان برای اجرای Kivy استفاده کرد (تا زمان نگارش این مطلب، بهروزترین نسخه زبان برنامهنویسی پایتون، نسخه 3.7.4 است). با این حال، تفاوتهای اندکی در کدهای نوشته شده برای اجرای Kivy در نسخههای مختلف پایتون وجود دارد.
نکته بسیار مهم در مورد آموزش ارائه شده برای برنامه نویسی اندروید با پایتون و توسعه برنامههای اندرویدی این است که برای نصب کتابخانهها، پیمایش در دایرکتوریهای مختلف سیستم عامل لینوکس، کپی/حذف/استخراج فایلها و اجرای اسکریپتهای پایتون، خوانندگان و مخاطبان این مطلب باید درک ابتدایی از پایتون و دستورات ترمینال لینوکس داشته باشند.
مطلب آموزش برنامه نویسی اندروید با پایتون و چگونگی توسعه برنامههای اندرویدی در پایتون، به بخشهای زیر تقسیمبندی میشود:
- در بخش اول، مقدمهای از کتابخانه kivy در زبان پایتون ارائه خواهد شد.
- در بخش دوم، نصب وابستگیهای برنامهنویسی لازم برای اجرای Kivy آموزش داده میشود.
- در بخش سوم، ساختن محیط مجازی برای نصب کتابخانه Kivy آموزش داده خواهد شد.
- در بخش چهارم، آموزش نصب کتابخانه Cython در زبان پایتون ارائه میشود.
- در بخش پنجم، چگونگی نصب کتابخانه Kivy در پایتون نمایش داده میشود.
- در بخش ششم، کتابخانه kivy در زبان برنامهنویسی پایتون import میشود تا برای ساخت برنامههای کاربردی اندرویدی مورد استفاده قرار بگیرد.
- در بخش هفتم، یک برنامه کاربردی ساده، با استفاده از Kivy در زبان پایتون ساخته میشود تا در مراحل بعد، نسخه اندرویدی آن توسط کتابخانههای kivy و Buildozer تولید شود.
- در بخش هشتم، نصب کتابخانه Buildozer در زبان پایتون ارائه میشود.
- در بخش نهم، فایل تنظیمات کتابخانه Buildozer برای تولید برنامههای اندرویدی ساخته میشود.
- در بخش دهم، برنامه کاربردی تولید شده، توسط کتابخانه Buildozer به نسخه اندرویدی آن تبدیل میشود.
بنابراین، جهت برنامه نویسی اندروید با پایتون و توسعه برنامههای اندرویدی، علاوه بر کتابخانه kivy، نصب و آمادهسازی کتابخانههای دیگری نظیر Buildozer و Cython ضروری است.
برنامه نویسی اندروید با پایتون: مقدمه
کتابخانه kivy برای تولید «واسطهای کاربری» (User Interfaces) در پایتون مورد استفاده قرار میگیرد. برتری مهم kivy نسبت به دیگر کتابخانههای مشابه در پایتون، «انتزاعی» (Abstraction) و «پیمانهای» (Modularity) بودن آن است. این کتابخانه، به برنامهنویس و توسعهدهندگان برنامههای کاربردی اجازه میدهد تا بدون درگیر شدن با جزئیات پیچیده و غیر ضروری، واسط کاربری طبیعی و کاربر پسند برای برنامههای کاربردی پایتون طراحی کنند.
به عبارت دیگر، کتابخانه 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 برای توسعه یک واسط کاربری در زبان پایتون استفاده کرد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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 setuptools |
خروجی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Collecting pip Downloading https://files.pythonhosted.org/packages/30/db/9e38760b32e3e7f40cce46dd5fb107b8c73840df38f0046d8e6514e675a1/pip-19.2.3-py2.py3-none-any.whl (1.4MB) 100%|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|1.4MB499kB/s Collecting virtualenv Downloading https://files.pythonhosted.org/packages/8b/12/8d4f45b8962b03ac9efefe5ed5053f6b29334d83e438b4fe379d21c0cb8e/virtualenv-16.7.5-py2.py3-none-any.whl (3.3MB) 100%|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|3.3MB747kB/s Collecting setuptools Downloading https://files.pythonhosted.org/packages/b2/86/095d2f7829badc207c893dd4ac767e871f6cd547145df797ea26baea4e2e/setuptools-41.2.0-py2.py3-none-any.whl (576kB) 100%|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|583kB1.9MB/s Installing collected packages:pip,virtualenv,setuptools Found existing installation:pip18.1 Uninstalling pip-18.1: Successfully uninstalled pip-18.1 Collecting virtualenv Using cached https://files.pythonhosted.org/packages/8b/12/8d4f45b8962b03ac9efefe5ed5053f6b29334d83e438b4fe379d21c0cb8e/virtualenv-16.7.5-py2.py3-none-any.whl Collecting setuptools Using cached https://files.pythonhosted.org/packages/b2/86/095d2f7829badc207c893dd4ac767e871f6cd547145df797ea26baea4e2e/setuptools-41.2.0-py2.py3-none-any.whl Installing collected packages:virtualenv,setuptools Found existing installation:setuptools40.6.2 Uninstalling setuptools-40.6.2: Successfully uninstalled setuptools-40.6.2 Successfully installed setuptools-41.2.0virtualenv-16.7.5 |
از کتابخانه virtualenv برای ساختن محیط مجازی و از کتابخانه setuptools، برای «بستهای سازی» (Packaging) پروژههای نرمافزاری در زبان برنامهنویسی پایتون استفاده میشود. پس از نصب یا بهروزرسانی کتابخانههای virtualenv و setuptools، سیستم برای ساختن محیط مجازی آماده میشود. از دستور زیر، جهت ساختن یک محیط مجازی به نام mykivyinstall استفاده میشود.
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 mykivyinstall |
پس از ساختن محیط مجازی، این محیط باید فعال شود تا بتوان کتابخانه kivy را روی آن نصب کرد. از دستور زیر، برای فعالسازی محیط مجازی ساخته شده استفاده میشود:
morteza-jaderyan@ubuntu:~$.mykivyinstall/bin/activate |
از «نقطه» (dot | .) در دستور قبلی استفاده شده است. دستور نقطه (dot | .)، یک دستور داخلی و تعبیه شده است که محتویات پاس داده شده به عنوان آرگومان را، در سیستم عامل Ubuntu اجرا میکند. دستور نقطه (.)، مترادف دستور source است. در نتیجه، دستور قبلی کاملا مشابه دستور زیر است:
morteza-jaderyan@ubuntu:~$source mykivyinstall/bin/activate |
پس از اجرای این دستور و فعالسازی محیط مجازی، پنجره command prompt یا همان ترمینال به این شکل تغییر میکند:
(mykivyinstall)morteza-jaderyan@ubuntu:~$ |
نصب کتابخانه Cython
پیش از نصب کتابخانه kivy، لازم است تا کتابخانه Cython با استفاده از دستور زیر در محیط مجازی نصب شود. از آنجایی که کتابخانههای GStreamer و SDL2 توسط زبان برنامهنویسی C نوشته شدهاند، نصب کتابخانه Cython ضروری است.
(mykivyinstall)morteza-jaderyan@ubuntu:~$pip install cython==0.25.2 |
خروجی:
Collecting cython==0.25.2 Downloading https://files.pythonhosted.org/packages/e2/da/0bb5a20302b99639417ea0450578de734971ee4457ccff77cf6263f7d7d0/Cython-0.25.2-cp27-none-win_amd64.whl (2.1MB) 100%|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|2.1MB1.5MB/s Installing collected packages:cython Successfully 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 kivy |
پس از اجرای دستور بالا، فایلهای مرتبط با کتابخانه kivy دانلود و نصب میشود. همچنین، پس از موفقیت آمیز بودن نصب کتابخانه kivy، خروجی زیر تولید خواهد شد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Collecting kivy Downloading https://files.pythonhosted.org/packages/2b/a5/0c9b7e8d7970fcde223772487872aee499b56684da87e8fbf9b21fce7828/Kivy-1.11.1-cp27-cp27m-win_amd64.whl (4.3MB) 100%|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|4.3MB1.5MB/s Collecting Kivy-Garden>=0.1.4(from kivy) Downloading https://files.pythonhosted.org/packages/7d/68/decaee596ff8168a39432eb3949fc7c0be952ebb9467806823bffc165d48/kivy-garden-0.1.4.tar.gz Collecting pygments(from kivy) Using cached https://files.pythonhosted.org/packages/5c/73/1dfa428150e3ccb0fa3e68db406e5be48698f2a979ccbcec795f28f44048/Pygments-2.4.2-py2.py3-none-any.whl Collecting docutils(from kivy) Downloading https://files.pythonhosted.org/packages/3a/dc/bf2b15d1fa15a6f7a9e77a61b74ecbbae7258558fcda8ffc9a6638a6b327/docutils-0.15.2-py2-none-any.whl (548kB) 100%|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU|552kB1.4MB/s Collecting 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|61kB1.7MB/s Collecting 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|163kB1.9MB/s Collecting 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|153kB2.0MB/s Collecting 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|61kB1.0MB/s Collecting 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|143kB2.0MB/s Installing collected packages:certifi,urllib3,idna,chardet,requests,Kivy-Garden,pygments,docutils,kivy Running setup.py install forKivy-Garden...done Successfully installed Kivy-Garden-0.1.4certifi-2019.6.16chardet-3.0.4docutils-0.15.2idna-2.8kivy-1.11.1pygments-2.4.2requests-2.22.0urllib3-1.25.3 |
نکته شایان توجه در مورد برنامه نویسی اندروید با پایتون و توسعه برنامههای اندرویدی، چالشبرانگیز بودن نصب کتابخانه kivy در محیطهای مجازی است. زیرا، نصب شدن موفقیت آمیز بسیاری از وابستگیهای برنامهنویسی لازم برای درست کار کردن این کتابخانه، به سیستم عامل نصب شده روی سیستم، مشخصات سیستم، کتابخانههای از پیش نصب شده در سیستم و حتی کتابخانههای از قلم افتاده بستگی دارد. از یک سو، فرایند نصب کتابخانه kivy و وابستگیهای آن واضح و سر راست نیست و از سوی دیگر، راه حل مناسب و یکسانی نیز برای رفع خطاهای احتمالی در هنگام نصب آنها ارائه نشده است. به عنوان نمونه، راه دیگر نصب کردن کتابخانه kivy با هدف برنامه نویسی اندروید با پایتون، استفاده از فایل با فرمت wheel و یا «کلون» (Clone) کردن پروژه Github متناظر با این کتابخانه، از طریق خط دستوری زیر است:
(mykivyinstall)morteza-jaderyan@ubuntu:~$pip install git+https://github.com/kivy/kivy.git@master |
ایمپورت کردن کتابخانه kivy در پایتون
در مرحله بعد و پس از نصب کردن کتابخانه kivy در محیط مجازی تعریف شده، میتوان درست کار کردن kivy در محیط مجازی را توسط دستور import kivy در ترمینال سیستم عامل لینوکس امتحان کرد.
پس از اطمینان از درست کار کردن کتابخانه kivy، در مرحله بعد، یک برنامه کاربردی بسیار ساده توسط کتابخانه kivy ساخته خواهد شد.
ساختن یک برنامه کاربردی اندرویدی توسط kivy پایتون
برنامههای ساخته شده توسط kivy، یک فایل نوشته شده به زبان پایتون هستند که قالب کدهای کتابخانه kivy را در خود جای دادهاند. فایل پایتون استفاده شده برای ساختن برنامه کاربردی، فایل main.py نام دارد. دلیل نامگذاری فایل پایتون به این شکل این است که هنگام ساختن برنامه کاربردی برای دستگاهها وگوشیهای همراه، حتما باید فایلی به نام main.py وجود داشته باشد تا به عنوان نقطه شروع برنامه و جهت اجرای برنامه کاربردی مورد استفاده قرار بگیرد. برنامه کاربردی که قرار است تولید شود، حاوی سه عنصر مرتبط با کتابخانه kivy خواهد بود:
- «عنصر ورودی متنی» (TextInput Widget)
- «عنصر برچسب» (Label Widget)
- عنصر button
این عناصر، به صورت عمودی و از طریق عنصر طرحبندی boxLayout، در یک پنجره (واسط کاربری) قرار میگیرند. این عناصر، با توجه به ترتیب اضافه شدن آنهان به عنصر طرحبندی boxLayout، در پنجره ظاهر خواهند شد. به عنوان نمونه، با توجه به کدهای زیر، عنصر ورودی متنی یا TextInput اولین عنصر در بالای پنجره، عنصر برچسب یا Label دومین عنصر در وسط پنجره و عنصر button، سومین عنصر در پایین پنجره خواهد بود.
وقتی که کاربر روی عنصر button کلیک میکند، داده متنی وارد شده در عنصر ورودی متنی یا TextInput، در عنصر Label نمایش داده میشود. کد kivy این برنامه کاربردی ساده در زیر نمایش داده شده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | importkivy.app importkivy.uix.boxlayout importkivy.uix.textinput importkivy.uix.label importkivy.uix.button classSimpleApp(kivy.app.App): defbuild(self): self.textInput=kivy.uix.textinput.TextInput() self.label=kivy.uix.label.Label(text="Your Message.") self.button=kivy.uix.button.Button(text="Click Me.") self.button.bind(on_press=self.displayMessage) self.boxLayout=kivy.uix.boxlayout.BoxLayout(orientation="vertical") self.boxLayout.add_widget(self.textInput) self.boxLayout.add_widget(self.label) self.boxLayout.add_widget(self.button) returnself.boxLayout defdisplayMessage(self,btn): self.label.text=self.textInput.text if__name__=="__main__": simpleApp=SimpleApp() simpleApp.run() |
پس از اجرای این برنامه کاربردی، تابع build اولین تابعی است که فراخوانی و اجرا میشود. بنابراین، تابع build در عمل تابع سازندهای خواهد بود که برای مقداردهی اولیه «واسط گرافیکی کاربری» (Graphical User Interface) برنامه تولید شده به وسیله Kivy، فراخوانی و اجرا میشود. برای اینکه برنامه کاربردی ایجاد شده به درستی اجرا شود، باید اطمینان حاصل شود که در فایل main.py، متغیر __name__ در دستور if، مقداری برابر با __main__ دارد.
برای اجرای برنامه کاربردی پیادهسازی شده، ابتدا باید محیط مجازی kivy تعریف شده به نام mykivyinstall فعال شود. سپس، فایل main.py موجود در دایرکتوری پروژه اجرا شود. این مراحل، در شکل زیر نمایش داده شدهاند.
شکل زیر، نمایی از برنامه کاربردی ساخته شده و عناصر (Widget) موجود در آن را نمایش میدهد. شایان توجه است که ارتفاع پنجره اصلی این برنامه کاربردی، به طور برابر به سه بخش تقسیم و هر بخش، به یکی از عناصر اختصاص داده شده است. در مثال نمایش داده شده در شکل زیر، پیام Hello Kivy در عنصر ورودی متنی یا TextInput وارد شده است. وقتی که کاربر روی عنصر button (دکمه .Click Me) کلیک میکند، داده متنی وارد شده در عنصر ورودی متنی (TextInput) یا همان پیام Hello Kivy، در عنصر Label نمایش داده میشود.
تا این قسمت از آموزش برنامه نویسی اندروید با پایتون و ساختن اپلیکیشنهای کاربردی اندرویدی، یک برنامه کاربردی Desktop، با استفاده از کتابخانه kivy ساخته شده است. در مراحل بعدی، هدف آموزش نحوه «بستهای سازی» (Packaging) این پروژه به عنوان یک برنامه کاربردی اندرویدی است. در ادامه این آموزش برنامه نویسی اندروید با پایتون با مجله فرادرس همراه باشید.
نصب کتابخانه Buildozer در پایتون
کتابخانه Buildozer، ابزاری برای بستهای سازی پروژههای پایتون در قالب برنامههای اندرویدی است. پس از نصب کتابخانه Buildozer، فرایند ساختن برنامههای اندرویدی، از روی پروژههای پایتون نوشته شده توسط kivy خودکار میشود. پیش از نصب این کتابخانه لازم است تا وابستگیهای برنامهنویسی لازم برای اجرای این کتابخانه نصب شوند. با توجه دستورالعملهای ارائه شده برای نصب این کتابخانه در [+]، با استفاده از دستور زیر در سیستم عامل Ubuntu قادر خواهید بود تا تمامی کتابخانهها و وابستگیهای برنامهنویسی لازم برای اجرای این کتابخانه را نصب کنید:
morteza-jaderyan@ubuntu:~$sudo dpkg--add-architecture i386 morteza-jaderyan@ubuntu:~$sudo getinstall build-essential ccache libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 python2.7python2.7-dev openjdk-8-jdk unzip zlib1g-dev zlib1g:i386 |
با استفاده از دستور زیر، کتابخانه Buildozer نصب میشود. این دستور برای سیستم مشخص میکند که باید آخرین نسخه از کتابخانه Buildozer در سیستم نصب شود:
morteza-jaderyan@ubuntu:~$sudo install–upgrade buildozer |
خروجی:
Collecting buildozer Using cached https://files.pythonhosted.org/packages/49/07/62f479998ea5e8680ad33f0fbafdc96f721cbad69ff90cc957988b8cd252/buildozer-0.39.tar.gz Requirement already satisfied,skipping upgrade:pexpect inc:\python27\lib\site-packages(from buildozer)(4.7.0) Requirement already satisfied,skipping upgrade:virtualenv inc:\python27\lib\site-packages(from buildozer)(16.7.5) Requirement already satisfied,skipping upgrade:sh inc:\python27\lib\site-packages(from buildozer)(1.12.14) Requirement already satisfied,skipping upgrade:ptyprocess>=0.5inc:\python27\lib\site-packages(from pexpect->buildozer)(0.6.0) Installing collected packages:buildozer Running setup.py install forbuildozer...done Successfully installed buildozer-0.39 |
پس از نصب موفقیتآمیز کتابخانه Buildozer، در مرحله بعدی، تنظیمات و فایلهای لازم برای ساختن موفق و بدون خطای برنامه اندرویدی آمادهسازی میشوند.
ساختن فایل تنظیمات کتابخانه Buildozer برای تولید برنامه اندرویدی در پایتون
ساختار پروژه تولید برنامه اندرویدی از روی برنامه نوشته شده توسط کتابخانه kivy در شکل زیر نمایش داده شده است:
برای این پروژه برنامه نویسی اندروید با پایتون، پوشهای به نام simpleapp تعریف شده است. در این پوشه، فایل main.py که در مراحل قبلی تولید شده بود، قرار داده میشود. ویژگی بسیار مهم و متمایزکننده kivy این است که فایل پایتون تولید شده (main.py)، بدون هیچ تغییری در نسخه اندروید برنامه نیز استفاده خواهد شد. علاوه بر فایل main.py، فایل دیگری به نام buildozer.spec نیز وجود دارد که برای تولید برنامه اندرویدی حیاتی است. این فایل اطلاعاتی در مورد برنامه اندرویدی نظیر نام و نسخه آن را در اختیار کاربران و برنامهنویسان قرار میدهد.
فایل buildozer.spec به راحتی از طریق ابزارهای کتابخانه Buildozer تولید میشود. پس از تغییر دایرکتوری فعال سیستم به دایرکتوری که فایل main.py در آن قرار داده شده است، دستور زیر جهت تولید فایل buildozer.spec اجرا میشود:
morteza-jaderyan@ubuntu:~/Desktop/simpleapp$buildozer init |
پس از اجرای این دستور، پیامی مبنی بر موفقیتآمیز بودن تولید فایل buildozer.spec، به شکل زیر نمایش داده میشود:
برخی از مهمترین ویژگیهای برنامه اندرویدی که در فایل buildozer.spec تعریف شده است، در ادامه نمایش داده خواهد شد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [app] title=Simple Application package.name=simpleapp package.domain=org.simpleapp source.dir=. source.include_exts=py,png,jpg,kv,atlas version=0.1 requirements=kivy orientation=portrait osx.python_version=3 osx.kivy_version=1.11.1 fullscreen=0 |
به عنوان نمونه، این فایل اطلاعاتی نظیر نام برنامه، دایرکتوری منبع (دایرکتوری قرار گرفتن فایلهای برنامه؛ در این حالت دایرکتوری پیشفرض است)، نسخه نرمافزار، نسخه پایتون و kivy و سایر موارد را در خود جای داده است. همچنین این امکان برای برنامهنویسان فراهم شده است تا هر کدام از اطلاعات موجود در این فایل را تغییر دهند. پس از آمادهسازی تمامی فایلها لازم برای ساختن برنامه اندرویدی، در مرحله بعدی، فرایند ساختن آن آغاز میشود.
ساختن اپلیکیشن اندرویدی پایتون با استفاده از کتابخانه Buildozer
کتابخانه Buildozer، یکی از بهترین ابزارهای ساختن برنامههای اندرویدی از روی برنامههای نوشته شده توسط کتابخانه kivy است. این ابزار، به بهترین شکل ممکن، محیط برنامهنویسی را برای تولید برنامه اندرویدی آماده میکند. همچنین، تمامی نیازمندیهای اساسی برای تولید برنامه اندرویدی، توسط این کتابخانه آمادهسازی میشوند؛ مواردی نظیر python-for-android و Android SDK از جمله چنین نیازمندیهایی هستند. با تنظیم کردن دایرکتوری برنامه به عنوان دایرکتوری پیشفرض و اجرای دستور زیر، فایل نصبی برنامه اندرویدی ساخته میشود و در دایرکتوری برنامه قرار میگیرد.
morteza-jaderyan@ubuntu:~/Desktop/simpleapp$buildozer android release |
تصویر زیر نتایج حاصل از اجرای دستور بالا را نمایش میدهد. وقتی که برنامه اندرویدی برای اولین بار ساخته میشود، کتابخانه Buildozer تمامی کتابخانههای و ابستگیهای لازم را دانلود و نصب میکند. بنابراین، فرایند ساختن برنامه اندرویدی در اولین بار، کمی زمانبر است.
پس از اجرای این دستور، فایل اجرایی برنامه اندرویدی با پسوند APK در دایرکتوری زیر (درون دایرکتوری برنامه) قرار میگیرد:
simpleapp/.buildozer/android/platform/build/dists/simpleapp/bin/
برای نصب برنامه اندرویدی روی گوشیها و دستگاههای اندرویدی، تنها کافی است فایل APK تولید شده را به دستگاه منتقل و اجرا کنید. همچنین با استفاده از دستور زیر و وصل کردن گوشی یا دستگاه اندرویدی به سیستم، عملیات ساختن برنامه، «بهکاراندازی» (Deploying) و اجرای آن به طور همزمان انجام میشود.
morteza-jaderyan@ubuntu:~/Desktop/simpleapp$buildozer android release deploy run |
شکل زیر، اجرای برنامه در دستگاه اندرویدی را نشان میدهد.
مجموعه آموزشهای مرتبط با زبان برنامهنویسی پایتون که در مجله فرادرس تهیه شدهاند و برای عموم مخاطبان و خوانندگان در دسترس قرار گرفتهاند، در اینجا گردآوری شدهاند. در صورتی که تمایل دارید با زبان برنامهنویسی پایتون و نحوه کدنویسی در این زبان آشنا شوید، توصیه میشود که آموزشهای ارائه شده در این مطلب را مطالعه کنید. در اینجا به پایان مطلب برنامه نویسی اندروید با پایتون میرسیم.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون Python
- گنجینه آموزشهای برنامه نویسی پایتون (Python)
- مجموعه آموزشهای برنامهنویسی
- زبان برنامه نویسی پایتون (Python) — از صفر تا صد
- ترفندهای برنامهنویسی در پایتون — از صفر تا صد
- نصب پایتون — از صفر تا صد
- آموزش پایتون (Python) — مجموعه مقالات جامع وبلاگ فرادرس
^^
«مرتضی جادریان»، دانشجوی مقطع دکتری مهندسی کامپیوتر گرایش هوش مصنوعی است. او در زمینه سیستمهای هوشمند، به ویژه سیستمهای هوشمند اطلاعاتی، روشهای یادگیری ماشین، سیستمهای دانش محور و محاسبات تکاملی فعالیت دارد.
بر اساس رای 39 نفر
آیا این مطلب برای شما مفید بود؟