Tasarım Kodlama

Android Studio için Gradle’a Giriş

Gradle Nedir?

Gradle, inşa, test, dağıtım vb. otomatikleştirmek için kullanılan bir derleme sistemidir (açık kaynak). “Build.gradle“, görevleri otomatikleştirebileceğiniz komut dosyalarıdır. Örneğin, bazı dosyaları bir dizinden diğerine kopyalamak için basit bir görev, gerçek derleme işlemi gerçekleşmeden önce Gradle derleme betiği tarafından gerçekleştirilebilir.

Android Studio’da Gradle

Android Studio’da Gradle, android uygulama projelerimizi oluşturmak için kullanılır, dolayısıyla bir yapı sistemi rolünü oynar. Android Studio‘dan önce, Eclipse’de, ANT kullanarak Eclipse’de Android Uygulamaları oluşturmak ve çalıştırmak için GUI tabanlı adımlar tarafından yakında devralınan komut satırı aracını kullanarak uygulamaları derler ve oluştururduk. Her android uygulama geliştirme aracının kaynakları, java kaynak kodunu, harici kitaplıkları derlemesi ve bunları son bir APK’da birleştirmesi gerekir.

Gradle, kodun derlenmesinden, test edilmesinden, dağıtılmasından ve kodun .dex dosyalarına dönüştürülmesinden ve dolayısıyla uygulamanın cihazda çalıştırılmasından sorumlu olan bir derleme sistemidir.

Android Studio, Gradle sistemi önceden yüklenmiş olarak geldiğinden, projemizi oluşturmak için ek çalışma zamanı yazılımları yüklemeye gerek yoktur. Android stüdyosunda Run düğmesine her tıkladığınızda, bir gradle görevi otomatik olarak tetiklenir ve projeyi oluşturmaya başlar ve gradle görevini tamamladıktan sonra uygulama AVD‘de veya bağlı cihazda çalışmaya başlar.

Gradle gibi bir yapı sistemi bir derleyici, bağlayıcı vb. değildir, ancak derleme, dosyaların bağlanması, test senaryolarının çalıştırılması ve sonunda Android Uygulamanız için kodun bir apk dosyasına paketlenmesi işlemlerini kontrol eder ve denetler.

Her android stüdyo projesi için biri uygulama, diğeri proje seviyesi (modül seviyesi) derleme dosyaları için olan iki build.gradle dosyası vardır.

  • Top-level build.gradle
  • Module-level build.gradle

Derleyici derleme sürecinde kaynak kodunu, kaynakları, JAR dosyalarını ve AndroidManifest.xml (uygulama hakkında meta verileri içeren) harici kitaplıkları alır ve bunları bytecode içeren .dex(Dalvik Executable dosyaları) dosyalarına dönüştürür. Bu bayt kodu, uygulamanızı çalıştırmak için tüm android cihazlar tarafından desteklenir. Ardından APK Manager, .dex dosyalarını ve diğer tüm kaynakları tek bir apk dosyasında birleştirir. APK Packager, ilgili debug veya release anahtar deposunu kullanarak hata ayıklamayı imzalar veya apk’yı yayınlar.

Debug apk genellikle test amaçlı kullanılır veya sadece geliştirme aşamasında kullanıldığını söyleyebiliriz. Uygulamanız istenen özelliklerle tamamlandığında ve uygulamanızı harici kullanım için yayınlamaya hazır olduğunuzda, bir sürüm anahtar deposu kullanılarak imzalanmış bir Release apk gerekir.

Şimdi gradle dosyalarına biraz daha ışık tutalım.

setting.gradle

setting.gradle(Gradle ayarı) dosyası, uygulamanızda kullanılan tüm modülleri belirtmek için kullanılır.

build.gradle (proje düzeyi)

Üst düzey (modül) build.gradle dosyası, proje düzeyinde ayar yapılandırmalarını tanımlayan proje düzeyinde yapı dosyasıdır. Bu dosya, konfigürasyonları android uygulama projesindeki tüm modüllere uygular.

