Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Android Uygulama Geliştirmenin Temelleri: Kapsamlı Bir Rehber

Android Uygulama Geliştirmenin Temelleri: Kapsamlı Bir Rehber

Günümüz dünyasında akıllı telefonlar hayatımızın vazgeçilmez bir parçası haline gelmişken, bu cihazlarda çalışan uygulamaların geliştirilmesi de mobil teknolojinin en heyecan verici alanlarından biri olmuştur. Android, dünya genelinde en yaygın kullanılan mobil işletim sistemi olması sebebiyle, Android uygulama geliştirme becerileri edinmek, yazılım dünyasında kariyer yapmak isteyen veya kendi fikirlerini hayata geçirmek isteyen herkes için büyük bir fırsat sunmaktadır. Bu rehber, Android uygulama geliştirmenin temel taşlarını, başlangıç seviyesinden itibaren anlaşılır bir dille sunmayı amaçlamaktadır.

1. Geliştirme Ortamının Kurulumu

Android uygulama geliştirmeye başlamak için ilk adım, doğru geliştirme ortamını kurmaktır.

  • Android Studio: Google tarafından resmi olarak sağlanan, Android uygulama geliştirme için entegre geliştirme ortamıdır (IDE). Kurulumu oldukça basittir ve birçok önemli aracı (SDK, AVD, Gradle) bünyesinde barındırır. Android Studio'yu buradan indirebilirsiniz.
  • Android SDK (Software Development Kit): Android Studio ile birlikte gelen SDK, uygulamalarınızı Android cihazlarda çalıştırmak için gerekli olan kütüphaneleri, kod örneklerini ve geliştirme araçlarını içerir. Farklı Android sürümleri için farklı SDK platformları bulunur.
  • AVD (Android Virtual Device): Uygulamalarınızı fiziksel bir cihaza ihtiyaç duymadan test etmenizi sağlayan sanal cihazlardır. Farklı ekran boyutları, Android sürümleri ve donanım konfigürasyonlarına sahip sanal cihazlar oluşturabilirsiniz. Bu, uygulamanızın çeşitli cihazlarda nasıl performans gösterdiğini görmek için kritik öneme sahiptir.

2. Temel Uygulama Bileşenleri

Her Android uygulaması, belirli görevleri yerine getiren bir veya daha fazla temel bileşenden oluşur. Bu bileşenler, uygulamanın davranışını ve kullanıcı ile etkileşimini tanımlar.

  • Activity (Etkinlik): Kullanıcı arayüzü ile etkileşime giren tek bir ekrandır. Uygulamanızda gördüğünüz her ekran (anasayfa, ayarlar sayfası, profil sayfası vb.) bir Activity'dir. Her Activity'nin kendi yaşam döngüsü vardır ve bu döngü (oluşturulma, başlatılma, duraklatılma, yok edilme) uygulamanın performansını ve kullanıcı deneyimini doğrudan etkiler.
  • Service (Servis): Kullanıcı arayüzü olmadan arka planda uzun süreli işlemler yapmak için kullanılır. Örneğin, bir müzik uygulamasının arka planda çalması veya bir ağ isteğinin işlenmesi bir Service tarafından yapılabilir. Service'ler kullanıcı arayüzüyle doğrudan etkileşime girmezler ve uygulamanızın kapatılmasına rağmen çalışmaya devam edebilirler.
  • Broadcast Receiver (Yayın Alıcısı): Sistem geneli yayın mesajlarına (örneğin, pil seviyesi düşük, SMS alındı, şarj cihazı takıldı) veya diğer uygulamalardan gelen yayınlara yanıt vermek için kullanılır. Bu bileşenler genellikle çok kısa süreli işlemler için tasarlanmıştır.
  • Content Provider (İçerik Sağlayıcı): Uygulamalar arasında veri paylaşımını yönetir. Örneğin, bir uygulamadan rehber verilerine erişmek veya kendi uygulamanızın verilerini diğer uygulamalarla güvenli bir şekilde paylaşmak için Content Provider kullanılır. Bu bileşen, veri güvenliği ve tutarlılığı açısından önemlidir.
"Android'in temel bileşenleri, her uygulamanın iskeletini oluşturur ve doğru kullanıldığında uygulamanın stabilitesini ve verimliliğini artırır."

3. AndroidManifest.xml Dosyası

Her Android projesinin kök dizininde bulunan AndroidManifest.xml dosyası, uygulamanız hakkında önemli bilgileri Android sistemine bildiren merkezi bir yapılandırma dosyasıdır. Bu dosya şunları içerir:

  • Uygulamanın paket adı.
  • Uygulamanın bileşenleri (Activity'ler, Service'ler, Broadcast Receiver'lar, Content Provider'lar).
  • Uygulamanın gerektirdiği izinler (örneğin, internet erişimi, kamera kullanımı, konum bilgisi).
  • Uygulamanın kullandığı donanım veya yazılım özellikleri.
  • Uygulamanın minimum ve hedef SDK sürümleri.

