Android Gradle

20 Kas 2019
125
44
38
tcurdt/iProxy
Sevgili THT üyeleri ve üstlerim ; Android Eğitimleri yazı serimizde bu dersimizde Gradle ile devam ediyoruz. Nedir bu Gradle ,ne işe yarar? şimdi incelemeye başlayalım.
Gradle Android cephesinden bakıldığı zaman Android uygulaması geliştirme aşamalarını otomatize eden açık kaynak kodlu Android Studio üzerinde çalışan bir yapı sistemidir. Android Studio da bir proje oluşturduğumuzda otomatik olarak gradle build sistemi devreye girer ve build işlemini gerçekleştirir. Android Studio da bir android projesinin genel yapısını önceki derslerimizde incelemiştik bildiğiniz üzere bir android projesi bir den fazla modülden oluşur. Projeyi test edebileceğimiz, hataları ayıklayabileceğimiz , oluşturduğumuz uygulamayı yayınlayabilmek için apk oluşturabileceğimiz bir çok bileşenden meydana gelen bu yapıda aslında her bir bileşenin kendine ait bir build sistemi vardır. Genel olarak android projelerini incelediğimizde iki tür gradle oluşturma dosyası yer aldığını göreceksiniz. Bunu görebilmek için android studio da bir android projesi oluşturmanız yeterli. Eclipse de android uygulaması geliştirirken bildiğiniz üzere gradle yoktu maven yapısı vardı ve maven projelerinde sadece .jar çıktıları kullanılabilirken gradle ile birlikte xml çıktıları, fontlar vb. yapıları içeren .aar çıktılarını da kullanabilirsiniz.

Android Studio da yeni bir android projesi oluşturduğumuzda örnek olarak aşağıdaki ekran görüntülerinde gördüğünüz gibi proje oluşturulma aşamasında gradle çalışıyor ve build işlemlerini tamamlıyor.

Screen-Shot-2017-09-05-at-21.56.21.png

Screen-Shot-2017-09-05-at-21.56.49.png

Screen-Shot-2017-09-05-at-21.57.01.png

Top-Level Build File: Tüm alt projelere / modüllere ortak yapılandırma seçeneklerini ekleyebileceğiniz dosya yapısıdır.

<PROJECT_ROOT>\build.gradle ( bu dizin içinde yer alır. )

Module-Level Build File: Uygulama modülüne özgü dosya yapısıdır.

<PROJECT_ROOT>\app\build.gradle ( bu dizin içinde yer alır. )

app dizinindeki build.gradle yapısı aşağıdaki gibidir. Gördüğünüz gibi uygulamanın sdk versiyonu, versiyon kodu, versiyon adı, desteklenen minimum sdk vb. özellikleri de içinde barındırır. Burada bulunan yapıları başka dersimizde anlatmıştım o yüzden ayrntılı olarak tekrardan bahsetmeyeceğim incelemek isterseniz bu dersimizi inceleyebilirsiniz.

build.gradle Genel Yapısı​

Kod:
apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 25
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.mobilhanem.myapplication"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

gradle-wrapper.properties: Bu dosya Gradle’ın doğru sürümünün yüklü olup olmadığını denetler ve gerekirse gerekli sürümü indirir.


settings.gradle: Projenizi oluşturan tüm modülleri referanslar. Gradle’a hangi alt projelerin bu yapının bir parçası olduğunu , fiziksel yollarının ne olduğunu ( path ) , build komut dosyalarının adının nasıl verileceğini söyler.

Aşağıdaki resim aslında herşeyi anlatıyor; esnek ve gelişmiş özelliklere sahip gradle yapısını Google un neden Android geliştirirken kullandığına güzel bir örnek.

Gradle1.gif


Gradle’ın sağladığı en büyük avantaj kütüphane yönetim sistemidir. Projenizin ihtiyaç duyduğu herhangi bir açık kaynak kodlu kütüphaneyi, projenize tek satır kod ile ekleyebilirsiniz. ( app dizinindeki build.gradle içerisinde bulunan dependencies içerisinde bu işlemi kolayca gerçekleştirebilirsiniz böylece kullanacağınız kütüphaneyi otomatik olarak internet üzerinden sizin için indirecektir.) Örnek verecek olursak Picasso kütüphanesini projemize dahil etmek istiyoruz yapmamız gereken tek şey aşağıdaki kod parçacığını anlattığım gibi dependencies içerisine yapıştırmak. Picasso kütüphanesi nedir ne işe yarar merak ederseniz ayrıca bu dersimizi de inceleyebilirsiniz.

Kod:
compile 'com.squareup.picasso:picasso:2.5.2'

Gradle ile ilgili anlatacaklarımız bu kadar arkadaşlar zaten çok kapsamlı bir konu olduğu için bunun için ayrı tamamen ayrı bir ders serisi bile hazırlanabilir.Biz bu dersimizde Gradle’n Android tarafında ne işe yaradığını ve temel olarak Gradle konusunda bilgi sahibi olmanız açısından bu bilgileri sizlere aktardım. Zaten ilerleyen derslerimizde hem manifest hemde gradle dosyalarını sık sık kullanacağız. Kullandıkça daha aşina olacağız. Konu ile ilgili daha fazla bilgi edinmek isterseniz de bu siteyi incelemeniz yeterli olacaktır.


THT üzerinden anlattığımız android uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı ÖZEL/DM olarak da sorabilirsiniz.
Herkese güzel forumlar dilerim.
 

TOZQOPARAN

Uzman üye
3 Nis 2021
1,258
678
Eski Anka Underground Tim
Sevgili THT üyeleri ve üstlerim ; Android Eğitimleri yazı serimizde bu dersimizde Gradle ile devam ediyoruz. Nedir bu Gradle ,ne işe yarar? şimdi incelemeye başlayalım.
Gradle Android cephesinden bakıldığı zaman Android uygulaması geliştirme aşamalarını otomatize eden açık kaynak kodlu Android Studio üzerinde çalışan bir yapı sistemidir. Android Studio da bir proje oluşturduğumuzda otomatik olarak gradle build sistemi devreye girer ve build işlemini gerçekleştirir. Android Studio da bir android projesinin genel yapısını önceki derslerimizde incelemiştik bildiğiniz üzere bir android projesi bir den fazla modülden oluşur. Projeyi test edebileceğimiz, hataları ayıklayabileceğimiz , oluşturduğumuz uygulamayı yayınlayabilmek için apk oluşturabileceğimiz bir çok bileşenden meydana gelen bu yapıda aslında her bir bileşenin kendine ait bir build sistemi vardır. Genel olarak android projelerini incelediğimizde iki tür gradle oluşturma dosyası yer aldığını göreceksiniz. Bunu görebilmek için android studio da bir android projesi oluşturmanız yeterli. Eclipse de android uygulaması geliştirirken bildiğiniz üzere gradle yoktu maven yapısı vardı ve maven projelerinde sadece .jar çıktıları kullanılabilirken gradle ile birlikte xml çıktıları, fontlar vb. yapıları içeren .aar çıktılarını da kullanabilirsiniz.

Android Studio da yeni bir android projesi oluşturduğumuzda örnek olarak aşağıdaki ekran görüntülerinde gördüğünüz gibi proje oluşturulma aşamasında gradle çalışıyor ve build işlemlerini tamamlıyor.

Screen-Shot-2017-09-05-at-21.56.21.png

Screen-Shot-2017-09-05-at-21.56.49.png

Screen-Shot-2017-09-05-at-21.57.01.png

Top-Level Build File: Tüm alt projelere / modüllere ortak yapılandırma seçeneklerini ekleyebileceğiniz dosya yapısıdır.

<PROJECT_ROOT>\build.gradle ( bu dizin içinde yer alır. )

Module-Level Build File: Uygulama modülüne özgü dosya yapısıdır.

<PROJECT_ROOT>\app\build.gradle ( bu dizin içinde yer alır. )

app dizinindeki build.gradle yapısı aşağıdaki gibidir. Gördüğünüz gibi uygulamanın sdk versiyonu, versiyon kodu, versiyon adı, desteklenen minimum sdk vb. özellikleri de içinde barındırır. Burada bulunan yapıları başka dersimizde anlatmıştım o yüzden ayrntılı olarak tekrardan bahsetmeyeceğim incelemek isterseniz bu dersimizi inceleyebilirsiniz.

build.gradle Genel Yapısı​

Kod:
apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 25
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.mobilhanem.myapplication"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

gradle-wrapper.properties: Bu dosya Gradle’ın doğru sürümünün yüklü olup olmadığını denetler ve gerekirse gerekli sürümü indirir.


settings.gradle: Projenizi oluşturan tüm modülleri referanslar. Gradle’a hangi alt projelerin bu yapının bir parçası olduğunu , fiziksel yollarının ne olduğunu ( path ) , build komut dosyalarının adının nasıl verileceğini söyler.

Aşağıdaki resim aslında herşeyi anlatıyor; esnek ve gelişmiş özelliklere sahip gradle yapısını Google un neden Android geliştirirken kullandığına güzel bir örnek.

Gradle1.gif


Gradle’ın sağladığı en büyük avantaj kütüphane yönetim sistemidir. Projenizin ihtiyaç duyduğu herhangi bir açık kaynak kodlu kütüphaneyi, projenize tek satır kod ile ekleyebilirsiniz. ( app dizinindeki build.gradle içerisinde bulunan dependencies içerisinde bu işlemi kolayca gerçekleştirebilirsiniz böylece kullanacağınız kütüphaneyi otomatik olarak internet üzerinden sizin için indirecektir.) Örnek verecek olursak Picasso kütüphanesini projemize dahil etmek istiyoruz yapmamız gereken tek şey aşağıdaki kod parçacığını anlattığım gibi dependencies içerisine yapıştırmak. Picasso kütüphanesi nedir ne işe yarar merak ederseniz ayrıca bu dersimizi de inceleyebilirsiniz.

Kod:
compile 'com.squareup.picasso:picasso:2.5.2'

Gradle ile ilgili anlatacaklarımız bu kadar arkadaşlar zaten çok kapsamlı bir konu olduğu için bunun için ayrı tamamen ayrı bir ders serisi bile hazırlanabilir.Biz bu dersimizde Gradle’n Android tarafında ne işe yaradığını ve temel olarak Gradle konusunda bilgi sahibi olmanız açısından bu bilgileri sizlere aktardım. Zaten ilerleyen derslerimizde hem manifest hemde gradle dosyalarını sık sık kullanacağız. Kullandıkça daha aşina olacağız. Konu ile ilgili daha fazla bilgi edinmek isterseniz de bu siteyi incelemeniz yeterli olacaktır.


THT üzerinden anlattığımız android uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı ÖZEL/DM olarak da sorabilirsiniz.
Herkese güzel forumlar dilerim.
Eline emeğine sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.