Gradle ile Android Uygulaması Geliştirme

Gradle nedir? Nasıl uygulama geliştirilir?


Bu yazımda Android geliştirmenin yeni modası olan Gradle’ın ne olduğunu açıklayıp çok detaya inmeden, kısaca ne işe yaradığını ve nasıl kullanıldığını anlatacağım.

1- Gradle nedir?

Gradle Android uygulaması geliştirme aşamalarını otomatize eden bir build sistemidir. Daha önce Maven kullananlar için Gradle’ı kullanmak çok daha kolay olacaktır. Gradle test, debug ve release işlemlerini daha kolay hale getirmektedir. Android için tercih edilmesinin sebebi de içinde xml, resim ve font dosyaları gibi Android projesinde gereken diğer bileşenleri barındıran paketlerin oluşturulabilmesidir. Yani Maven projelerinde sadece Java içerebilen .jar çıktıları kullanılabilirken Gradle’da içerisinde Java, resim, font ve xml içeren .aar çıktıları kullanılabilirsiniz. Bu yazıda Gradle’ın bütün özelliklerini değil, en basit haliyle bir proje geliştirmek için bilinmesi gereken özelliklerini paylaşacağım. En başta anlamaya ve kullanmaya çalışırken çok zorluk çekebilirsiniz ama ilerde işinizi çok kolaytıracağından emin olabilirsiniz.

2- Gradle ile nasıl uygulama geliştirilir?

Gradle’a başlamak için ilk ihtiyacınız olan şey Android Studio ‘yu indirip kurmak. Android Studio tamamen Gradle üzerine kurulu olduğundan işinizi inanılmaz derecede kolaylaştıracaktır. Eclipse’te de kullanılabilir ama onun için epey bir uğraşmanız gerekebilir.

Bazı kişiler, hatta belki siz de, Android Studio’nun yeterince istikrarlı olmadığını ve bu yüzden Eclipse’in şu an daha iyi bir seçenek olduğunu düşünebilirsiniz. Belki Android Studio mükemmel olmayabilir ama bu halinin bile Eclipse’ten çok çok daha iyi olduğunu rahatlıkla söyleyebilirim.

Android Studio bilgisayarınızda yoksa kurun. Kurulum işlemi bittikten sonra Android Studio’yu açın ve yeni bir Android Projesi oluşturun. Projeyi oluştururken de alışık olduğumuza benzer bir ekranla karşılaşacaksınız.

Yeni proje kurulumu

Klasör yapısı

Proje oluştuğunda karşınıza çıkacak ilk farklılık projenin klasör yapısı olacaktır. Bu yapı daha önce alışkın olduğumuz proje yapısından tamamen farklı. Kısaca bu yapıdan bahsedeceğim.

Gradle proje yapısı

app: .idea klasörünün altında gördüğünüz app klasörü bizim projemizin modülüdür. Eğer çok daha karmaşık projeler yapmayacaksanız sadece bu app modülünün içinde değişiklik yapacaksınız demektir.

build: Build dosyalarının tutulduğu klasör.

libs: Kütüphanelerin tutulduğu klasör.

src: Java, kaynak(res) ve AndroidManifest dosyalarının bulunduğu klasör.

Eğer projede assets kullanmak isterseniz assets klasörünüzü app klasörünün içine koymanılısınız.
app modülündeki build.gradle dosyası

build.gradle: (app modülündeki)Bu dosya sihrin gerçekleşiği yer. Burada proje, kütüphane, proguard ve anahtarlarla ilgili bilgiler tutulur. Buradaki minSdkVersion ve targetSdkVersion daha önce AndroidManifest dosyasında bulunan değerlerin aynısı. compileSdkVersion da projenizi compile etmek istediğin SDK versiyonu. Yazının devamında bu dosyanın farklı kullanım amaçlarını göreceksiniz.

Gradle projelerinde her modül için birer tane, genel proje için de 1 tane build.gradle dosyası vardır. Başlangıçta sizin kullanacağınız tek dosya ‘app’(bu örnek projede) modülünün içinde olan build.gradle dosyasıdır.

Android Studio araç çubuğu

Android Studio araç çubuğu

Araç çubuğunda neredeyse her IDE’de aynı anlam taşıyan araçlar var. En baştaki ‘app’ düğmesi çalıştırmak istenilen modülü seçmeye ve çalıştırma seçeneklerini düzenlemeye yarar. Hemen yanındaki düğme de projenizi çalıştırır. Sağ tarafta gördüğünüz küçük Androidcikler de Eclipse’ten aşina olduğumuz AVD Manager, SDK Manager ve DDMS.

Bu araçlara en üstteki menüden Tools -> Android kısmından da ulaşabilirsiniz

Burada en önemli olan düğme ise o Androidciklerin en solundaki, üzerinde mavi ok bulunan, Sync düğmesidir. (Sync Project with Gradle Files) Bu düğme proje ayarlarında yapılan değişikliklerden sonra projenin bağımlı olduğu sdk ve kütüphaneleri indirip build ortamını oluşturur.

Yeni bir proje oluşturduğunuzda veya Android Studio’yu tekrar açtığınızda en altta bazı işlemlerin devam ettiğini görürsünüz. Bu esnada yapılan iş, gerekli dosyaların(dependency) internetten indirilmesidir. Sync düğmesi de aynı şekilde değişikliklerden sonra gerekli dosyaları internetten indirir.