Örnek bir Manifest yapısı:
Kod:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApp">

        <activity android:name=".MainActivity" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".MyBackgroundService" />
        <receiver android:name=".MyBroadcastReceiver" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
        <!-- Diğer bileşenler ve meta-veriler buraya eklenir -->
    </application>

</manifest>

4. Kullanıcı Arayüzü (UI) Tasarımı

Android uygulamalarının kullanıcı arayüzleri, XML dosyaları kullanılarak tanımlanır ve Java/Kotlin kodunda yönetilir.

  • Layouts (Düzenler): Görünüm gruplarını (ViewGroups) temsil eder ve içindeki UI bileşenlerinin (Views) nasıl yerleşeceğini belirler. En yaygın kullanılan Layout'lar şunlardır:
    • LinearLayout: Bileşenleri dikey veya yatay olarak tek bir satırda düzenler.
    • RelativeLayout: Bileşenleri birbirlerine veya ebeveynlerine göre konumlandırır.
    • ConstraintLayout: Esnek ve düz bir görünüm hiyerarşisi oluşturarak performans artışı sağlar ve karmaşık UI'ları daha kolay yönetmenize olanak tanır. Günümüzde en çok tercih edilen layout'tur.
    • FrameLayout: Genellikle tek bir öğeyi ekranda tutmak için veya üst üste bindirilmiş birden fazla öğeyi yönetmek için kullanılır.
  • Views (Görünümler): Kullanıcı ile etkileşime giren veya bilgi gösteren tekil UI bileşenleridir. Örnekler:
    • TextView: Metin göstermek için.
    • EditText: Kullanıcıdan metin girişi almak için.
    • Button: Tıklanabilir düğmeler.
    • ImageView: Resim göstermek için.
    • RecyclerView/ListView: Kaydırılabilir listeler ve ızgaralar için (veri koleksiyonlarını verimli bir şekilde görüntülemek için kullanılırlar).
    • ProgressBar: Bir işlemin ilerleyişini göstermek için.
    • Switch/CheckBox/RadioGroup: Kullanıcıdan seçim almak için.

Basit bir XML layout örneği:
Kod:
<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/myTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Merhaba Android Dünyası!"
        android:textSize="24sp"
        android:textColor="@android:color/black" />

    <Button
        android:id="@+id/myButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Tıkla Bana"
        android:layout_marginTop="16dp" />

    <EditText
        android:id="@+id/myEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Adınızı girin"
        android:padding="10dp"
        android:layout_marginHorizontal="32dp"
        android:layout_marginTop="16dp" />

</LinearLayout>

5. Uygulama Yaşam Döngüsü

Özellikle Activity yaşam döngüsü, Android geliştirmenin en temel ve kritik konularından biridir. Bir Activity, farklı durumlarda (oluşturulma, görünür olma, odaklanma, arka plana atılma, yok edilme) çeşitli geri çağırım metotlarından (lifecycle callbacks) geçer. Bu metotları doğru bir şekilde yönetmek, uygulamanızın kaynakları verimli kullanmasını ve sorunsuz çalışmasını sağlar.

Temel yaşam döngüsü metotları:
  • onCreate(): Activity ilk oluşturulduğunda çağrılır. Genellikle layout'u şişirmek (inflate) ve UI bileşenlerine referans almak için kullanılır. Bu, Activity'nin sadece bir kez çağrılan başlangıç noktasıdır.
  • onStart(): Activity kullanıcıya görünür olduğunda çağrılır.
  • onResume(): Activity, kullanıcı ile etkileşime hazır olduğunda çağrılır. Bu durumda Activity, foreground'dadır.
  • onPause(): Activity kısmen görünmez olduğunda veya başka bir Activity onun üzerine geldiğinde çağrılır. Burada kaydedilmesi gereken durumları kaydedin.
  • onStop(): Activity kullanıcıya tamamen görünmez olduğunda çağrılır. Ağ bağlantılarını veya ağır CPU işlemlerini burada durdurmak iyi bir pratiktir.
  • onDestroy(): Activity yok edilmeden önce çağrılır. Kaynakları serbest bırakmak ve bellek sızıntılarını önlemek için önemlidir.
  • onRestart(): Activity durdurulduktan sonra tekrar başlatılacaksa çağrılır.

Örnek bir onCreate override:
Kod:
// MainActivity.java veya MainActivity.kt
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // UI layout'unu ayarlar
        Log.d(TAG, "onCreate: Activity oluşturuldu.");
        // UI bileşenlerini başlatma, veri yükleme gibi işlemler burada yapılır.
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: Activity görünür oldu.");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume: Activity kullanıcı ile etkileşime hazır.");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: Activity duraklatıldı.");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: Activity durduruldu.");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: Activity yok edildi.");
    }
}

6. Veri Saklama Seçenekleri

