Python у мобилном развоју: аутоматизација, AI и ML

Аутор: IT Sectr Објављено: 2026-02-11 Време читања: 11 мин

Python — високо нивоски интерпретирани програмски језик, познат по концизној синтакси и богатом екосистему библиотека. У мобилном развоју Python се користи за помоћне скриптове аутоматизације изградње, обуку AI/ML модела и писање серверске логике на Django или FastAPI. Према подацима PYPL (2026), Python заузима прво место у свету по популарности међу програмским језицима.

Главно

  • Python — интерпретирани језик са динамичким типизацијом, користи се за аутоматизацију, AI/ML и серверску логику
  • Скриптови аутоматизације на Python-у убрзавају изградњу, тестирање и деплој мобилних апликација
  • AI/ML модели се обучавају на Python-у (TensorFlow, PyTorch), затим конвертују у TFLite за инференцу на уређају
  • Backend за мобилне апликације на Python-у се гради кроз Django REST Framework или FastAPI
  • Прототиповање на Python-у омогућава брзу проверу хипотеза пре имплементације у Kotlin/Swift

Шта је Python?

Python — интерпретирани језик са динамичком строгом типизацијом и аутоматским управљањем меморијом. Креирао га је Гвидо ван Росум 1991. године. Филозофија језика (The Zen of Python) промовише читљивост кода: „експлицитно је боље од имплицитног”, „једноставно је боље од сложеног”. Python 3.12+ подржава подударање узорака (match-case) и побољшане генерике.

Стандардна библиотека Python-а укључује модуле за рад са JSON (json), HTTP (urllib), архивама (zipfile), регуларним изразима (re) и базама података (sqlite3). Трећа страна — десетине хиљада пакета у PyPI са укупним бројем преузимања преко 500 милијарди. PyPI (Python Package Index) — највеће складиште Python пакета.

Python користи интерпретатор CPython написан у C-у. Алтернативне имплементације: PyPy (JIT компилација, 2–5 пута бржи за чисти Python), Cython (компилација Python-а у C), Numba (JIT за нумеричка израчунавања). За мобилне скриптове довољан је CPython — брзина интерпретације није критична за задатке аутоматизације.

Верзије Python-а

Python 2 је престао са подршком 2020. године. Сви модерни пројекти користе Python 3. Актуелна верзија — 3.13 (2025) са побољшаним JIT компилатором и експерименталном подршком за слободне нити (free-threaded Python). За мобилни развој стабилна је верзија 3.11–3.12, компатибилна са свим главним библиотекама.

ВерзијаГодинаКључна иновација
Python 3.62016f-стрингови, назнаке типова за променљиве
Python 3.82019walrus оператор (:=), позициони параметри
Python 3.102021match-case, прецизни типови, Union оператори
Python 3.112022Убрзање CPython-а за 10–60%, групе изузетака
Python 3.122023Подршка за преоптерећење функција у типизацији
Python 3.132025JIT компилатор, free-threaded режим

Python за аутоматизацију мобилног развоја

Python — главни језик за скриптове аутоматизације у мобилном развоју. Користи се за изградњу APK и IPA, обраду текстуалних ресурса, генерисање екрана из макета и деплој у продавнице апликација. Према подацима Bitrise (2025), преко 60% CI/CD пајплајнова мобилних апликација укључује Python кораке.

Најчешћи сценарио — Fastlane са Ruby-јем не покрива све потребе, а Python га допуњује: сложена логика обраде слика, рад са API-јем App Store Connect, парсирање Xcode извештаја и генерисање снимака екрана. Python скриптови се позивају кроз sh кораке у Fastfile-у или директно у GitHub Actions.

python
# Скрипт за аутоматски ресајз снимака екрана апликације
import os
from PIL import Image

def resize_screenshots(input_dir: str, output_dir: str, size: tuple) -> None:
    """Мења величину свих PNG снимака екрана на потребну величину продавнице."""
    for filename in os.listdir(input_dir):
        if not filename.lower().endswith(".png"):
            continue
        path = os.path.join(input_dir, filename)
        img = Image.open(path)
        resized = img.resize(size, Image.LANCZOS)
        out_path = os.path.join(output_dir, filename)
        resized.save(out_path, "PNG")
        print(f"Resized {filename} -> {out_path}")

resize_screenshots("screenshots_raw", "screenshots_resized", (1242, 2208))

У примеру, скрипт пролази кроз све PNG датотеке у фасцикли, мења им величину на iPhone 6.5" (1242x2208) са LANCZOS филтером за најбољи квалитет. f-стринг у print-у замењује име датотеке. Овај скрипт штеди сате ручног рада при припреми продавнице.

Обрада Android ресурса

За Android Python је користан при обради текстуалних ресурса (strings.xml), генерисању dimen датотека за различите густине екрана и конверзији векторске графике. LXML и xml.etree.ElementTree омогућавају парсирање и измену XML ресурса Android-а.

python
# Генерисање strings.xml из CSV датотеке са преводима
import csv
from xml.etree import ElementTree as ET
from xml.dom import minidom

def csv_to_strings(csv_path: str, lang: str) -> str:
    root = ET.Element("resources")
    with open(csv_path, "r") as f:
        reader = csv.DictReader(f)
        for row in reader:
            el = ET.SubElement(root, "string")
            el.set("name", row["key"])
            el.text = row[lang]
    rough = ET.tostring(root, encoding="unicode")
    parsed = minidom.parseString(rough.encode())
    return parsed.toprettyxml(indent="  ")

print(csv_to_strings("translations.csv", "ru"))

Python у AI и ML: обука модела за мобилне платформе

Python — главни језик за машинско учење. TensorFlow, PyTorch, scikit-learn, JAX и Hugging Face Transformers су написани за Python. Мобилни програмери користе Python за обуку модела који се затим конвертују у TFLite (Android) или Core ML (iOS) за извршавање на уређају.

TensorFlow Lite — Google-ов фрејмворк за машинско учење на уређају. Модел обучен на Python-у конвертује се у .tflite кроз TensorFlow Converter и учитава у Android апликацију преко Interpreter API-ја. За iOS постоји сличан пајплајн кроз PyTorch -> Core ML.

python
# Обука једноставног модела за класификацију покрета
import tensorflow as tf
from tensorflow import keras

model = keras.Sequential([
    keras.layers.Input(shape=(64, 64, 3)),
    keras.layers.Conv2D(32, (3, 3), activation="relu"),
    keras.layers.MaxPooling2D(2, 2),
    keras.layers.Conv2D(64, (3, 3), activation="relu"),
    keras.layers.Flatten(),
    keras.layers.Dense(128, activation="relu"),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(4, activation="softmax")
])

model.compile(optimizer="adam",
              loss="sparse_categorical_crossentropy",
              metrics=["accuracy"])

# Конверзија у TFLite након обуке
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open("gesture_model.tflite", "wb") as f:
    f.write(tflite_model)

print(f"Model size: {len(tflite_model)} bytes")

Sequential модел укључује два конволуциона слоја (Conv2D) са пулингом, потпуно повезани слој (Dense) и Dropout за регуларизацију. Након конверзије, .tflite модел заузима 4–6 пута мање простора од оригиналног SavedModel-а и ради на мобилном CPU-у или GPU-у.

Edge ML и federated learning

Модеран приступ — обука директно на уређају кроз TensorFlow Federated или MLX (Apple). Python скрипт дефинише архитектуру, а обука се одвија на корисничким подацима без слања на сервер. То повећава приватност, али је теже за имплементацију. Већина пројеката користи класични пајплајн: Python обука -> TFLite -> инференца на уређају.

Python за серверски део мобилних апликација

Python — популаран избор за backend мобилних апликација. Django REST Framework (DRF) и FastAPI омогућавају брзо креирање REST API-ја или GraphQL сервера. Python backend обрађује захтеве од мобилних клијената, управља аутентификацијом и синхронизује податке преко WebSocket-а.

FastAPI — модеран фрејмворк са асинхроном подршком, аутоматском генерацијом OpenAPI спецификације и валидацијом кроз Pydantic. Перформансе FastAPI-ја су упоредиве са Node.js и Go — до 10 000 захтева/с на једном језгру. За мобилни backend FastAPI се бира због брзине развоја и уграђене документације.

