Android’de Multi Modül Proje Oluşturma

Adem ATİCİ
DigiGeek
Published in
4 min readJul 27, 2022

Selamlar, bu yazı ile birlikte multi modül bir projenin ne gibi faydalarının olduğunu ve nasıl multi modül proje oluşturabileceğimizi öğreneceğiz.

Başlamadan önce şunlara değinmem gerekli: Bildiğiniz üzere bu tarz işlemleri yaparken birçok yöntem kullanılabiliyor. İlerlerken bu yöntemlerden birini kullanacağım ve Android Studio ortamında, Kotlin programlama dili ile ilerleyeceğiz. Vakit kaybetmeyelim, ufaktan başlayalım :)

Photo by Ryoji Iwata on Unsplash

Modüler Projenin Faydaları

Android geliştirmenin ana tartışmalı konularından biri Modülerleştirmedir. Eskiden, projemizin yalnızca bir uygulama modülüne sahip olması hiç de garip değildi. Uygulamamızın katmanlarına konsantre olmamız, onları ayırmamız ve bazı ünlü mimarilerin bazı ilkelerini izlememiz gerekir. Ancak bu günlerde, derleme süresi, kod çakışmaları ve değişiklik başına uygulamamızı çalıştırma gibi birçok sorunla karşılaşan monolitik bir proje üzerinde çalışan büyük bir ekibimiz olduğunda, projeleri sürdürmek kontrolden çıkıyor. Projemizi geliştirirken ve yürütürken hayal kırıklığına uğrayabiliriz.

Projeyi Modülerleştirmenin birçok nedeni vardır:

  • Build Time: Projemizin compile ve build sürelerinin uzun sürmesi.
  • Reusability: Bazı Featureları birden çok uygulama arasında paylaşma durumumuz.
  • Maintenance: Her Feature’ın diğeri üzerinde birçok yan etkisi olan büyük, spagetti kod tabanı.
  • Test: Bağımsız bir Feature için basit bir test senaryosu yazamazsınız.
  • App Size: Monolitik bir uygulama boyutunun aksine, modüler bir uygulamada Bundle ve Dynamic Features sayesinde daha küçük boyutlu kurulum dosyaları elde edebiliriz.
  • Demo Apps: Küçük bir değişiklik için tüm projeyi çalıştırmak ve tüm uygulamadan izole edilmiş tek bir Feature’ı çalıştırmak gibi sebepler bizi modüler yapılara yönlendiriyor.
Photo by Ryan Quintal on Unsplash

Projeyi Oluşturmak

Oluşturacağımız projede app, buildSrc, data ve domain modülleri olacak. Bunlardan kısaca bahsetmek gerekirse;

  • app: Uygulama modülü. Android ortamı için tüm başlatma mantığını içerir.
  • buildSrc: Bu modülde uygulamada kullanılacak bütün versiyon sistemini tutarız.
  • domain: Uygulamanın en önemli bölümünü içeren modüldür, business logic. Bu modül yalnızca kendisine bağlıdır ve yaptığı tüm etkileşimler bağımlılığın tersine çevrilmesi yoluyladır.
  • data: Uygulamadaki verileri (local, remote vb.) içeren modüldür.

Bu kısa bilgilendirmeden sonra ilk olarak normal bir proje oluşturalım. Monolitik (tek modüllü) Android projesi aşağıdaki gibi görünür.

Default Proje Görünümü

Şimdi ise nasıl bir modül eklenebilir ona bakalım. Kütüphaneleri daha rahat yönetebilmek için buildSrc adında Kotlin modülü ekleyerek ilk adımı atalım :)

Bunun için, File -> New -> New Module kısımlarına tıklayabiliriz. Bu tıklamalar bizi aşağıdaki gibi bir ekrana yönlendirir.

buildSrc modülünü oluşturma

buildSrc modülümüzde Android’e dair bir işlem olmayacağı için Java veya Kotlin kütüphanesi üzerinden modülü oluşturabiliriz.

Not: “‘buildSrc’ cannot be used as a project name as it is a reserved name” şeklinde hata alırsanız, settings.gradle’a girerek burada bulunan “include ‘:buildSrc’” kodunu silin ve tekrar build almayı deneyin.

buildSrc modülünü ekledikten sonra, ilgili modülün build.gradle dosyasının ismini build.gradle.kts ye çevirerek kotlin dsl’i aktif hale getirebilirsiniz. İçeriğini de aşağıdaki gibi yapabilirsiniz.

build.gradle.kts

Bütün bunları yaptıktan sonra buildSrc için son olarak ilgili versiyonları tutabileceğimiz bir Versions Kotlin dosyası oluşturacağız. Burada uygulama içinde kullanacağımız versiyonları tanımlayacağımız değerler tutacağız. Böylece sürüm kontrolünü tek yerden kolaylıkla yapabileceğiz. “buildSrc” modülünün son halini ve Versions Kotlin dosyasını aşağıdaki görselde görebilirsiniz.

buildSrc modülü ve Versions Kotlin dosyası

Şimdi ise “data” modülünü ekleyelim. “buildSrc” modülünü eklediğimiz gibi File -> New -> New Module şeklinde ilerleyip aşağıdaki şekilde modül ekleme işini yapacağız.

data modülünü oluşturma

“data” modülünün son halini aşağıda görebilirsiniz. Paket içeriğini dilediğiniz gibi doldurabilirsiniz.

data modülünün son hali

Data modülünü de oluşturduğumuza göre şimdi domain modülünü oluşturalım. Tekrar, File -> New -> New Module şeklinde ilerleyelim.

domain modülünü oluşturma

Bu şekilde “domain” modülünü oluşturabiliriz. Burada Android üzerinden ilerlememizin sebebi bizim ihtiyaçlarımıza göre şekillenmektedir. Örneğin bu modülde bir manifest dosyasına ihtiyaç duyacaksak Android Library seçeneği üzerinden de modülümüzü oluşturabilirdik.

domain modülünün projeye eklenmesi

“domain” modülünü de bu şekilde projeye ekledik.

Yukarıda, modül projelerin hızlarıyla ilgili bir söylemimiz olmuştu. Modüler bir projeyi hızlandırırken yapabileceğimiz bazı işlemler mevcuttur. “gradle.properties” dosyamıza aşağıdaki kodları ekleyerek çok daha hızlı şekilde build alabilmemiz mümkündür.

org.gradle.jvmargs=-Xmx2048m -XX:+UseParallelGC
org.gradle.daemon=true
org.gradle.caching=true
org.gradle.parallel=true

Bu kodlarla ilgili daha detaylı bilgi almak için “Android Projelerde Build Sürelerini Hızlandırma” başlıklı yazıma göz atabilirsiniz.

Kapanış

Bu yazıda Android uygulamalarımızda modülerliğin öneminden ve nasıl modüler bir proje oluşturabileceğimizden bahsettik. Sizlerde ihtiyaçlarınıza göre farklı farklı modüller oluşturarak projenizi daha iyi şekilde yönetebilirsiniz.

Kaynaklar

--

--