Android Library Module Oluşturmak ve Kullanmak

Kaynakça: “Android Programlama Eğitimi” Kitabı Aykut Taşdelen Pusula Yayıncılık

Geliştiriciler birden fazla projede kullanabilecekleri çeşitli kodlar yazma ve kodları paketleme ihtiyacı duymaktadırlar. Sözgelimi .NET ortamında uygulama geliştiren bir kişi bu amaca hizmeten “.dll” dosyaları oluşturur ve bu dosyaları farklı projelere referanse ederek kullanır. Benzer şekilde Java uygulaması yazan geliştiriciler de “.jar” uzantılı dosyalar oluştururlar.

Android ortamında ise aynı amaç için “.aar” dosyaları söz konusudur. Aslında bu dosyalar bir tür sıkıştırılmış dosyalardır ve uzantıları “.zip” şeklinde değiştirilecek olursa içeriği gözlemlenebilir.

Module0

aar” dosyalarının içeriği sadece kaynak kodlardan ibaret değildir. Söz konusu kütüphanenin kendisinin kullandığı başka kütüphaneler, resource’lar, manifest, asset’ler gibi farklı unsurlar da olabilmektedir.

Module Oluşturma ve Kullanma

Bir Android projesine yeni bir module eklemek için “File > New > New Module” menü seçenekleri kullanılmalıdır.

Module1

İlk ekrandan “Android Library” seçeneği seçildiğinde isimlerin ve SDK versiyonunun belirlenmesine yönelik ikinci bir ekran daha açılacaktır. Bu ekrandaki bilgiler geliştiricinin amaçlarına göre doldurulmalıdır.

Module2

Bu şekilde oluşturulacak olan yeni modülün (örnekteki samplelib) içeriği Android görünümünde izlenebilir ve yeni dosyalar eklenilebilir. Sözgelimi örnekte Gui isimli bir sınıf dosyası eklenmiş ve aşağıda görüldüğü gibi kodlanmıştır.

package android.dernegi.org.samplelib;

import android.content.Context;
import android.widget.Toast;

public class Gui 
{
    private Context context;
    
    public Gui(Context context) 
    {
        this.context = context;
    }
    
    public void ToastShow(String message)
    {
        Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    }
}

 

Module3

Yukarıda anlatıldığı şekilde oluşturulan bir modün hedef projede kullanılabilmesi için söz konusu projeye referanse edilmesi gerekir. Bu işlem Android terminolojisinde dependency (bağımlılık) eklemek şeklinde anılmaktadır. Bu noktada “Open Module Settings” seçeneği ile “Project Structure” penceresi açılmalı ve “+” sembolü kullanılarak bir module tipi dependency eklenmelidir. Örnekte bu yöntemle hedef projeye “samplelib” isimli module eklenmiştir.

Module4

Bu aşamadan itibaren artık Gui isimli sınıf hedef projede kullanılabilir. Örneğin;

package android.dernegi.org.consumerapp;

import android.dernegi.org.samplelib.Gui;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gui gui = new Gui(this);
        gui.ToastShow("Android Programcıları Derneği");
    }
}

Module’ün Farklı Bir Projede Kullanılması

Genellikle yapılmak istenilen şey; bir modülün oluşturulduğu projeden farklı bir projede kullanılmasıdır. Oysa yukarıdaki örnekte önce ConsumerApp isimli bir proje açılmış daha sonra bir modüle eklenmiş (SampleLib) ve son kertede de ConsumerApp projesine referanse edilerek kullanılmıştı. Bu başlıkta ise aynı modülün tümüyle farklı bir projede nasıl kullanılabileceği konu edilmektedir.

Sözgelimi OtherApp isimli farklı bir Android projesi başlatılmış olsun. Öncelikle eğer yoksa libs isimli bir dizin açılmalı ve içerisine SampleLib’e ait “aar” dosyası kopyalanmalıdır.

İpucu : SampleLib’e ait “aar” dosyasının path’i; “…/ConsumerApp/samplelib/build/outputs/aar/samplelib-release.aar”

Module5

Kopyalama sonrasında tercihen rename işlemi yapılabilir. (Örnekte samplelib.aar şeklinde isim kısaltılmıştır.) Daha sonra build.gradle dosyasında “libs” dizini bir “file system repository” olarak bildirilmelidir.

repositories {
    flatDir {
        dirs 'libs'
    }
}

Bu işlemin yapıldıktan sonra aşağıdaki gibi “aar” dosyası bir dependency olarak eklenebilir (referanse edilebilir).

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile(name:'samplelib', ext:'aar')
}

Gradle senkronizasyonu gerçekleştirildikten sonra artık SampleLib::Gui sınıfı kullanılabilir. Örneğin:

package android.dernegi.org.otherapp;

import android.dernegi.org.samplelib.Gui;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gui gui = new Gui(this);
        gui.ToastShow("Android Programlama Eğitimi/Pusula Yayıncılık");
    }
}

 

 

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s