python
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
import sqlite3

app = FastAPI(title="Mobile App API")

class UserCreate(BaseModel):
    username: str
    email: str
    avatar_url: str | None = None

@app.post("/users", status_code=201)
async def create_user(payload: UserCreate):
    conn = sqlite3.connect("app.db")
    cur = conn.execute(
        "INSERT INTO users (username, email) VALUES (?, ?)",
        (payload.username, payload.email)
    )
    conn.commit()
    user_id = cur.lastrowid
    conn.close()
    return {"id": user_id, "username": payload.username}

@app.get("/users/{user_id}")
async def get_user(user_id: int):
    conn = sqlite3.connect("app.db")
    row = conn.execute(
        "SELECT id, username, email FROM users WHERE id = ?",
        (user_id,)
    ).fetchone()
    conn.close()
    if not row:
        raise HTTPException(status_code=404, detail="User not found")
    return {"id": row[0], "username": row[1], "email": row[2]}

Pydantic модел UserCreate валидира улазне податке: username и email су обавезни стрингови, avatar_url је опционалан. Асинхрони ендпоинти (async def) не блокирају сервер док чекају базу података. Статусни код 201 се враћа при успешном креирању корисника.

WebSocket за рад у реалном времену

Python подржава WebSocket кроз FastAPI WebSocket или библиотеку websockets. За четове, нотификације у реалном времену и заједничко уређивање, WebSocket је оптималан транспорт. FastAPI користи asyncpg за асинхрони рад са PostgreSQL и aioredis за кеширање.

Python за прототиповање и тестирање идеја

Python је незаменљив за брзо прототиповање. Програмер може написати прототип API-ја на Flask-у за 15 минута и тестирати идеју на корисницима пре него што је имплементира у Kotlin/Swift-у за продукцију. Цена грешке у фази прототипа је минимална, а време провере хипотезе се смањује са недеља на сате.

Алати за прототиповање: Flask (минимални REST), Streamlit (контролне табле), Jupyter Notebooks (анализа података), Flet и Kivy (мобилни MVP-ови). Python прототип често постаје спецификација за продукциону имплементацију: типови података, пословна логика и тестови се преносе у Kotlin или Swift.

Скриптови за тестирање перформанси

Python се користи за тестирање оптерећења мобилног API-ја кроз Locust — фрејмворк за симулацију хиљада корисника. Locust скрипт описује сценарио понашања корисника, а веб интерфејс приказује RPS, кашњења и перцентиле.

python
from locust import HttpUser, task, between

class MobileApiUser(HttpUser):
    wait_time = between(1, 5)

    @task(2)
    def get_posts(self):
        self.client.get("/api/v1/posts?page=1")

    @task(1)
    def create_post(self):
        self.client.post("/api/v1/posts", json={
            "title": "Test",
            "body": "Content"
        })

@task(2) означава тежину — GET /posts захтев се извршава два пута чешће од POST /posts. wait_time симулира паузу од 1–5 секунди између захтева. Locust се покреће из командне линије и приказује резултате у реалном времену кроз веб интерфејс на порту 8089.

Python против Kotlin и Swift: када шта изабрати

Python и изворни језици мобилног развоја решавају различите задатке. Kotlin и Swift — за UI, навигацију и директан приступ API-ју платформе. Python — за аутоматизацију, AI/ML, серверску логику и прототиповање. Упоредимо по кључним параметрима.

КритеријумPythonKotlin / Swift
UI апликацијаНе (Kivy — нишни)Основна намена
Аутоматизација изградњеГлавни алатРетко
AI/ML обукаГлавни језик индустријеСамо инференца
Серверски backendDjango, FastAPI, FlaskKtor, Vapor (мање популарни)
Брзина развојаВисока (мање кода)Средња
ПерформансеНиске (интерпретација)Високе (JIT/изворни)
Приступ API-ју уређајаКроз Chaquopy/BeeWareДиректан (100% API)

