Kivy Kurulumu ve APK Derleme Hakkında Başlangıç Rehberi

Kivy apk derleme hatalarıyla bayağı boğuştum ve şu an çözdüm. Kaç kez sildim yükledim bir şeyler denedim hatırlamıyorum. Benzer sorunları yaşayan arkadaşlar için birkaç önemli hususu bildirmek ve temiz kurulum için bir rehber sunmak istiyorum. Burada bahsettiğim adımları Pardus 23.1 XFCE üzerinde uyguladım. Debian tabanlı sistemlerde, Ubuntu’da da uygulanabilir.

  1. Kivy KURULUMU: Kurulum yönergelerini takip ederken mutlaka resmi dökümantasyona göre ilerleyecez. İnternetten, ordan burdan bulunan tavsiyelere göre kurulum yapmayın. Dökümantasyonda tavsiye edildiği üzere sanal ortam (virtual environment) üzerinde çalışmalarımızı yapacaz. Aşağıdaki adımları dikkatlice uygulayalım;

    1.a. Aşağıdaki kod satırlarını sırasıyla kullanarak kivy_venv adında sanal ortam oluşturalım.
    sudo apt install python3-venv
    python3 -m venv kivy_venv

    1.b. Oluşturduğumuz sanal ortamımızı aktif hale getirelim.
    source kivy_venv/bin/activate
    Bu adımından sonra artık paket kurulumlarımızı ve çalışmalarımızı kivy_venv ortamında yapacaz. Bu ortam içerisindeki Python derleyicisini kullanarak projelerimizi çalıştıracaz.

    1.c. Sanal ortamımızı aktif ettiğimize göre artık Kivy’i yükleyelim.
    pip3 install "kivy[full]" kivy_examples
    bu adımla birlikte Kivy, bağımlılıkları ile beraber, ses ve video desteği ayrıca çeşitli başlangıç örnekleri ile ortamımız içerisine yüklenmiş olacaktır.

    1.d. Aşağıdaki kod ile sanal ortamımıza yüklenen Kivy başlangıç örneklerinden birini çalıştırarak test edelim.
    ~$ python3 ./kivy_venv/share/kivy-examples/demo/showcase/main.py bu kod neticesinde Kivy bileşenlerinin sergilendiği bir uygulamanın açıldığını göreceksiniz. Uygulama penceresini kapatalım.
    NOT: Terminale deactivate yazarak aktif edilmiş ortamı tekrardan pasif hale getirebilirsiniz.

  2. İLK UYGULAMA - “Merhaba Dünya”: Kendimiz basit bir Merhaba Dünya örneği yapalım. Ben kod yazmak için VS Code editörünü kullanacam. Siz dilediğiniz editörü/IDE’yi kullanabilirsiniz. Yeni bir klasör oluşturun, klasör ismi küçük harfli, boşluksuz ve ingilizce alfabedeki karakterlerden oluşsun (nolur nolmaz :sweat_smile:). İçinde main.py adında (isim main.py olmalı, dökümantasyonda yazıyor!) yeni bir python dosyası oluşturun. Aşağıdaki kodları sırasıyla yapıştırıp kaydedelim.

__version__ = '1.0'

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


class MyApp(App):
    def build(self):
        return Label(text="Merhaba Dünya")