Uygulamalar genellikle verileri kalıcı olarak saklamak veya geçici olarak kullanmak isterler. Android, bu ihtiyacı karşılamak için çeşitli seçenekler sunar:

  • SharedPreferences: Küçük miktarda ilkel verileri (boolean, int, float, long, string) key-value çiftleri halinde depolamak için kullanılır. Ayarlar, kullanıcı tercihleri gibi veriler için idealdir. Hafif ve hızlı bir çözümdür.
  • SQLite Veritabanı: Yapılandırılmış verileri depolamak için kullanılan ilişkisel bir veritabanıdır. Geniş veri setleri için uygundur. Doğrudan SQLite API'lerini kullanmak yerine, Room Persistence Library gibi bir ORM (Object Relational Mapping) kütüphanesi kullanmak daha modern ve tavsiye edilen bir yaklaşımdır. Room, SQLite üzerinde bir soyutlama katmanı sağlar ve SQL sorgularını kolayca yazmanıza olanak tanır.
  • Dahili Depolama (Internal Storage): Uygulamaya özel dosyaları (resimler, belgeler vb.) cihazın dahili depolama alanına kaydetmek için kullanılır. Bu dosyalar yalnızca uygulamanız tarafından erişilebilir ve uygulama kaldırıldığında silinir.
  • Harici Depolama (External Storage): Cihazın herkese açık depolama alanıdır (SD Kart veya dahili depolamanın erişilebilir kısmı). Kullanıcılar ve diğer uygulamalar tarafından erişilebilir dosya depolamak için kullanılır. İzin gerektirir.
  • Ağ Depolama (Network Storage): Sunucu tabanlı depolama, bulut hizmetleri (Firebase, AWS, Azure) veya kendi API'leriniz aracılığıyla verileri uzak sunucularda saklamak için kullanılır. Bu, uygulamanızın verilerini birden fazla cihazda senkronize etme veya büyük veri kümelerini yönetme imkanı sunar.

7. İzinler (Permissions)

Android, kullanıcı gizliliğini ve güvenliğini sağlamak için izin sistemini kullanır. Uygulamanızın cihazın hassas özelliklerine (kamera, konum, mikrofon, kişiler, depolama) erişmek istemesi durumunda, bu izinleri AndroidManifest.xml dosyasında bildirmeniz ve Android 6.0 (API 23) ve üzeri sürümlerde çalışma zamanında (runtime) kullanıcıdan onay almanız gerekir.

Önemli Not: Kullanıcı deneyimi açısından, bir izne neden ihtiyaç duyduğunuzu açıkça belirtmek ve sadece gerçekten gerekli olan izinleri istemek kritik öneme sahiptir. Kullanıcılar, gereksiz veya şüpheli izin isteklerine genellikle olumsuz yanıt verirler.

8. Gradle – Bağımlılık Yönetimi

Gradle, Android projeleri için bir derleme otomasyon sistemidir. Projenizin bağımlılıklarını (kütüphaneler, modüller), derleme süreçlerini ve paketleme ayarlarını yönetir. Genellikle `build.gradle` adında iki ana dosya bulunur:

  • Project-level build.gradle: Tüm projenin yapılandırmasını içerir (örneğin, Gradle eklentileri).
  • Module-level build.gradle (app/build.gradle): Uygulama modülünüzün özel bağımlılıklarını ve yapılandırmasını içerir. Buraya genellikle üçüncü taraf kütüphaneleri eklenir.

Örnek bir `app/build.gradle` bağımlılık kısmı:
Kod:
// app/build.gradle
dependencies {
    implementation 'androidx.core:core-ktx:1.9.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.11.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

    // Glide gibi bir resim yükleme kütüphanesi
    implementation 'com.github.bumptech.glide:glide:4.15.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.15.1'

    // OkHttp gibi bir ağ kütüphanesi
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
}

9. Kaynaklar ve İpuçları

Android uygulama geliştirme sürekli gelişen bir alandır. Bu süreçte başarılı olmak için sürekli öğrenmeye ve pratik yapmaya devam etmek önemlidir.

  • Android Geliştirici Belgeleri: Resmi ve en güncel bilgiyi edinebileceğiniz birincil kaynaktır.
  • Stack Overflow: Karşılaştığınız sorunlara çözüm bulabileceğiniz veya kendi sorularınızı sorabileceğiniz büyük bir geliştirici topluluğu.
  • Medium ve Dev.to: Çeşitli konularda makaleler ve rehberler bulabileceğiniz platformlar.
  • GitHub: Açık kaynak kodlu projeleri inceleyerek veya kendi projelerinizi paylaşarak öğrenebilirsiniz.
  • Android_robot.png
    (Android Robot Logosu)

Sonuç

Android uygulama geliştirme, hem teknik bilgi hem de yaratıcılık gerektiren heyecan verici bir alandır. Bu rehberde ele aldığımız temel konular; geliştirme ortamının kurulumu, temel uygulama bileşenleri, Manifest dosyası, UI tasarımı, yaşam döngüsü yönetimi, veri saklama, izinler ve Gradle gibi başlıklar, Android dünyasına sağlam bir giriş yapmanız için gerekli altyapıyı sunmaktadır. Başlangıçta karmaşık gelebilecek bu konuları pratik yaparak ve küçük projeler geliştirerek pekiştirmek, öğrenme sürecinizi hızlandıracaktır. Unutmayın, en iyi öğrenme yöntemi, kod yazmaktır! Şimdi kolları sıvama ve ilk Android uygulamanızı geliştirme zamanı. Bol şanslar!
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected