Öğ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ı.

Python ile Android Uygulama Geliştirme

Ö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!