Python ile Android Uygulama Geliştirme
Öğrenmeye başlayalı çok uzun zaman olmadı ama Python ile yapılabilecekler konusunda uzun bir araştırma yaptım. Çalışması için yorumlayıcıya ihtiyacı olduğundan başta ümitsizdim ama gerekli kütüphaneleri kurduktan sonra Android uygulaması geliştirilebileceğini öğrendim. Üstelik ara kütüphane (ya da artık adı ne ise) kullandığım için uygulamanın yavaş (bkz. phonegap) olmasını bekledim fakat gayet hızlıydı.
Önce şunu söylemem gerekli, eğer windows kullanıyorsanız python-for-android kütüphanesini kullanamıyorsunuz. Linux ya da Mac kullananlar devam edebilir. Biraz uzun bir "gereklilikler" listemiz var. Hazır olun!
*Bu arada üstteki logonun tüm hakları götüme aittir. İzinsiz kullanabilir, çalıp çırpabilirsiniz.
Gerekli Paketler
Sayın android severler, şimdi terminali açın ve aşağıdaki paketleri sırası ile yükleyin. Önce gerekli temel paketleri yükleyin.
sudo apt-get install build-essential patch git-core ccache ant python-pip python-dev
Eğer 64-bit mimarili sistem kullanıyorsanız şunları da yüklemelisiniz:
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 libc6-dev-i386
Python için C eklentilerini içeren Cython paketini yükleyin.
sudo apt-get install cython
29.05.2015 Güncelleme: Sorunla karşılaşmamak için cython'u güncellemeniz gerekiyor.
sudo add-apt-repository ppa:cython-dev/master-ppa sudo apt-get update sudo apt-get install cython
Ya da pip kullanarak yüklemek isterseniz:
sudo apt-get install python-pip sudo pip install --upgrade cython
Android SDK Kurulumu
Önce şuradaki sayfaya gidip "SDK Tools Only" kısmından Linux için olan dosyayı indirin. İndirdiğiniz tgz arşivini istediğiniz bir yere çıkarın. Ben home dizinini tercih ediyorum izin sorunu vs. olmasın diye.
Home(ev) dizinine attığınızı varsayarsak aşağıdaki komutlarla Android SDK Manager'ı açabilirsiniz.
cd cd android-sdk-linux cd tools ./android
SDK Yöneticisi'ni açtıktan sonra Android 4.0 (API 14)'ı seçip "Instal packages.." deyin. API 14'ü seçmenizin sebebi python-for-android'in şuanda stabil çalışabildiği sürümün bu olması.
Paketlerin kurulması biraz uzun sürebilir. İster bekleyin ister bir yandan devam edin.
Android NDK Kurulumu
Şimdi şuradaki sayfaya gidip. Downloads kısmından mimarinize (32-bit / 64-bit) uygun olan Linux paketini indirin.
Dosya indikten sonra istediğiniz bir dizine (tercihen Home) atıp arşişi aşağıdaki komutlar ile açın.
chmod a+x android-ndk-r10d-linux-x86_64.bin ./android-ndk-r10d-linux-x86_64.bin
Dosya adı indirdiğiniz sürüme göre farklılık gösterebilir, kendinize göre düzenlemeyi unutmayın.
Paketleri Sistem Yoluna Ekleme
Arşiv açıldıktan sonra sıra geldi SDK ve NDK'i sistem yolu(PATH)na eklemeye. Aşağıdaki komut ile home dizinindeki .bashrc
dosyasını açın.
gedit .bashrc
Bu dosya home(ev) dizininde, komutu yazmadan önce terminalde orda olduğunuza emin olun. Ardından açılan dosyanın en altında yüklediğiniz paketlerin dizinlerini belirtin.
export ANDROIDSDK=/home/umut/android-sdk-linux export ANDROIDNDK=/home/umut/android-ndk-r10d export ANDROIDNDKVER=r10 export ANDROIDAPI=14 export JAVA_HOME=/usr/lib/jvm/default-java export PATH=$PATH:$ANDROIDNDK:$ANDROIDSDK/platform-tools:$ANDROIDSDK/tools:$JAVA_HOME
SDK ve NDK dizinlerini kendi klasörlerinize göre düzenledikten sonra ANDROIDNSKVER değişkenine indirdiğiniz NDK versiyonunu yazın. ANDROIDAPI zaten az önce yüklediğiniz için 14. İleride farklı bir API versiyonu ile çalışmak isterseniz buradan bu sürümleri güncellemelisiniz.
Java JDK gerekli mi bilmiyorum, eğer yok diye hata alırsanız daha önce şurada anlatmıştım. Tavsiyem hata almadan her halukarda kurun, Android uygulaması geliştiriyorsunuz illaki lazım olur.
Kivy Kurulumu
Şimdi uygulamalarda kullanacağımız kivy kütüphanesini PPA kullanarak yükleyin.
sudo add-apt-repository ppa:kivy-team/kivy sudo apt-get update sudo apt-get install python-kivy
Android için Python
Yine terminalde ev dizinine geldikten sonra aşağıdaki komutla python-for-android'i githubdan klonlayın.
git clone https://github.com/kivy/python-for-android.git
Romalılar! Artık önümüzde hiçbir engel kalmadı...
Merhaba Dünya
Şimdi de klasik girişi yapalım ve "Merhaba Dünya" uygulaması yapıp cihaza yükleyelim. Yine kolay erişim için ev dizininde bir klasör oluşturun ve içine main.py dosyası oluşturup şurada verilen örnek uygulamanın kodlarını yazın.
import kivy kivy.require('1.0.9') from kivy.lang import Builder from kivy.uix.gridlayout import GridLayout from kivy.properties import NumericProperty from kivy.app import App Builder.load_string(''': cols: 1 Label: text: 'Welcome to the Hello world' Button: text: 'Click me! %d' % root.counter on_release: root.my_callback() ''') class HelloWorldScreen(GridLayout): counter = NumericProperty(0) def my_callback(self): print 'The button has been pushed' self.counter += 1 class HelloWorldApp(App): def build(self): return HelloWorldScreen() if __name__ == '__main__': HelloWorldApp().run()
Kodlarınızı test etmek için python main.py
yaparak telefona atmadan önizleyebilirsiniz.
Şimdi ev dizinindeki python-for-android
klasörüne gidin ve aşağıdaki komutu girin.
./distribute.sh -m kivy
Eğer
Bu komutu yazarken aşağıdaki gibi bir hata alıyorsanız mevcut cython paketini sudo apt-get --purge remove cython
yazarak kaldırdıktan sonra sudo pip install Cython=0.9.1
ile uygun sürümü yüklemelisiniz.
#error Do not use this file, it is the result of a failed Cython compilation. error: command 'arm-linux-androideabi-gcc' failed with exit status 1
İşlem bittikten sonra aşağıdaki komut ile yeni oluşturulan klasöre gidin.
cd dist/default
Eğer
Bu dizinde build.py dosyası yoksa ya da klasör boş ise eksik modül var demektir. Bir önceki komutun çıktısını kontrol edip ilk baştaki missing
kısmında söylenen paketleri yükleyin.
Uygulamayı Yükleme
Şimdi az önce oluşturduğunuz "Merhaba Dünya" uygulamasını telefona yükleyin. Tabi önce bir USB ile cihazı bilgisayara bağlayın ve cihazın "Geliştirici Modu" açık olsun.
./build.py --package com.merhaba.dunya --name "Merhaba Dünya" --version 1.0 --dir /home/umut/merhabadunya debug installd
Gönderdiğiniz package parametresi uygulamanın paket ismini, name uygulamanın adını, dir uygulama dosyalarının bulunduğu dizini gönderiyor. Az önce oluşturduğunuz uygulama dizini ile aynı olduğundan emin olmalısınız.
Komutu çalıştırdıktan sonra bir - iki dakika kadar kodları derleyecek yükleme falan yapacak. İşlem bittiğinde telefondan uygulamalar bölümünden çalıştırabilirsiniz.
Eğer
Bu esnada aşağıdaki hatayı alırsanız sudo apt-get install lib32stdc++6
ile gerekli kütüphaneyi kurduktan sonra tekrar denemeniz yeterli.
subprocess.CalledProcessError: Command '['ant', 'debug']' returned non-zero exit status 1
Kodları telefona atmadan test etmek için proje klasöründeki main.py dosyasını python komutu ile yorumlayabilirsiniz. Böylelikle her değişiklikte uygulamayı telefona atarak zaman kaybetmemiş olursunuz.
Eğer
Derlema yaparken linkname is too long hatası alıyorsanız dizin isimleri çok uzun demektir. Klasörlerin isimlerini kısaltıp daha üst klasörlere taşırsanız sorun düzeliyor.
Kolay gelsin!