3- Gradle projesine nasıl kütüphane eklenir?

Gradle’ın bize sunduğu en büyük avantajlardan biri de kütüphane yönetim sistemi. Kütüphane eklemek için tek yapmanız gereken build.gradle dosyasına tek satır kod eklemek.

build.gradle dosyasını açtığınızda içinde dependencies isminde bir kısım göreceksiniz. Bu kısım projenizle beraber compile edilmesi gereken (projenizin bağımlı olduğu) kaynakları içerir.

build.gradle’da projenin bağımlı olduğu kaynakların tutulduğu kısım

Bu kısımdaki ilk satır, libs klasöründeki .jar dosyalarının projeyle beraber compile edilmesi gerektiğini belirtir. İkinci satır ise Maven Central’da bulunan bir repository yi kaynak olarak kullandığını belirtir. Bunlar zaten siz projeyi oluşturduğunuzda kendiliğinden ayarlanmış vaziyette gelir. Bunlara ek olarak projenizde bulunan başka bir modulü de ‘app’ modulüne eklemek isterseniz dependencies kısmına

compile project(‘:moduleName’)

satırını ekleyebilirsiniz. Bu oluşturduğumuz örnek proje başka bir modüle bağımlı değil ve genelde de buna pek ihtiyacınız olmayacaktır.

.jar kütüphanesi kullanımı

.jar olarak paketlenmiş bir kütüphaneyi kullanmak için tek yapmanız gereken .jar dosyasını libs klasörüne koymak ve araç çubuğundan biraz önce bahsedilen Sync düğmesine basmak. Proje senkronize olduktan sonra kütüphaneyi kullanmaya başlayabilirsiniz.

Repository kullanımı

Gradle’ın en büyük avantajı projenizin bağımlı olduğu kaynakları internet üzerinden otomatik olarak indirebilmesidir. Eğer kullanmak istediğiniz kütüphanenin remote repository si varsa tek satır kod ile kütüphaneyi projenize ekleyebilirsiniz. Bu repository bilgilerini kullanmak istediğiniz kütüphanenin sayfasından, search.maven.org veya mvnrepository.com’dan bulmalısınız.

Örneğin search.maven.org ‘a girip ‘flatui’ yazarsanız karşınıza Android FlatUI kütüphanesi çıkar. Repository sayfasına geldiğinizde ise sol alt tarafta Gradle/Grails sekmesine tıklarsanız kütüphaneyi kullanmanız için ihtiyacınız olan satırı görebilirsiniz.

compile ‘com.github.eluleci:flatui:2.0.0'
Maven Central’deki FlatUI repository’si.
örnek bir bağımlı kaynak listesi

Bu resimde gösterilen dosya benim projelerimden bir tanesinin build.gradle dosyası. İçinde projemin bağımlı olduğu kaynakları görebilirsiniz. Ayrıca burda bana belirttiğine göre kütüphanelerden birisinin daha yeni versiyonu çıkmış ve Android Studio da bana güncelleyebileceğimi söylüyor.

Android için kullanılan ve meşhur olan çoğu kütüphane çoktan Gradle’a uyumlu hale geldi bile. Bu yüzden bulduğunuz kütüphanelerin çoğunu rahatlıkla Gradle projenizde kullanabilirsiniz.

4- Gradle ile nasıl yayına hazır .apk dosyası oluşturulur.

Projenizi yayınlamak için en başta .keystore dosyasını oluşturduğunuzu varsayarak Gradle ile alakalı kısımdan bahsedeceğim.

1 — Projenizin .keystore dosyasını modülünüzün içine (build.gradle dosyasının olduğu yere) koyun. Bu örnekte ‘app’ modülü olduğu için onun içine koymalısınız.

2 — Daha sonra build.gradle dosyasına .keystore u oluştururken kullandığınız bilgileri eklemeniz gerekmektedir. (signingConfigs)

3 — Ayrıca buildTypes ın içindeki release kısmına da bu eklediğiniz bilgilerin ulaşılabilmesi için o objenin referansını vermelisiniz.

imzalı apk alabilmek için eklenmesi gereken ayarlar

build.gradles dosyanız bu şekilde görülmelidir.

4 — Son olarak da Android Studio’nun en altında komut satırını açın (projenizin ana klasöründe olduğunudan emin olun) ve bu komutu girin.

gradle installRelease // windows
./gradlew installRelease // mac

Sonuç olarak bu ekranı göreceksiniz.

installRelease sonucunda apk dosyasının oluşturulduğunu gösteren mesaj

Oluşturulan .apk dosyasını modülünüzün içindeki /build/apk/ klasöründe bulabilirsiniz.

Sonuç

En sondaki signed-apk oluşturma kısmı biraz uğraştırıcı olsa da Android Studio’ya ve Gradle’a alışınca eskisinden daha rahat uygulama geliştirdiğinizi farkedeceksiniz. Eğer projenizi GitHub veya SVN gibi versiyon kontrol sistemlerinde tutuyor ve birden fazla kişi olarak aynı proje üzerinde çalışıyorsanız Gradle’ın kütüphane yönetim sistemi size çok daha kolaylık sağladığını göreceksiniz.

Bu yazıda bahsetmedim ama Gradle’ın debug ve test için de birsürü avantajı ve plug-in desteği de var. Daha fazla bilgi için Gradle’ın kendi sayfasına bakabilirsiniz.

Show your support

Clapping shows how much you appreciated Emrullah Lüleci’s story.