Оптимална архитектура: Python за обуку AI модела, CI/CD скриптове и серверски део, Kotlin/Swift за UI и изворну интеграцију.

Типичне грешке при коришћењу Python-а у мобилном развоју

Прва грешка — коришћење погрешне верзије Python-а. На macOS је прединсталиран Python 3.9, али за скриптове аутоматизације потребна је верзија фиксирана кроз pyenv или .python-version. Разлика између 3.9 и 3.12 може сломити синтаксу (нпр. match-case је доступан само од 3.10).

Друга типична грешка — игнорисање виртуелног окружења. Python зависности глобално конфликтирају између пројеката. Користите venv или poetry за изолацију. Фајл requirements.txt или pyproject.toml треба да буде у репозиторијуму за репродуцибилност изградње.

Недостатак обраде грешака — трећи уобичајени проблем. Скрипт који пада при недостатку датотеке или мрежној грешци зауставља цео CI/CD пајплајн. Користите try-except-finally, логирање кроз модул logging и враћајте ненулти код при грешци (sys.exit(1)).

Мешање синтаксе Python 2 и Python 3 — још једна грешка. print без заграда, стари except Exception, e и xrange су радили у Python 2, али не раде у Python 3. Увек проверавајте код кроз flake8 и mypy за статичку анализу типова.

python
# Најбоља пракса: обрада грешака у скрипту аутоматизације
import sys
import logging
from pathlib import Path

logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
log = logging.getLogger(__name__)

def build_apk(project_dir: str) -> bool:
    path = Path(project_dir)
    if not path.exists():
        log.error(f"Directory {project_dir} not found")
        return False
    try:
        # овде команда изградње
        log.info("Build started")
        return True
    except Exception as e:
        log.exception(f"Build failed: {e}")
        return False

if __name__ == "__main__":
    success = build_apk("android/app")
    sys.exit(0 if success else 1)

Често постављана питања

Могу ли се писати мобилне апликације на Python-у?

Да, кроз фрејмворке Kivy, BeeWare и Chaquopy (за Android). Међутим, изворне апликације на Kotlin/Swift-у раде брже и пружају пун приступ API-ју платформе. Python се обично користи за прототиповање и помоћне алате.

Које задатке аутоматизације решава Python у мобилном развоју?

Python аутоматизује изградњу IPA/APK, генерисање извештаја тестирања, обраду логова, ресајз екрана, конверзију ресурса и деплој на Firebase App Distribution кроз Fastlane python-плагинове.

Како се Python користи у AI/ML на мобилним уређајима?

Модели се обучавају на Python-у (TensorFlow, PyTorch), затим конвертују у TFLite или Core ML за инференцу на уређају. Изворне ML библиотеке на Kotlin/Swift-у учитавају готов модел, а Python је одговоран за обуку и извоз.

Шта изабрати: Python или Kotlin/Swift за мобилни backend?

За мобилни backend Python (Django/FastAPI) је одличан избор. Бржи је у развоју и има богат екосистем библиотека. Kotlin (Ktor) и Swift (Vapor) пружају боље перформансе и сигурност типова.

Python је спор — да ли је то проблем за мобилни развој?

Python као интерпретирани језик је спорији од C++ и Kotlin-а. Али за скриптове изградње, генерисање кода и прототиповање брзина Python-а није критична. За AI/ML обука модела се изводи на GPU серверима, а не на уређају.

Резиме

  • Python — високо нивоски интерпретирани језик за аутоматизацију, AI/ML и серверски део мобилног развоја
  • Скриптови аутоматизације на Python-у убрзавају ресајз екрана, генерисање ресурса и деплој у продавнице
  • AI/ML модели се обучавају на Python-у са TensorFlow и PyTorch, конвертују у TFLite за извршавање на уређају
  • FastAPI и Django — популарни фрејмворци за backend мобилних апликација са асинхроном подршком
  • Python је бржи у прототиповању — провера хипотеза траје сате уместо недеља
  • Грешке: погрешна верзија Python-а, недостатак виртуелног окружења и игнорисање обраде изузетака
  • Оптимална архитектура: Python за ML и backend, Kotlin/Swift за UI и приступ API-ју уређаја

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође