Geliştirme Ortamının Hazırlanması

Gerekli Bileşenler

Geliştirme ortamı Google tarafından Ubuntu LTS 12.04 versiyonu için test edilmiş olup, hiç bir sorunla uğraşmak zorunda kalmak istemiyorsanız bu dağıtımın kullanılması önerilir. Biz burada Debian Wheezy ve Debian Jessie dağıtımlarını kullanıyor olacağız.

Ubuntu tabanlı sistemleri Google sadece önermiyor, aynı zamanda kendileri de Android geliştirme ve build işlemlerinde kullanıyorlar.

Diğer gereklilikler şu şekilde sıralanmaktadır:

  • 4 GB Bellek
  • Minimum 100 GB boş alan
  • Python versiyon 2.6 veya 2.7 versiyonu
  • GNU make 3.81 veya 3.82 versiyonu
  • JDK 7
  • Git versiyon 1.7 veya yukarısı

JDK 7 versiyonunu aşağıdaki gibi kurup:

$ sudo apt-get install openjdk-7-jdk

sonrasında sisteminizde birden fazla JDK versiyonu bulunuyor ise öntanımlı olacak olanı versiyon 7 olacak şekilde aşağıdaki komutlarla güncelleyin:

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

Sonrasında aşağıdaki paketleri yüklemelisiniz:

$ sudo apt-get install git gnupg flex bison gperf build-essential \
    zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
    libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
    libgl1-mesa-dev g++-multilib mingw32 tofrodos \
    python-markdown libxml2-utils xsltproc zlib1g-dev:i386

Not: Debian dağıtımında 64 bitlik sisteminizde bu paketleri kurabilmek için Multi-Arch desteğini ayarlamış olmanız gerekir. Özet olarak sudo dpkg --add-architecture i386 ve ardından sudo apt-get update komutlarını vermeniz gereklidir. Ayrıntılar için: https://wiki.debian.org/Multiarch/HOWTO

Ubuntu 12.04 için kurulum sonrası aşağıdaki komutla libGL kütüphanesi için sembolik link oluşturuyoruz:

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Ubuntu 14.04 kullanıyorsanız aşağıdaki ek paketleri de kurmanız gerekmektedir:

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils

USB Erişimlerinin Ayarlanması

Modern Linux dağıtımlarında USB veriyolundaki aygıtlar üzerinde normal kullanıcınızla doğrudan erişiminiz olmadığından, sürekli root kullanıcı haklarıyla çalışmak zorunda kalmamak için, USB veriyoluna takılan ilgilendiğimiz aygıt tipleri için oluşturulacak aygıt dosyalarının sahibini kendi kullanıcımız olacak şekilde değiştirebiliriz.

Bunun için USB hotplug sürecini yöneten udev servisine, kullanacağımız cihazların Vendor ID ve Product ID bilgileri doğrultusunda aşağıdaki gibi bir ek kural dosyası tanımlamalıyız. Dosya içerisinde ilgilenmediğiniz aygıtlarla ilgili satırları kaldırabilirsiniz.

Aşağıdaki örnek dosyayı sisteminizde /etc/udev/rules.d/51-android.rules adıyla oluşturup, dosya içerisindeki <username> şeklinde olan kısımları kendi kullanıcı adınızla değiştirmelisiniz.

# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
# adb protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"
# fastboot protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"
# adb protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"
# fastboot protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"

Kullanacağınız cihaza ait kural burada yer almıyorsa, USB kablosunu bilgisayarınıza taktıktan sonra, lsusb komutunu çalıştırın. Komut çıktısında yeni taktığınız cihazı tahmin edip, 8087:0024 formatındaki gibi Vendor ID : Product ID kısımlarını not ederek, udev kurallarına bu aygıtı da eklemelisiniz.

Repo Aracının Kurulumu

Android geliştirme ortamında yapılacak işlemleri kolaylaştırmak adına repo adlı bir araç kullanılmaktadır. Bu aracı kendi ev dizininizde bin alt dizinine kurmanız öneriliyor. PATH'inizde bulunan herhangi bir başka dizine de kurabilirsiniz.

$ mkdir -p ~/bin
$ export PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

Not: Bazı dağıtımlarda ~/bin dizini kullanıcıların öntanımlı PATH'inde bulunuyorken bazılarında bulunmamaktadır. Böyle bir durumda kolaylık olması için yukarıdaki export komutunu, ~/.bashrc dosyanızın sonuna ekleyebilirsiniz.

repo aracını kurduktan sonra, çalışmalarımızı yapacağımız ana dizini belirleyip oluşturalım, sonrasında ilgili dizine geçelim. Örnek olarak tüm çalışmaları ~/embedded/android dizini altında yapacaksak:

$ mkdir -p ~/embedded/android
$ cd ~/embedded/android

Ardından repo uygulaması ile master branch'i aşağıdaki komut ile ilklendiriyoruz:

$ repo init -u https://android.googlesource.com/platform/manifest

Komutun bitmesine yakın size isim ve e-posta adresi sorulacaktır. Bu esnada e-posta adresi olarak bir Google hesabı girilmelidir:

 ...
 * [new tag]         studio_1.0.0 -> studio_1.0.0
 * [new tag]         studio_1.0.1 -> studio_1.0.1

Your Name  [Murat Demirten]: 
Your Email [demirten@debian]: [email protected]

Your identity is: Murat Demirten <[email protected]>
is this correct [y/N]? y

Testing colorized output (for 'repo diff', 'repo status'):
  black    red      green    yellow   blue     magenta   cyan     white 
  bold     dim      ul       reverse 
Enable color display in this user account (y/N)? y

repo has been initialized in /home/demirten/embedded/android

Android Kaynak Kodlarının İndirilmesi

Yukarıdaki işlemleri yaptıktan sonra, repo aracının sync komutuyla kaynak kodlarının indirilmesi sağlanır:

$ repo sync

Bu işlem bir miktar uzun sürebilir (bazen çok uzun, belki 1 gün kadar). Ocak 2015 itibariyle yaklaşık toplamı 20 GB'ı bulan kaynak dosyalar indirilecektir.

Kullanıcı Otorizasyonu

Google repo'larında IP adresi bazında yapılacak isteklere yönelik bir kısıtlama mevcuttur. Tek kişi çalışıyorken bu bir sıkıntı oluşturmasa da, aynı public IP adresinin paylaşıldığı ve birden fazla kişinin bu repo'lara eriştiği durumlarda sorun yaşayabilirsiniz. Ortak IP kullanıyor olmaktan kaynaklanacak sorunları bertaraf edebilmek için, https://android.googlesource.com/new-password adresindeki yönergeleri izleyerek kendinize ait bir parola oluşturabilir ve aşağıdaki komutla repo init işlemini tekrar edebilirsiniz. Bu işlem sonrasında yaptığınız istekler IP bazlı kontrol edilmek yerine sizin kullanıcınıza göre kontrol edilecektir.

$ repo init -u https://android.googlesource.com/a/platform/manifest

results matching ""

    No results matching ""