Üst düzey build.gradle, aşağıdakiler gibi çeşitli yapı yapılandırmalarını destekler:

  1. buildscript: Bu blok, Gradle için repositorileri ve bağımlılıkları yapılandırmak için kullanılır.[NOT: Bağımlılıkları buraya dahil etmeyin.(bunlar modül düzeyinde build.gradle’a dahil edilecektir) ]
    • dependencies: Buildscript’teki bu blok, proje sırasında Gradle’ın oluşturması gereken bağımlılıkları yapılandırmak için kullanılır.
      classpath "com.android.tools.build:gradle:4.1.2"
  2. allprojects: Bu, üçüncü taraf eklentileri veya kitaplıkları yapılandırabileceğiniz bloktur. Yeni oluşturulan projeler için android stüdyosu varsayılan olarak JCenter ve Google’ın maven deposunu içerir.
  3. task clean(type:Delete): Bu blok, proje her çalıştırıldığında dizini silmek için kullanılır. Bu şekilde, birisi tam bir temizlik gerektiren settings.gradle sırasındaki gibi bazı yapılandırma dosyalarını değiştirdiğinde projeler temiz kalır.

build.gradle (modul düzeyi)

Uygulama düzeyi build.gradle dosyası, android projesinin her modülünde bulunur. Bu dosya, belirli bir uygulama modülü için uygulama kimliği(applicationID), sürüm adı (apk sürümü), sürüm kodu, minimum ve hedef sdk olarak paket adınızı içerir. Harici kitaplıkları (jar dosyalarını değil) dahil ettiğinizde, bunları projenize uygulamanın bağımlılıkları olarak dahil etmek için uygulama düzeyindeki gradle dosyasında belirtmeniz gerekir.

Modül düzeyinde build.gradle, aşağıdakiler gibi çeşitli yapı yapılandırmalarını destekler:

  • android: Bu blok, belirli android oluşturma seçeneklerini yapılandırmak için kullanılır.
    • compileSdkVersion – Bu, uygulamanın API seviyesini tanımlamak için kullanılır ve uygulama bu ve daha düşük seviyenin özelliklerini kullanabilir.
  • defaultConfig:
    • applicationId– Bu, uygulamanın yayınlanması için benzersiz kimliği tanımlamak için kullanılır.
    • minSdkVersion– Bu, uygulamayı çalıştırmak için gereken minimum API seviyesini tanımlar.
    • targetSdkVersion– Bu, uygulamayı test etmek için kullanılan API düzeyini tanımlar.
    • versionCode– Bu, uygulamanın sürüm kodunu tanımlar. Uygulamada her güncelleme yapılması gerektiğinde, sürüm kodunun 1 veya daha fazla artırılması gerekir.
    • versionName– Bu, uygulamanın sürüm adını tanımlar. bu, bir güncelleme oluşturulurken herhangi bir oranda artırılabilir.
  • buildTypes(sürüm):
    • minifyEnabled– bu, sürüm oluşturma için kod küçültmeyi etkinleştirir.
    • proguardFiles– bu, progaurd ayarları dosyasını belirleyecektir.
  • dependencies– Bu, projeyi oluşturmak için gereken bağımlılıkları belirtir.

Not: Akıllı Telefon, Tablet veya TV gibi bireysel modüller için varyasyonlarda belirli bir uygulama geliştirildiyse, hepsi için ayrı gradle dosyaları oluşturulmalıdır.

Gradle sisteminizi komut satırı aracıyla bile başlatabilirsiniz. Bunun için aşağıdaki komutlar kullanılır:

  • ./gradlew build – (Projeyi inşa et)
  • ./gradlew clean build – (Projeyi sıfırdan inşa et)
  • ./gradlew clean build – (Testi çalıştır)
  • ./gradlew wrapper – (mevcut tüm görevleri görme)
Android Gradle Yaşam Döngüsü

ART – Android Runtime

Dalvik Sanal Makinesi öldü. Evet, Google 2014’te kullanmayı bıraktı, ancak çevrimiçi Android eğitimlerinin çoğunu hala güncellenmedi, ancak lütfen Dalvik Sanal Makinesi’nin artık Android’de kullanılmadığını unutmayın.

Yeni çalışma zamanı, ART veya Android Çalışma Zamanı olarak bilinir ve bu, selefi Dalvik ile çok iyi uyumludur, ancak aşağıdakiler gibi birçok yeni özellik ile birlikte gelir:

  • Önceden Derleme
  • Geliştirilmiş Çöp toplama
  • Geliştirilmiş Hata Ayıklama ve tanılama.

Daha fazla detay için buradaki bağlantıya tıklayabilirsiniz.


Gradle ve Maven arasındaki fark

Yazılım, istenen işlevselliği sağlayan talimatları içeren bir program veya program grubudur ve Mühendislik, belirli bir amaca hizmet eden ve sorunlara uygun maliyetli bir çözüm bulan bir şeyi tasarlama ve inşa etme sürecidir. Gradle ve Maven, yazılım oluşturmak için kullanılan farklı araçlardır.

Gradle: Gradle, mekanizasyon ile yazılım oluşturmamıza yardımcı olan açık kaynaklı bir araçtır. Bu araç, yüksek performansı nedeniyle farklı türde yazılımların oluşturulmasında yaygın olarak kullanılmaktadır. Proje yapısını geliştirmek için Java ve Groovy tabanlı Etki Alanına Özgü Dil (DSL) üzerinde çalışır. Gradle, çeşitli platformlarda test etme ve dağıtma ile mobil ve web uygulamalarının oluşturulmasını destekler. İşlevselliği ile Android uygulamaları geliştirmek için resmi bir araç olarak tercih edilmektedir.

Maven: Maven, bu araç tarafından kullanılan yaşam döngüsünde farklı yazılımlar oluşturmamıza yardımcı olan açık kaynaklı bir proje yönetim aracıdır. Bu araç, yazılımın kısa bir süre içinde standart bir düzende standardizasyonuna (yani) geliştirilmesine odaklanır. Bununla Java projeleri oluşturabiliriz ancak diğer diller için de kullanılabilir. Maven, uygulamanın yapılandırılması için Genişletilebilir İşaretleme dili (XML) kullanır.

Aşağıdaki tabloda iki araç arasındaki farklar açıklanmaktadır:

TemelGradleMaven
Bilgiye DayanarakGradle, alana özgü dil projeleri geliştirmeye dayanmaktadır.Maven, saf Java dili tabanlı yazılım geliştirmeye dayanmaktadır.
YapılandırmaProje yapısı oluşturmak için Groovy tabanlı Etki Alanına özgü bir dil (DSL) kullanır.Proje yapısı oluşturmak için Genişletilebilir İşaretleme Dili (XML) kullanır.
OdaklanmaUygulamalara yeni özellikler ekleyerek geliştirmek.Belirli bir zaman sınırında uygulamalar geliştirmek.
PerformansYalnızca mevcut çalışan görevi izlemek için optimize edildiğinden maven’den daha iyi performans gösterir.Yazılım oluşturma sırasında yerel geçici dosyalar oluşturmaz, bu nedenle büyük zaman kullanır.
Java DerlemesiDerlemeyi önler.It is necessary to compile.
KullanılabilirlikKullanıcıların alışmak için çok zaman harcamasını gerektiren yeni bir araçtır.Bu araç, birçok kullanıcı tarafından bilinen bir araçtır ve kolayca kullanılabilir.
ÖzelleştirmeBu araç, çeşitli IDE’leri desteklediği için son derece özelleştirilebilir.Bu araç, sınırlı sayıda geliştiriciye hizmet eder ve o kadar özelleştirilebilir değildir.
Desteklenen dillerJava, C, C++ ve Groovy’de yazılım geliştirmeyi destekler.Scala, C# ve Ruby’de yazılım geliştirmeyi destekler.

Daha fazla Android içeriği için Android Dersleri yazısını inceleyebilirsiniz.

2 yorum