Gradle Nedir?

Halil Özel
5 min readOct 14, 2020

Selamlar, Android Developer’ların haşır neşir olduğu bir build tool’u olan Gradle’ı öğreneceğiz. Hazırsanız haydi öğrenelim :)

Gradle
  • Gradle, derleme otomasyonuna ve çoklu dil geliştirmesine destek veren bir build tool’dur.
  • Gradle, Android başta olmak üzere Java, Scala, Groovy, C, C++ gibi birçok dilde kullanılmaktadır.
Stay in Flow
  • Gradle’ı Android Studio, Eclipse, IntelliJ, NetBeans IDE’lerinden birini seçip kullanabilirsiniz.
  • Gradle, Open Source(Açık Kaynak) kodlu bir build tool’dur. Kaynak kodlarına GitHub reposundan erişebilir, inceleyebilirsiniz.
  • Gradle 3 ana prensip üzerinde durmaktadır.
Gradle Philosophy

Build Anything : Java, C ++, Python veya tercih ettiğiniz dilde yazın. Herhangi bir platformda dağıtım için paket. Monorepo veya çoklu repoya gidin. Ve hepsini oluşturmak için Gradle’ın benzersiz çok yönlülüğüne güvenin.

Automate Everything : Otomasyon konusunda iddialı olmak için Gradle’ın zengin API’sini ve olgun eklenti ve entegrasyon ekosistemini kullanın. Yazılımınızın teslimatını uçtan uca modelleyin, entegre edin ve sistematik hale getirin.

Deliver Faster : Zarif, son derece hızlı yapılarla geliştirmeyi ölçeklendirin. Derlemeden kaçınmadan gelişmiş önbelleğe alma ve ötesine kadar, ekibinizin sürekli olarak teslimat yapabilmesi için performansı durmaksızın takip ediyoruz.

  • Android projesinin başlangıcından sonuna kadar geçen aşamalarda (Derleme, paketleme, test etme, hata ayıklamak, apk imzalamak vb) Gradle yardımıyla işlemler yapılır.
  • Android Studio’da oluşturulan yeni projeyle birlikte Gradle devreye girerek gerekli build işlemlerini otomatik olarak halleder.
Gradle
  • Milyonlarca yazılımcının güvendiği bir tool. Gradle, en iyi 20 open source proje arasına girdi. Aylık 10+ Milyon indirme alan bir projedir. LinkedIn, Android, Netflix, Adobe, Elastic gibi büyük şirketlerin tercihi Gradle oldu.
  • Gradle, iOS tarafında CocoaPods’a benzemektedir. iOS Developer’lar uygulamaya harici bir kütüphane eklemek istediklerinde pod anahtar kelimesini kullanarak ilgili kütüphaneleri uygulamalarına dahil edebiliyorlar. Detaylı bilgi için aşağıdaki yazıyı okuyabilirsiniz :

Gradle hakkında daha detaylı bilgi için resmi sitesini ziyaret edebilirsiniz :

Gradle Build Process Diagram

Şemada göründüğü gibi

  • source kodların,
  • build dosyalar
  • proje içindeki dosyalar,
  • kaynak kodların referans dosyaları,
  • library dosyaları,

bir araya gelerek bizim güzel, eğlenceli uygulamalar geliştirmemize olanak sağlıyor.

Haydi gelin şimdi bir projede Gradle’ın bizlere ne gibi klasörleme oluşturduğunu öğrenelim.

  • app: Projenin modülüdür.
  • build: Build dosyaları bulunur.
  • libs: Kütüphanelerin dosyaları bulunur.
  • src: Kaynak dosyaları bulunur.
  • androidTest: Android cihazda çalışacak testler için kod içeren klasördür.
  • main: Uygulama içerisinde geliştirilen kod ve kaynak dosyalarının bulunduğu ana klasördür.
  • src/main/java: Uygulamada gösterilen ekranlar için kaynak kodları bulunur.
  • src/main/res: Uygulamada kullanılan kaynak dosyaları(image, gif, video, xml) vb. bulunur.
  • src/main/drawable: Uygulamada kullanılan resim dosyaları bulunur.
  • src/main/layout: Ekran tasarım dosyaları bulunur. XML tabanlı dosyalardır.
  • src/main/values: Uygulamada bulunan text, color, style gibi değerlerin tanımlandığı xml dosyaları bulunur.
  • src/main/mipmap: Uygulamanın logolarını içerir. Default olarak atanan logoları bu klasör altında değiştirebilirsiniz.
  • AndroidManifest.xml: Uygulama hakkında temel bilgilerin tutulduğu bir dosyadır. Uygulama adı, gerekli izinler ve daha fazlasını burada belirtip kullanabiliyoruz.
build.gradle(project module)

build.gradle(project module): Root build.gradle dosyası diyebiliriz. Uygulamadaki tüm modüllere uygulanan yapılandırmalar burada yönetilir. Gradle sürümünü, Kotlin ile ilgili sürümleri burada tanımlayıp kullanabiliriz.

  • buildscript: Gradle’ın kendi repoları ve bağımlılıklarını yönettiğimiz bloktur.
  • repositories: Gradle’ın kendi repolarını ya da bizim repolarımızın tanımladığımız bloktur.
  • allprojects: Special özellikleri bulundurur ve bunları tüm projedeki modüllerde kullanılmasını sağlayan bloktur.
build.gradle(app module)

build.gradle(app module): Projenin yapılandırma ayarlarının yapıldığı dosyadır. Kütüphane eklemeleri, uygulamanın sürümü ve birçok özelliği burada tanımlıyoruz.

  • apply plugin: İlgili pluginlerin Android uygulama içinde kullanılabilir hale getirilmesini sağlayan etikettir.
apply plugin: 'kotlin-android-extensions'

Kotlin’in Android için oluşturmuş olduğu extensions’ı kullanabilmemiz için bu plugin’i belirtiyoruz.

  • compileSdkVersion: Uygulamanın compile edilmek istenen versiyonudur. compileSdkVersion > minSdkVersiondan olmalıdır.
  • buildToolsVersion: Varsayılan olarak, Android SDK, Build Tools en son indirilen sürümünü kullanır. Projeleriniz Build Tool’ın eski sürümlerine bağlıysa, SDK Manager bu projelerde kullanmak için araçların ayrı sürümlerini indirmenize ve korumanıza izin verir. Bu etiketi kullanmak isteğe bağlıdır.
  • applicationId: Uygulamanın paket adıdır.
applicationId "com.example.myapplication"

Her yeni proje oluşturulduğunda sizden istenen bir alandır.

  • minSdkVersion: Uygulamanın en düşük hangi sürümde çalışacağını belirten etikettir.
  • targetSdkVersion: Uygulamanın geçerli sürümüdür. SDK platformu en yüksek versiyon değerini almalıdır. Eğer bu değeri belirtmediyseniz minSdkVersion değerini alarak kullanır.
Google Play Developer

Google 2 Kasımdan sonra targetSdkVersion en az 29 olmayan uygulamaların mağazaya yüklenmeyeceğini belirtti.

  • versionCode: Uygulamanın Play Store’a yüklemek istendiği zaman ya da güncellenmesi gerektiği zaman numeric olarak tutulan versiyon bilgisidir. Bu değer uniq olmalıdır. Uygulamanın her güncellenmesinde bu değer arttırılmadır ya da değiştirilmelidir.
  • versionName: Uygulamanın versiyon bilgisinin text halde tutulduğu etikettir. Her güncellemede bu değeri ben uygulamalarımda numeric bir şekilde arttırıyorum. Sizlerede tavsiye ederim.
  • dependencies: Bağımlılıkların(Dependency) tanımlandığı bloktur. AndroidX ile birlikte artık aşağıdaki gibi tanımlamıyoruz.
implementation com.android.support:appcompat-v7:28.0.0

Bu şekilde tanımlıyoruz :

implementation 'androidx.appcompat:appcompat:1.2.0'

AndroidX ile detaylı bilgi için aşağıdaki blog yazısını inceleyebilirsiniz :

Gelecek yazılarda görüşmek üzere.👋🏻 Herkese keyifli kodlamalar. 💻

--

--