Yeni Başlayanlar için Android Kütüphanesi Oluşturma ve Bintray ile Yayınlama

Mahmut Yetişir
Kartaca
Published in
6 min readFeb 8, 2019

Yazılım kütüphanesi, yazılımcıların daha önceden yazmış oldukları kodlar, hazırlamış oldukları sınıflar, prosedürler, komut dosyaları, yapılandırma verileri ve daha fazlasını içeren bir pakettir. Kod yazma kolaylığı sağlayan veya tekrar eden işlemleri kolaylaştırmak, otomatikleştirmek için kullanılan bir yapıdır.

Peki Android için nasıl kütüphane oluşturabilirim ?

1) Kütüphane Modülü Oluşturma

Android Studio içinde File -> New -> New Module…

New Module Screen

Android Library” seçeneğini seçerek “Next” diyoruz.

Configure the New Module Screen

Kütüphane, modül ve paket ismini giriyoruz. En düşük çalıştırabileceği Android versiyonunu seçiyoruz ve “Finish” diyoruz.

2) Kullanılacak Kodların Yazılması

Project File Tree

Yukarıdaki gibi bir ağaç yapısı oluşacaktır. Proje icindeki modüller birbirlerinden ayrı çalışmaktadırlar. Yukarıda gördüğünüz ağaç yapısında 3 adet Gradle dosyası bulunmakta.

Project: SDKExample dosyası projenin(root) gradle ayarlarını bulunduruyor. Module: apilibrary kütüphanemizin gradle ayarlarını bulunduruyor. Module: app ise android projesinin gradle ayarlarını bulunduruyor.

Modüllerin dosyaları da ayrı ayrı tutulmakta. Kütüphane dosyalarımız projeyi oluşturuken girdiğimiz modül isminin altında bulunmalıdır. Yapacağımız işlemleri, class’ları, layout dosyalarını veya ekstra verileri bu modül içinde oluşturuyoruz.

package poc.yetisir.com.apilibrary;import android.util.Log;public class Api {public Api() {
Log.d("Library", "Bu log kütüphanenin içinden gönderildi");
}
}

Yukarıdaki “Api.java” isimli class’da olduğu gibi kütüphanenin yapmasını istediğimiz işlemlerin kodlarını, class’larını yazıyoruz.

3) Kütüphaneyi Local Projeye Ekleme

Modüller ayrı ayrı çalıştıklarından dolayı localdeki projenin kütüphanemizi görebilmesi, kullanabilmesi için Android Proje Modülüne bağımlılık olarak eklememiz gerekiyor.

Android Studio içinde File -> Project Structure

Project Dependencies

Sol taraftan “app” modülünü seçiyoruz ve “Dependencies” sekmesine geçiyoruz. Sağ üstteki “+” butonuna tıklıyoruz. “Module dependency” seçeneğini seçiyoruz.

Choose Modules

Açılan pencereden kütüphane modülümüzü seçiyoruz ve “OK” diyoruz.

Başka bir module ekleme yöntemi ise “settings.gradle” dosyasına aşağıdaki gibi ekliyoruz.

include ':app', ':apilibrary'

daha sonra “build.gradle(Module: app)” dosyasının içinde aşağıdaki gibi kütüphane modülümüzü ekliyoruz.

implementation project(':apilibrary')

Artık projeye eklediğimiz kütüphaneyi örnek koddaki gibi kullanabiliriz.

Api api = new Api();

Oluşturmuş olduğumuz kütüphaneyi local’de başka projelerde kullanmak istersek, aşağıdaki gibi kütüphane modülümüzü sağda bulunan gradle işlemleri ile kütüphanemodülismi -> Tasks -> build ->assembleRelease seçeneğiyle çalıştırıyoruz.

Gradle işlemi tamamlandıktan sonra sol kısımda bulunan ağaç yapısındaki gibi kütüphanemodülismi -> build -> outputs -> aar klasörünün altında aar dosyamızın oluştuğunu göreceksiniz.

Oluşan .aar uzantılı kütüphane dosyanızı kullanmak istediğiniz android projesinin içindeki libs klasörünün altına kopyalayın. Module: app gradle dosyasına da aşağıdaki kod satırlarını ekleyin.

repositories {
flatDir {
dirs 'libs'
}

Yine aynı gradle dosyasına aşağıdaki kodu da kendi kütüphane ayarlarınıza göre ekleyerek kütüphanenizi kullanabilirsiniz.

compile (name: 'apilibrary-release', ext:'aar')

Kütüphanemizi local’de bulunan başka projelerde kullanmak için bir diğer yöntem ise Maven Local Repository’i kullanmak. Bu yöntem için “build.gradle(Module: apilibrary)” dosyamızın içinde, Android Maven Pluginini aşağıdaki gibi ekliyoruz.

apply plugin: 'android-maven'

Daha sonra eklediğimiz plugin sayesinde Maven Local Repository’e, oluşturduğumuz kütüphaneyi eklemek için Gradle sekmesinden kütüphane modülümüzün altındaki install komutunu çalıştırıyoruz.

Veya Execute Gradle Task işlemi ile kütüphane modülünüz seçerek “clean build install” komutunu görseldeki gibi çalıştırıyoruz.

Bu sayede Maven Local Repository’e kütüphanemizi eklenmiş olduk. Şimdi bu repositorydeki kütüphaneyi başka projelerde kullanalım.

Öncelikle kütüphaneyi eklemek istediğimiz projede Maven Local Repository’i kullanabilmek için, gradle dosyasına mavenLocal() kodunu ekliyoruz.

repositories {
mavenLocal()
}

Artık proje Maven Local Repository’deki kütüphaneleri kullanabilir. Kütüphaneyi group, artifact ve versiyonuna göre örnekteki gibi projeye dahil ediyoruz.

implementation 'com.yetisir.sdkexample:apilibrary:1.0.0'

Ve kütüphanemiz kullanıma hazır hale geldi.

4) Bintray Hesabı Oluşturma

Bintray, endüstri standardı geliştirme, yapılandırma ve dağıtım araçlarıyla sorunsuz bir şekilde çalışmamıza olanak tanıyan ve tüm büyük paket formatlarını destekleyen bir dağıtım platformudur.

Maven bir proje yönetim aracıdır(Build Tool). Maven Repository’leri ile kütüphanelere herkesin ulaşabileceği bir servis sağlamaktadır. Kütüphaneleri kullanmak için GroupID (hangi organizasyona ait olduğunu belirtir), ArtifactID (o organizasyon altında hangi kütüphaneyi kullanacağını belirtir) ve Version (kütüphanenin hangi versiyonunu kullanacağını belirtir) bilgilerini Maven veya Gradle projesine dependency olarak eklemek yeterlidir.

Biz de oluşturduğumuz kütüphaneyi global kullanıma sunmak için Maven Reposuna yükleyeceğiz ve yeni sürümlerimiz olursa onları da bu Maven Reposundan çıkacağız.

Öncelikle “bintray.com”a gidiyoruz, kayıt olup giriş yapıyoruz. Bintray 30 günlük ücresiz kullanım sağlıyor.

Şimdi Bintray platformunu kullanarak Maven Repository oluşturacağız.

Add New Repository” seçeneğini seçiyoruz.

Bintray Repositories

Gerekli bilgileri giriyoruz ve type seçeneği için “Maven”ı seçiyoruz. Oluşturulan repository detail sayfasına gidiyoruz.

Bintray New Repository

Add New Package” diyoruz.

Gerekli bilgileri giriyoruz. Android Studio içinde oluşturduğunuz kütüphane paket ismini burayada girmenizi tavsiye ederim.

Oluşturduğumuz paket içinde sağ tarafta bulunan “New Version” butonuna basarak aşağıdaki gibi yeni versiyonumuzu da oluşturuyoruz.

5) Kütüphaneyi Yayınlama

Bintray Profil Sayfamıza giriyoruz. “API Key” kısmında bulunan key’i kopyalıyoruz.

build.gradle(Module: kütüphaneisminiz)” dosyasının içine aşağıdaki gibi kendi bilgilerimizle ekliyoruz.

  • group: Yayınlayacağınız kütüphane group ismi
  • version: Yayınlayacağınız kütüphane sürümü
  • user: Bintray kullanıcı adınız
  • key: Bintray API Key’iniz
  • repo: Kütüphaneyi yayınlayacağınız repo ismi
  • name: Kütüphaneyi yayınlayacağınız paket ismi
  • vcsUrl: Projenizin bulunduğu versiyon kontrol reposunun linki
apply plugin: 'com.android.library'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
group = 'com.yetisir.sdkexample'
version = '1.0.0'
//Aşağıda ki kısım bintray kullanılarak SDK publification işlemi yapmak için
bintray {
user = 'mahmutyetisir03'
key = '************************************'
pkg {
repo = 'sdk-example'
name = 'com.yetisir.sdkexample'
userOrg = 'yetisir'
version {
name = '1.0.0'
desc = 'My test upload'
released = new Date()
vcsTag = '1.0.0'
}
licenses = ['Apache-2.0']
vcsUrl = 'https://github.com/Dilolokko/android-sdk-example.git'
websiteUrl = 'https://github.com/Dilolokko/android-sdk-example'
}
configurations = ['archives']
}

Daha sonra sağ tarafta bulunan “Gradle” sekmesini açıyoruz ve aşağıdaki gibi “bintrayUpload” fonksiyonunu çalıştırıyoruz. Bu işlem ile kütüphanemizi bintray hesabımıza yüklüyoruz. Yaklaşık bir saat içersinde de kütüphanemiz yayınlanmış olur.

Peki Gradle ile build ettiğimiz bir projeyi neden Maven Repository’e yüklüyoruz ? Gradle ile Maven benzer yapılardır (ikisi de build tool’dur). Fakat Gradle’ın repository alanı yoktur ama Maven kütüphane yapısı ile uyumlu çalışabilmektedir, bu yüzden dağıtım aracı olarak Maven Repository kullanıyoruz, Build Tool olarak Gradle kullanıyoruz.

6) Kütüphaneyi Başka Projelerde Kullanma

Project Gradle” dosyasının içine bintray repomuza erişebilmek için “maven url”ini ekliyoruz.

allprojects {
repositories {
google()
jcenter()
maven {
url "https://yetisir.bintray.com/sdk-example"
}
}
}

Kütüphaneyi projeye aşağıdaki gibi dahil ediyoruz.

implementation 'com.yetisir.sdkexample:apilibrary:1.0.0'

Artık Bintray üzerinden yayınlamış olduğumuz kütüphanemizi istediğimiz projede kullanabiliriz.

Aşağıdaki GitHub linkinden örnek kütüphane projesi kodlarına ulaşabilirsiniz.

Yazan: Mahmut Yetişir

--

--