if __name__ == "__main__":
    MyApp().run()
  1. .
    2.a. Dikkat etmeniz gereken, kullandığınız editörde yazdığınız Python&Kivy uygulamasını çalıştırmadan önce, python interpreter (python yorumlayıcısı) olarak 1.a. adımında oluşturduğumuz sanal ortam (kivy_venv) içerisindeki Python3’ü seçmelisiniz. Bunu yapmak için aşağıdaki görselde kırmızı okla belirttiğim yere tıklayın. Yukarıda açılan pencerede “Enter interpreter path…” seçeneğinde tıklayın. “Find” seçeneğini seçin. Açılan pencerede kullanıcı dizini içerisinde kivy_venv klasörü içinde bin klasörü içerisinde python3 dosyasına çift tıklayarak seçin. Bunu doğru yaptıysanız VS Code editöründe Ctrl + J tuş kombinasyonu ile açılan pencere Terminal sekmesine tıklayın. Gördüğünüz satırın en başında (kivy_venv) yazıyor olmalı.
    Ekran görüntüsü_2024-05-13_13-34-57
    2.b. VS Code editörünün sağ üstünde görünen üçgen (Run) butonuna tıklayın. Uygulamanın sorunsuz açılması gerekiyor.

  2. ANDROID APK OLUŞTURMA: Kivy dökümantasyonunda bunun için buildozer kullanılabileceği yazıyor, buildozer’in dökümantasyonuna yönlendiriyor. Biz de o dökümantasyondan ilerleyecez. Dökümantasyonda görünen adımları dikkatle uyguluyoruz.

    3.a. buildozer’i sanal ortamımıza (kivy_venv) yükleyelim. Sanal ortama yükleme yaparken dökümantasyonda belirtilen --user kodu kullanılmayacak. Aşağıdaki gibi yükleme yapabilirsiniz.
    pip3 install --upgrade buildozer

    3.b. Sistemimizdeki paketlerimizi güncelleyip, gerekli bağımlılıkları yükleyip ortam değişkenlerimizi ayarlayalım. Aşağıdaki kodları sırasıyla terminalden çalıştırın.

sudo apt update
sudo apt install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
pip3 install --upgrade Cython==0.29.33
  1. 3.c. Ortam değişkenimizi ayarlayalım. Bunun için kullanıcı dizininizde bulunan .bashrc dosyasını bir metin editörü (Mousepad gibi) ile açarak en altına aşağıdaki kod satırını ekleyin. .bashrc gizli dosya olduğu için kullanıcı dizinine girdikten sonra Ctrl + H ile görebilirsiniz.
    export PATH=$PATH:~/.local/bin/

    3.d. Artık apk dosyası oluşturabiliriz. Dökümantasyonda bahsettiği gibi öncelikle;
    buildozer init komutunu VS Code üzerinden terminalde uygulayalım. Bu kod buildozer.spec isimli bir dosya oluşturacak. Bu dosyada derleme ve bazı ayarlamalar için parametreler var. Ne anlama geldiğini görmek için buraya bakabilirsiniz.

    3.e. Şimdi debug yapalım. buildozer -v android debug komutu ile proje dosyanız içerisinde bin klasörü altında bir apk oluşacak ama ilk etapta bu iş çok uzun sürüyor. SDK, NDK vs. bir ton yükleme yapılacak. Sonraki aşamalarda bu iş uzun sürmeyecek, ilk sefere mahsus böyle. Ekranın sonunda kırmızı renkli hatalar aldıysanız stackoverflow 4 gözle sizi bekliyor :laughing:. Bu aşamada ben gerçekten çok boğuştum, internet aramalarımda genel olarak Cython sürüm uyuşmazlığı olduğu, proje klasör isminde boşluk olduğu gibi şeyler var. Yukarıdaki kuruluma uyduysanız bende çalıştı, umarım sizde de çalışır.

    3.f. Yukarıdaki adımda hata almadıysanız telefonu geliştirici moduna alıp USB kablosu ile USB Hata Ayıklama modundan bilgisayarınıza bağlayın. Şimdi VS Code editöründen buildozer android deploy komutunu çalıştıralım. Uygulama telefonunuza yüklenecektir. Bu aşamada eğer adb devices unauthorized diye bir hata görürseniz aşağıdakileri yapın.

  • Kullanıcı ev dizininde .android klasörü içinde adbkey ile adbkey.pub isimli dosyaları silin (Bkz. kaynak). (.android dizini gizlidir. Ev dizininide Ctrl + H yapmayı unutmayın.)
  • Bu videoda gösterilen adımı uygulayıp 3.f. adımındaki komutu tekrar çalıştırın.

Gerçekten çok sıkıntılı, ama inat edip yaptıktan sonra keyifli oluyor. Başarılar arkadaşlar.