تخفیف نوروزی پی استور

کد تخفیف: PR1404

شامل تمامی آثار
روز
ساعت
دقیقه
ثانیه

با خرید اشتراک ویژه ، با هزینه بسیار کمتر به فایل های پاورپوینت دسترسی داشته باشید!

آموزش ساخت اپلیکیشن موبایل با پایتون – ساخت برنامه موبایل با فریم ورک کیوی Kivy

آموزش ساخت اپلیکیشن موبایل با پایتون - ساخت برنامه موبایل با فریم ورک کیوی Kivy
امروزه اکثر توسعه دهندگان و برنامه‌نویسان بر روی اپلیکیشن‌های موبایل و یا برنامه‌های وب کار می‌کنند. در پایتون قابلیت توسعه و ساخت اپلیکیشن با بسته‌های مخلف مانند Kivy ،PyQt یا حتی کتابخانه Toga Beeware وجود دارد. در این پست به آموزش ساخت اپلیکیشن موبایل با پایتون خواهیم پرداخت و با استفاده از فریم ورک کیوی kivy ساخت یک برنامه ساده‌ای را آموزش خواهیم داد. کار کردن با فریم‌ورک kivy مزایای فراوانی دارد ازجمله اینکه اپلیکیشن شما در همه سیستم‌عامل‌ها یکسان خواهد بود و بعد از هر تغییر، نیازی به کامپایل کد، نخواهید داشت.

فهرست مطالب

در این آموزش شما یاد می گیرید که چگونه:

  • با ابزارک های Kivy کار کنید.
  • با UI ظاهر سازی کنید.
  • رویدادها یا Event ها را اضافه کنید.
  • از زبان KV استفاده کنید.
  • یک برنامه ماشین حساب ایجاد کنید.
  • برنامه خود را برای iOS ،Android ،Windows و macOS پک یا بسته بندی کنید.

در این آموزش فرض بر این است که شما با برنامه‌نویسی شی‌گرا آشنا هستید. اگر اینطور نیست، آموزش برنامه‌نویسی شی‌گرا پایتون (OOP) را مطالعه کنید.

فریم‌ورک کیوی Kivy

Kivy برای اولین بار در اوایل سال ۲۰۱۱ منتشر شد. این فریم‌ورک چند پلتفرمی را می‌توان در سیستم‌عامل‌های ویندوز، مک، لینوکس و رزبری پای اجرا کرد. کیوی علاوه بر ورودی‌های معمولی صفحه کلید و ماوس از رویدادهای چند لمسی نیز پشتیبانی می‌کند. Kivy حتی از شتاب‌دهنده گرافیکی GPU خود نیز پشتیبانی می‌کند، زیرا با استفاده از OpenGL ES2 ساخته شده‌اند. این فریم‌ورک از مجوز MIT استفاده می‌کند، بنابراین می‌توانید از این کتابخانه برای نرم‌افزارهای رایگان و تجاری استفاده کنید.

وقتی برنامه‌ای با Kivy ایجاد می‌کنید، در حال ایجاد یک رابط کاربری طبیعی یا NUI هستید. ایده پشت یک رابط کاربری طبیعی این است که کاربر به راحتی می‌تواند نحوه استفاده از نرم‌افزار شما را بدون هیچ‌گونه دستورالعمل یاد بگیرد.

Kivy سعی می‌کند از همه ابزارک‌های آن به صورت سفارشی شده استفاده کند. این بدان معنی است که برنامه های Kivy در همه سیستم‌عامل‌ها یکسان به نظر می‌رسند. با این حال، ظاهر و احساس برنامه شما با برنامه‌های رایج کاربر شما متفاوت است. این تفاوت بسته به مخاطب شما می‌تواند یک مزیت یا یک اشکال باشد. بطور کلی می‌توان گفت کیوی تمام ابزار های ساخت اپلیکیشن موبایل با پایتون را دارد.

فیلم آموزش آشنایی با فریم ورک کیوی (Kivy) در Python می تواند گزینه خوبی برای آموزش مقدماتی شما باشد. برای کامل بودن آموزش، سعی خواهیم کرد در خلال مطالب، منابع مهم آموزشی را برای یادگیری بهتر شما عزیزان، از سایت‌های آموزشی معتبر نظیر فرادرس را معرفی کنیم.

نصب Kivy

قبل از ساخت اپلیکیشن موبایل با پایتون و فریم‌وک Kivy باید آن را نصب کنید. kivy وابستگی‌های زیادی دارد، بنابراین توصیه می‌شود آن را در یک محیط مجازی پایتون نصب کنید. می‌توانید از کتابخانه venv داخلی پایتون یا بسته virtualenv استفاده کنید. برای این کار cmd را باز کنید و دستور زیر را در آن تایپ کنید.

python -m venv my_kivy_project

با این کار فایل اجرایی Python شما در پوشه‌ای به نام my_kivy_project کپی می‌شود و چند زیر پوشه دیگر نیز به آن فهرست اضافه می‌شود.

ساخت اپلیکیشن موبایل با پایتون

برای استفاده از محیط مجازی پایتون، باید آن را فعال کنید. در مک و لینوکس، می‌توانید این کار را با اجرای موارد زیر در پوشه my_kivy_project انجام دهید:

source bin/activate

برای سیستم‌عامل ویندوز نیز محل فعال‌سازی اسکریپت به جای bin در داخل پوشه Scripts است. برای فعال‌ساز باید به دارکتوری Scripts بروید و دستور زیر را اجرا کنید.

activate my_kivy_project

فعال سازی محیط مجازی پایتون

اکنون که محیط مجازی پایتون فعال شده است، می‌توانید pip را برای نصب Kivy اجرا کنید. دستور زیر را تایپ کنید:

pip install kivy

پس از نصب کیوی، اگر به مسیر C:\Users\Pc\my_kivy_project\Lib\site-packages بروید خواهید دید بسته‌های kivy نصب شده‌اند. اگر هم پروژه خاصی روی سیستم انجام نمی‌دهید می‌توانید روی پایتون نصب شده بدون محیط مجازی، kivy را نصب کنید.

شروع کار با ابزارک های kivy

ویجت widget یا ابزارک یک کنترلر روی صفحه است که کاربر با آن ارتباط برقرار می‌کند. همه ابزارهای گرافیکی رابط کاربر دارای مجموعه ای از ابزارک‌ها هستند. برخی از ویجت‌های رایج مانند button, combo box و tab را حتماً می شناسید. کیوی ویجت‌های زیادی در خود دارد. برای ساخت اپلیکیشن موبایل با پایتون، نحوه کارکرد این ویجیت ها اهمیت دارد پس با دقت آموزش را دنبال کنید.

اجرای اولین برنامه

برای مشاهده نحوه عملکرد کیوی، به برنامه “Hello world” زیر توجه کنید.

from kivy.app import App
from kivy.uix.label import Label

class MainApp(App):
    def build(self):
        label = Label(text='Hello from Kivy',
                      size_hint=(.5, .5),
                      pos_hint={'center_x': .5, 'center_y': .5})

        return label

if __name__ == '__main__':
    app = MainApp()
    app.run()

هر برنامه Kivy نیاز به زیر کلاس App و تابع سازنده build دارد. در این قسمت می‌توانید UI خود را طراحی کنید یا توابع خود را قرار دهید. در کد بالا، یک ویجت Label ایجاد شده که size_hint، text و pos_hint آن وارد شده است.

size_hint به کیوی نسبت‌هایی را انتساب می‌دهد که هنگام ایجاد ویجت از آن استفاده می‌کنید. برای تنظیم size_hint دو عدد لازم دارید:

  • اولین عدد به عرض کنترل x اشاره دارد.
  • عدد دوم به ارتفاع کنترل y اشاره دارد.

هر دوی این اعداد می‌توانند بین ۰ تا ۱ باشند. مقدار پیش‌فرض برای هر دو نقطه ۱ است.

از pos_hint برای قرار دادن مکان ویجت استفاده می‌کنند. در بلوک کد بالا، به کیوی می‌گویید که ویجت را روی محورهای x و y قرار دهد.

دو خط پایانی برای اجرای برنامه لازم است. ابتدا یک نمونه از کلاس MainApp را می‌سازید و سپس آن را run می کنید. حالا اگر برنامه را اجرا کنید خروجی زیر را خواهید دید.

خروجی kivy

Kivy همچنین مقدار زیادی اطلاعات را به stdout ارسال می کند:

[INFO   ] [Logger      ] Record log in C:\Users\Pc\.kivy\logs\kivy_21-09-12_4.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "C:\Users\Pc\AppData\Local\Programs\Python\Python39\lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "C:\Users\Pc\AppData\Local\Programs\Python\Python39\pythonw.exe"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.6.0 NVIDIA 460.97'>
[INFO   ] [GL          ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO   ] [GL          ] OpenGL renderer <b'GeForce GTX 960/PCIe/SSE2'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 6
[INFO   ] [GL          ] Shading version <b'4.60 NVIDIA'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available

این اطلاعات برای اشکال‌زدایی یا debug کردن برنامه لازم است. در ادامه آموزش ساخت اپلیکیشن موبایل با پایتون، یک ویجت Image را اضافه می کنیم. به تفاوت این ویجیت با Label توجه کنید.

نمایش یک تصویر

فریم‌ورک Kivy چند ابزارک مختلف برای کار با تصاویر دارد که می‌توانید از آن‌ها استفاده کنید. برای بارگذاری تصاویر محلی از هارد دیسک می‌توان از Image و برای بارگذاری یک تصویر از URL می‌توان از AsyncImage استفاده کرد. کد زیر را در نظر داشته باشید که از Image برای بارگذاری یک تصویر از هارد استفاده می‌کند.

from kivy.app import App
from kivy.uix.image import Image

class MainApp(App):
    def build(self):
        img = Image(source='/Images/Programstore.png',
                    size_hint=(1, .5),
                    pos_hint={'center_x':.5, 'center_y':.5})

        return img

if __name__ == '__main__':
    app = MainApp()
    app.run()

در این کد، تصویر را از زیر بسته kivy.uix.image وارد می‌کنید. کلاس Image پارامترهای متفاوتی دارد، اما پارامتری که می خواهید از آن استفاده کنید یک منبع یا Source است. این کد به کیوی می‌گوید که کدام تصویر را بارگذاری کند. در اینجا، شما یک مسیر تصویر را به Image می‌دهید. بقیه کد همان چیزی است که در مثال قبلی مشاهده کردید. وقتی این کد را اجرا کنید تصویر زیر مشاهده خواهید کرد:

نمایش یک تصویر

همانطور که مشاهده می‌کنید متن مثال قبلی با تصویر داده شده جایگزین شده است. در مرجله بعد نحوه اضافه کردن و مرتب کردن چند ویجت در برنامه را خواهید آموخت.

چیدمان UI

هر فریم‌ورک که از رابط کاربری گرافیکی استفاده می‌کند روشی برای مرتب سازی ابزارک‌ها دارد. در Kivy، از Layouts برای چیدمان و مرتب سازی استفاده خواهید کرد. چندین نوع مختلف طرح بندی وجود دارد که می توانید از آنها استفاده کنید. در این آموزش برخی از مهم ترین Layout ها ذکر شده است:

  • BoxLayout
  • FloatLayout
  • GridLayout

BoxLayout را با این کد امتحان کنید:

import kivy
import random

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout

red = [1,0,0,1]
green = [0,1,0,1]
blue =  [0,0,1,1]
purple = [1,0,1,1]

class HBoxLayoutExample(App):
    def build(self):
        layout = BoxLayout(padding=10)
        colors = [red, green, blue, purple]

        for i in range(5):
            btn = Button(text="Button #%s" % (i+1),
                         background_color=random.choice(colors)
                         )

            layout.add_widget(btn)
        return layout

if __name__ == "__main__":
    app = HBoxLayoutExample()
    app.run()

در کد بالا، یک BoxLayout از kivy.uix.boxlayout را وارد کرده و آن را نمونه سازی می‌کنید. سپس لیستی از رنگ ها ایجاد می کنید، که از رنگ های قرمز،آبی و سبز (RGB) تشکیل شده است. در نهایت، در محدوده یک حلقه، btn برای هر تکرار ایجاد می شود. پس زمینه button را روی یک رنگ تصادفی تنظیم کرده، سپس دکمه را با layout.add_widget (btn) به طرح خود اضافه کنید.

وقتی کد بالا را اجرا می کنید، تصویر زیر را مشاهده خواهید کرد:

چیدمان UI در kivy پایتون

اضافه کردن رویداد Event

همانند بسیاری از ابزارهای GUI ،Kivy کیوی مبتنی بر رویداد است. این فریم‌ورک به فشرده شدن کلیدهای کاربر، رویدادهای ماوس و رویدادهای لمسی پاسخ می‌دهد. Kivy همچنین دارای مفهوم خواص یا Properties است که با EventDispatcher کار می کند. خواص به شما کمک می کند تا بررسی اعتبار را انجام دهید و در هر زمان اندازه یا موقعیت ویجت خود را تغییر دهید. کد زیر را امحتان کنید:

from kivy.app import App
from kivy.uix.button import Button

class MainApp(App):
    def build(self):
        button = Button(text='Hello from Kivy',
                        size_hint=(.5, .5),
                        pos_hint={'center_x': .5, 'center_y': .5})
        button.bind(on_press=self.on_press_button)

        return button

    def on_press_button(self, instance):
        print('You pressed the button!')

if __name__ == '__main__':
    app = MainApp()
    app.run()

با استفاده از دستور button.bind می توانید یک رویداد بسازید و در آن تابع دیگری را صدا بزنید. اگر همه چیز درست باشد تصویر زیر را در خروجی خواهید دید:

اضافه کردن رویداد Event

استفاده از زبان KV

چارچوب Kivy یک زبان طراحی به نام KV را ارائه می دهد که می توانید در برنامه های Kivy از آن استفاده کنید. زبان KV به شما امکان می دهد طراحی رابط کاربری خود را از منطق برنامه جدا کنید. این امر از اصل تفکیک پیروی می کند و بخشی از الگوی معماری Model-View-Controller است. برای استفاده از زبان KV می توانید مثال قبلی را به صورت زیر به روز کنید:

from kivy.app import App
from kivy.uix.button import Button

class ButtonApp(App):
    def build(self):
        return Button()

    def on_press_button(self):
        print('You pressed the button!')

if __name__ == '__main__':
    app = ButtonApp()
    app.run()

این کد ممکن است در نگاه اول کمی عجیب به نظر برسد، زیرا بدون تنظیم ویژگی یا اتصال به رویداد، فقط یک باتون ایجاد می‌کند. آنچه در اینجا اتفاق می افتد این است که کیوی به طور خودکار به دنبال فایلی است که بدون قسمت App از نام کلاس، دارای نام یکسان با کلاس باشد.

در این حالت، نام کلاس ButtonApp است، بنابراین کیوی به دنبال یک فایل با نام button.kv می گردد. اگر آن فایل وجود داشته باشد و به درستی قالب بندی شده باشد، Kivy از آن برای بارگیری UI استفاده می‌کند. این فایل (button.kv) را در دایرکتوری برنامه اصلی خود ایجاد کنید و کد زیر را اضافه کنید:

<Button>:
    text: 'Press me'
    size_hint: (.5, .5)
    pos_hint: {'center_x': .5, 'center_y': .5}
    on_press: app.on_press_button()

می توانید تمام ویجت ها و طرح بندی های خود را در داخل یک یا چند فایل زبان KV تنظیم کنید. زبان KV از وارد کردن ماژول های پایتون در KV، ایجاد کلاس های پویا و موارد دیگر پشتیبانی می کند. اکنون شما آماده ایجاد یک برنامه واقعی هستید!

ساخت اپلیکیشن موبایل با پایتون

یکی از بهترین روش های یادگیری مهارت جدید ایجاد یک برنامه یا اپلیکیشن کاربردی است. با در نظر گرفتن این ایده، از Kivy برای ساختن یک ماشین حساب که عملیات‌های اصلی را پشتیبانی می کند، استفاده می‌کنیم. برای این برنامه، شما نیاز به یک سری دکمه ها در نوع چیدمان دارید. همچنین برای نمایش معادلات و نتایج آنها به یک کادر در بالای برنامه خود نیاز دارید. کد زیر را وارد کنید.

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput

class MainApp(App):
    def build(self):
        self.operators = ["/", "*", "+", "-"]
        self.last_was_operator = None
        self.last_button = None
        main_layout = BoxLayout(orientation="vertical")
        self.solution = TextInput(
            multiline=False, readonly=True, halign="right", font_size=55
        )
        main_layout.add_widget(self.solution)
        buttons = [
            ["۷", "۸", "۹", "/"],
            ["۴", "۵", "۶", "*"],
            ["۱", "۲", "۳", "-"],
            [".", "۰", "C", "+"],
        ]
        for row in buttons:
            h_layout = BoxLayout()
            for label in row:
                button = Button(
                    text=label,
                    pos_hint={"center_x": 0.5, "center_y": 0.5},
                )
                button.bind(on_press=self.on_button_press)
                h_layout.add_widget(button)
            main_layout.add_widget(h_layout)

        equals_button = Button(
            text="=", pos_hint={"center_x": 0.5, "center_y": 0.5}
        )
        equals_button.bind(on_press=self.on_solution)
        main_layout.add_widget(equals_button)

        return main_layout

    def on_button_press(self, instance):
        current = self.solution.text
        button_text = instance.text

        if button_text == "C":
            # Clear the solution widget
            self.solution.text = ""
        else:
            if current and (
                self.last_was_operator and button_text in self.operators):
                # Don't add two operators right after each other
                return
            elif current == "" and button_text in self.operators:
                # First character cannot be an operator
                return
            else:
                new_text = current + button_text
                self.solution.text = new_text
        self.last_button = button_text
        self.last_was_operator = self.last_button in self.operators

    def on_solution(self, instance):
        text = self.solution.text
        if text:
            solution = str(eval(self.solution.text))
            self.solution.text = solution


if __name__ == "__main__":
    app = MainApp()
    app.run()

نحوه کار کد ماشین حساب به عنوان مثال از ساخت اپلیکیشن موبایل با پایتون بصورت زیر توضیح داده می شود.

  • خطوط ۸ تا ۱۰: لیستی از عملگرها و چند مقدار ، last_was_operator و last_button ایجاد شده که بعداً از آن‌ها استفاده خواهد شد.
  • خطوط ۱۱ تا ۱۵: یک طرح بندی سطح بالا main_layout ایجاد می‌کند و یک ویجت TextInput فقط خواندنی را به آن اضافه می کند.
  • خطوط ۱۶ تا ۲۱: یک لیست تو در تو ایجاد می کند که حاوی بیشتر دکمه ها برای ماشین حساب است.
  • خط ۲۲: روی این دکمه ها حلقه for را اعمال می کند. برای هر لیست تو در تو موارد زیر را انجام می دهد:
    • خط ۲۳:  یک BoxLayout با جهت افقی ایجاد می کند.
    • خط ۲۴: حلقه دیگری را برای موارد موجود در لیست تو در تو اعمال می کند.
    • خطوط ۲۵ تا ۳۹: دکمه های ردیف را ایجاد می‌کند و به یک کنترل کننده رویداد متصل می‌کند و دکمه ها را به خط افقی BoxLayout از خط ۲۳ اضافه می کند.
    • خط ۳۱: این طرح را به main_layout اضافه می کند.
  • خطوط ۳۳ تا ۳۷: دکمه equals (=) را ایجاد می کند، آن را به یک کنترل کننده رویداد متصل می کند و آن را به main_layout اضافه می کند.
  • خط ۴۱: آرگومان نمونه را می گیرد تا بتواند به در ویجت به نام تابع دسترسی پیدا کند.
  • خطوط ۴۲ و ۴۳: مقدار جواب و متن دکمه را استخراج و ذخیره می کند.
  • خطوط ۴۵ تا ۴۷: بررسی می‌کند که کدام دکمه فشار داده شده است. اگر کاربر C را فشار داده است، جواب را پاک می کند. در غیر این صورت، به دستور else می رود.
  • خط ۴۹: بررسی می کند که آیا جواب ارزش قبلی دارد یا خیر.
  • خطوط ۵۰ تا ۵۲: بررسی می‌کند که آیا آخرین دکمه فشرده دکمه اپراتور بوده است یا خیر. اگر چنین بود، جواب به روز نمی شود. این کار، به منظور جلوگیری از داشتن دو اپراتور پشت سر هم در کاربر است.
  • خطوط ۵۳ تا ۵۵: بررسی می کند که آیا کاراکتر اول اپراتور است یا خیر. اگر چنین است، پس جواب به روز نمی شود، زیرا اولین مقدار نمی تواند یک مقدار عملگر باشد.
  • خطوط ۵۶ تا ۵۸: در بند else قرار می گیرد. اگر هیچ یک از شرایط قبلی برآورده نشود ، جواب را به روز می کند.
  • خط ۵۹: last_button را روی برچسب آخرین دکمه فشرده شده تنظیم می کند.
  • خط ۶۰: last_was_operator را بسته به اینکه آیا کاراکتر بوده یا نه، روی True یا False تنظیم می‌کند.

تصویر زیر اجرای این پروژه را نشان می دهد.

ساخت اپلیکیشن موبایل با پایتون ماشین حساب

بسته بندی برنامه برای اندروید Android

در ادامه آموزش ساخت اپلیکیشن موبایل با پایتون که کد برنامه خود را به پایان رساندید، می توانید آن را با دیگران به اشتراک بگذارید. یک روش خوب برای انجام این کار، این است که کد خود را به برنامه ای تبدیل کنید که بتواند بر روی موبایل‌های Android شما اجرا شود. برای انجام این کار، ابتدا باید بسته ای به نام buildozer با pip را نصب کنید:

pip install buildozer

سپس، یک پوشه جدید ایجاد کرده و در ترمینال خود به آن بروید. هنگامی که در دایرکتوری مورد نظر هستید، باید دستور زیر را اجرا کنید:

buildozer init

این دستور یک فایل buildozer.spec ایجاد می‌کند که از آن برای پیکربندی ساخت اپلیکیشن موبایل با پایتون استفاده خواهید کرد. می توانید چند خط اول فایل مشخصات را به شرح زیر ویرایش کنید:

[app]

# (str) Title of your application
title = KvCalc

# (str) Package name
package.name = kvcalc

# (str) Package domain (needed for android/ios packaging)
package.domain = org.kvcalc

با خیال راحت بقیه فایل ها را مرور کنید تا ببینید چه چیز دیگری را می توانید تغییر دهید.

در این مرحله، شما تقریباً آماده ساختن برنامه خود هستید، اما ابتدا باید وابستگی های buildozer را نصب کنید. پس از نصب، برنامه ماشین حساب خود را در پوشه جدید خود کپی کرده و نام آن را به main.py تغییر دهید. این کار برای buildozer مورد نیاز است. اگر فایل خود را به درستی نامگذاری نکرده باشید، در این صورت ساخت اپلیکیشن موبایل با پایتون با شکست مواجه می شود.

حالا می توانید دستور زیر را اجرا کنید:

buildozer -v android debug

مرحله ساخت زمان زیادی طول می کشد. بسته به سخت افزار شما، ممکن است این زمان بیشتر یا کمتر باشد، Buildozer هر قطعه SDK Android را که در مراحل ساخت نیاز دارد بارگذاری خواهد کرد. اگر همه چیز مطابق برنامه پیش رفت، یک فایل با نام kvcalc-0.1-debug.apk در پوشه bin خود خواهید داشت.

مرحله بعدی ساخت اپلیکیشن موبایل با پایتون، موبایل اندرویدی خود به کامپییوتر وصل کنید و فایل apk را در آن کپی کنید. اکنون می توانید روی فایل apk کلیک کنید. اندروید باید از شما بپرسد آیا می خواهید برنامه را نصب کنید؟ از آنجا که برنامه از خارج از Google Play بارگیری شده است، ممکن است هشداری مشاهده کنید. در اینجا ماشین حساب در موبایل اندرویدی نمایش داده خواهد شد:

بسته بندی برنامه برای اندروید Android

بسته بندی برنامه برای IOS

در ساخت اپلیکیشن موبایل با پایتون، دستورالعمل های ساخت برنامه برای iOS کمی پیچیده تر از Android است. قبل از اینکه بتوانید برنامه خود را برای iOS در Mac خود بسته بندی یا Packaging کنید، باید دستورات زیر را اجرا کنید:

$ brew install autoconf automake libtool pkg-config
$ brew link libtool
$ sudo easy_install pip
$ sudo pip install Cython==0.29.10

هنگامی که همه آن‌ها با موفقیت نصب شدند، باید توزیع را با استفاده از دستورات زیر کامپایل کنید:

$ git clone git://github.com/kivy/kivy-ios
$ cd kivy-ios
$ ./toolchain.py build python3 kivy

اگر با خطاهای SSL روبرو شدید، احتمالاً راه اندازی OpenSSL پایتون را ندارید. دستور زیر این مشکل را رفع خواهد کرد:

$ cd /Applications/Python\ 3.7/
$ ./Install\ Certificates.command

حالا برگردید و دوباره فرمان toolchain را اجرا کنید.

آیا تمام دستورات قبلی را با موفقیت اجرا کردید ، می توانید پروژه Xcode خود را با استفاده از اسکریپت toolchain ایجاد کنید. قبل از ایجاد پروژه Xcode ، دایرکتوری ورود برنامه اصلی شما باید main.py نامگذاری شود. در اینجا فرمان اجرا شده وجود دارد:

./toolchain.py create <title> <app_directory>

باید یک دایرکتوری به نام title با پروژه Xcode شما در آن وجود داشته باشد. حالا می توانید آن پروژه را در Xcode باز کنید و از آنجا روی آن کار کنید. توجه داشته باشید که اگر می خواهید برنامه خود را به App Store ارسال کنید، باید یک حساب توسعه دهنده در developer.apple.com ایجاد کرده و هزینه سالانه آنها را بپردازید.

بسته بندی برنامه برای Windows

در ساخت اپلیکیشن موبایل با پایتون می توانید برنامه Kivy خود را برای Windows با استفاده از PyInstaller بسته بندی کنید. می توانید PyInstaller را با استفاده از ابزار pip نصب کنید:

$ pip install pyinstaller

دستور زیر برنامه شما را برای ویندوز بسته بندی می کند:

$ pyinstaller main.py -w

این دستور یک فایل اجرایی ویندوز و چندین فایل دیگر ایجاد می کند. استدلال -w به PyInstaller می گوید که این یک برنامه ویندوزی است نه یک برنامه خط فرمان. اگر ترجیح می دهید PyInstaller یک فایل اجرایی واحد ایجاد کند، می توانید علاوه بر -w در آرگومان –onefile نیز وارد کنید.

بسته بندی برنامه برای macOS

می توانید از PyInstaller برای ایجاد یک سیستم عامل اجرایی Mac درست مانند ویندوز استفاده کنید. تنها شرط این است که این دستور را در Mac اجرا کنید:

$ pyinstaller main.py -w --onefile

این دستور یک فایل اجرایی واحد در پوشه dist ایجاد می کند. فایل اجرایی همان نام فایل پایتون است که به PyInstaller منتقل کرده اید. اگر می خواهید حجم فایل اجرایی را کاهش دهید یا از GStreamer در برنامه خود استفاده کنید.

نتیجه گیری درباره آموزش ساخت اپلیکیشن موبایل با پایتون

در این مقاله بطور کامل، آموزش ساخت اپلیکیشن موبایل با پایتون در فریم‌ورک کیوی داده شد. Kivy یک فریم‌ورک GUI واقعا جالب است که می‌توان از آن برای ایجاد رابط های کاربری دسکتاپ و اپلیکیشن‌های موبایل در iOS و Android استفاده کرد. در این آموزش، اصول اولیه کار با فریم‌ورک Kivy از جمله نحوه افزودن ویجت‌ها، پیوند دادن به رویدادها، تنظیم چیدمان ویجت‌ها و استفاده از زبان KV آموزش داده شد و پس از ساخت اپلیکیشن موبایل با Kivy نحوه توزیع و بسته‌بندی آن در سیستم عامل های دیگر نیز آموزش داده شد.

برای آموزش های کامل و پیشرفته نیز، در حین آموزش، برخی از لینک های آموزشی از سایت‌های آموزشی معتبر را معرفی کردیم. مجموعه آموزش برنامه نویسی پایتون سایت فرادرس مرجع خوبی برا فراگیران زبان پایتون هست که می توانید با آموزش های مطالب ارائه شده، دانش و مهارت های برنامه نویسی خودتان را بالا ببرید. در پایان، منتظر نظرات و پیشنهادات شما عزیزان هستیم. موفق و پیروز باشید.

18 پاسخ

  1. سلام با تشکر از اموزش خوبتون سوالی از خدمتتون داشتم من اپلیکیشنی با کیوی نوشتم یه هاست میزبانی از قبل داشتم که هاست وردپرسی هستش الان میخوام که به یه دیتابیس تو هاست متصل کنم در تابع sql.connector برای host چ ادرسی باید وارد کنم این ادرس رو چطور میتونم بدست بیارم ممنون میشم راهنمایی بفرمایید

  2. سوال : سلام من طبق مراحل بالا عمل کردم ولی داخل پوشه bin خالی است و فایل apk وجود ندارد میشه لطفاً راهنمایی کنید متشکرم

  3. سلام
    من کتابخانه kivy رو کامل نصب کردم. هم از cmd هم از pycharm
    ولی وقتی میخوام اجرا بگیرم خطای :
    from kivy.app import App
    ModuleNotFoundError: No module named ‘kivy.app’; ‘kivy’ is not a package

    1. سلام. چک کنید که حتما نصب شده باشد، این خطا نشان میدهد که کتابخانه به درستی بارگیری نشده است.

        1. ۱- چک بکنید که حتما آخرین نسخه پایتون نصب باشد و Add to path انجام شده باشد.
          2- pip را بروزرسانی کنید.
          3- نام برنامه را kivy.py قرار ندهید.
          اگر همچنان مشکل پابرجاست یک بار پایتون را حذف نصب و از ابتدا نصب کنید.

    2. اگر از محیط کاربری پایچارم استفاده می کنید باید از تنطیمات این کار را انجام بدهید.
      به واتساپ ام ۰********** پیام دهید روش شو تصویری بفرستم

  4. سلام من تازه دارم برنامه نویس پایتون رو یاد میگیرم می خواستم بدونم برای ساخت یک اپلیشکن با پایتون که خودمان هم کد نویسی می کنیم دارای هزینه ای هست یا نه. مثلا برای ساخت یک سایت در وردپرس قبلش باید حتما هاست و دامنه را خریداری کنی. برای برنامه نویسی و ساخت اپلیکیشن هم همین‌گونه است یا خیر.

  5. سلام و درود الله سبحان و تعالی بر شما و خانواده محترمتان باد انشاءالله 🌹
    مطالب مفیدی بود انشاءالله الله متعال به شما در دنیا و آخرت جزای خیر دهد

  6. ببینید بنده دستور buildozer -v android debug را در cmd اجرا کردم ولی این رو نشون داد: # Check configuration tokens
    Unknown command/target android چه کنم الان؟ ممنونم…

    1. سلام و عرض ادب
      منظور از وابستگی های buildozer فایل هایی هست که برای ارتباط واحدهای مختلف یک نرم افزار باید بر روی سیستم نصب بشه. مثلاً برای اینکه python3-pip با buildozer بدرستی کار کنه باید این ارتباط تعریف بشه که اونم از طریق نصب همین وابستگی ها هست.

  7. من قصد دارم یک برنامه نوشته شده در بایتون را توسط بلدوزر به فایل اندروید تبدیل کنم ولی بعد از اجرای دستور اندروید دیباگر در ترمینال با این خطا عملیات متوقف می شود. حتی در استک اور فلو هم سرچ کردم و اندروید ان دی کا را در دایرکتوری بلدوزر/ اندروید/بلتفرم اعمال کردم. اگر کسی می تواند کمک کند.
    حتی یک برنامه؛ سلام دنیا؛ ساده را نیز دنبال کردم که به همین خطا مواجه شد. بلدوزر را نیز حذف و دوباره نصب کردم. حتی روی یک لبتاب نیز امتحان کردم تا به این خطا مواجه شدم.
    return func(*args, **kwargs)
    ValueError: read of closed file
    iron@iron-H110M-S2PV:~/PycharmProjects/pythonProject$

    1. با عرض سلام خدمت شما دوست عزیز
      برای اینکه بتونید از قابلیت های لینوکس در نصب برنامه ها استفاده کنید باید Ubuntu Shell روی ویندوز نصب کنید. همین مراحل رو شما می تونید از آموزش دوم ما دنبال کنید. لینک زیر را دنبال کنید.
      آموزش برنامه نویسی اندروید با پایتون در ویندوز ۱۰ – گام به گام و تصویری

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *