Android Studio İle Adım Adım Mobil Programlama | 2


Herkese merhaba arkadaşlar. Android Studio İle Adım Adım Mobil Programlama serimizin ilk yazısında Android Studio‘nun genel yapılarından ve yeni bir Android Studio projesi oluşturmayı anlatmaya çalışmıştık. Bu yazımız da ise oluşturmuş olduğumuz demo adlı projemizi geliştirmeye başlayacağız. Ama bundan önce anlatmamız gereken projelerimizin bazı kalıp yapıları var. Nedir bu bahsettiğimiz kalıplar; projemizi Android Studio ile açtığımızda sol menü içerisinde projemizin içeriklerini görüyoruz.

 

Bu kısımda göreceğiniz gibi temel olarak App ve Gradle Scripts adlarında  iki ana başlık bizi karşılıyor. Bu başlıklardan App‘i açılayarak başlıyoruz. App dosyası içerisinde oluşturmuş olduğumuz projemizin ana bileşenleri olan sınıflarımız(class), tasarım ögelerimiz ve özel izinler gibi bazı başlıklar bulunuyor. App klasörünü açtığımızda ise karşımıza manifest, java ve res olmak üzere üç ana başlık dikkat çekiyor. Nedir bu manifest klasörü?
Öncelikle belirtmeliyim ki Manifest olmadan Android Projesi olmaz. Projemizin tüm temel bilgilerini sakladığımız bir dosyadır aslında Manifest. Manifest dosyası bir xml dosyasıdır. Bu sayede bu dosyayı hem bir insan hem de bir makine rahatlıkla okuyabilir. Hemen örnek bir manifest.xml dosyası gösterelim.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.heryerdeyazilim.demo">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:largeHeap="true">
        <activity
            android:name="com.heryerdeyazilim.demo.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Bu bizim demo projemizin Manifest.xml dosyası. Biz geliştiriciler Manifest dosyası içerisinde oluşturduğumuz projemiz için en düşük sdk sürümü, hedeflediğimiz sdk sürümü, ekran çözünürlükleri, kullanılacak sdk ve ihtiyaç duyulan izinler gibi bir çok özelliği burada belirliyoruz.

Bu Manifest dosyasında kullanılmış bazı xml etiketleri var, bu etiketleri açıklayarak devam edelim.

Uses-Permission

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

Uses Permission etiketleri ile biz uygulamamızın, çalıştığı cihazda ki hangi özelliklere erişimi olacağını belirtiriz. Biz kendi Manifest.xml Dosyamıza bakarsak üç ayrı izin almışız. Bunlardan ilki android.permission.INTERNET.
Bu izin bize geliştirdiğimiz uygulamanın, çalıştığı cihazda var olan İnterneti kullanacağını belirtiyor. Bu izin Wifi veya diğer İnternet sistemleri olarak ayrılmaksızın çalışır. Bir sonraki iznimiz ise android.permission.READ_EXTERNAL_STORAGE. Bu izin uygulamamızın çalıştığı cihazda ki dosyaları okumamızı sağlayan bir izin. Bir diğer iznimiz android.permission.WRITE_EXTERNAL_STORAGE. Bu izin dosya yazma ve var olan dosyalar üzerinde yazma işlemlerini yapmamızı sağlar. Bu izinler Android 6.0 dan önce ki bir çok cihaz da otomatik tanımlanırken Android 6.0 ve üzeri sürüme sahip cihazlarda bu izinler cihaz kullanıcısına bırakılmış durumdadır. Bunun sebebi kişisel bilgi güvenliğini bir nebze arttırmak ve aynı zamanda kullanıcının bilgisi dahilinde olmasını sağlamak. Konuyu biraz daha açıp daha net anlamanızı sağlamak için bir örnek vermek istiyorum.

Örneğin Play Store üzerinden bir Not defteri uygulaması indirdiniz. Bu uygulama sizden rehber ve ahize izni istiyor. Sizce de pek alakası var bu iznin bir not defteri ile. Demek ki bu izin başka bir şey için kullanılacak olabilir. Bu tarz durumlar yaşandı Google bu amaçla da bunun önüne geçebilmek için de kullanıcı izin yapısına geçmiş oldu.

Application etikleti ile devam edelim anlatmaya.

Application tag’ı içerisinde ilk olarak android:allowBackup adlı bir kısım var, bu kısım adından da anlaşılacağı gibi uygulamamızın yedekleme yapmasına izin verip vermediğimize dair ayarlar yapmamız için bulunuyor. Varsayılan olarak true değerine sahiptir. Ancak isteğimiz doğrultusunda false olarak da değiştirebiliriz.

Bir sonraki başlığımız ise android:icon; bu seçenek ise uygulamamızın telefonumuzda ki logo’sunu ayarlamak için kulllanıyoruz. Android Studio içerisinde varsayılan olarak android logosu uygulama logosu olarak belirtilmiş durumda. Gerektiğinde bu logo’yu buradan değiştirebiliriz.

Bir başka ayar belirtecimiz olan android:label uygulamamızın adını belirtir. İstediğimiz zaman buradan değiştirmek mümkündür.

Bir başka belirtecimiz ise android:theme. Bildiğiniz gibi arayüze sahip her sistemin bir arayüz teması vardır. Bizimde yazacağımız uygulamaların birer tema’ya ihtiyacı vardır.Bu belirteç ile uygulamamızın temasını belirtiyoruz. Bu tema proje oluşturulduğunda varsayılan olarak geliyor. İstediğimiz zaman özel bir tema oluşturmak veya var olan android temalarını kullanmak mümkündür.

Bildiğiniz gibi programlama dillerinde sınıflar bulunur. Bizimde uygulamalarımız içerisinde sınıflar olacak. Uygulamamızın ilk başlangıç sınıfını belirtmek için de application tagı içerisinde özel bir tag olan activity mevcut. Biz bu activity tag‘ı ile birlikte uygulamamızın ilk çalıştığında hangi sınıfı çalıştıracağı ve bu sınıfın yukarıda anlattığımız gibi bazı özellikleri belirtiyoruz. Tabi bunlar zorunlu değil. Activity hakkında detayı vermek için erken olduğunu düşünüyorum ilerleyen yazılarda daha detaylı bilgi vereceğiz.

Android dosya yapısının ilki olan app dizinin içerisinde ki birinci yapı olan Manifest hakkında temel bilgileri verdik. Şimdi bir app dizininde bulunan java dosyasından bahsedelim. Java klasörü içerisinde uygulamamızın kaynak kodlarını bulundururuz. Çok kapsamlı bazı özellikleri de mevcuttur ancak şu süreçte kullanmayacağımız için kafa karıştıracağını düşünüyorum bu sebeple bahsetmeden geçiyorum bu kısmı. Az önce manifest içerisinde uygulamamızın ilk başladığında çalışacak sınıftan bahsettik işte o sınıf(activity) bu java klasörü içerisinde bulunur. Herhangi bir yol değişikliğinde uygulamanın başlatılacağı sınıfı göremez ve bu nedenle uygulama derleme esnasında hata verecektir. Bu nedenlede yapılan yol değişikliklerini manifest içerisinde bulunan activity tag‘ı içerisinde ki name kısmında da değiştirmemiz gerekir.

Şimdi sıradaki bir başka klasörümüz olan res dosyasını ele alalım. Res dosyası uygulamamızın temel ve ileri seviye tasarımsal ve benzeri xml tabanlı içerikleri bulunduracağımız dosya olarak özetlenebilir. Bu dosya default olarak oluşturulduğunda, uygulama oluşturulurken seçilen tema’ya göre özel dosyalar ile gelecektir. Ama hangi tema seçilirse seçilsin temel olarak mecburi bazı dosyalar vardır içerisinde. Örneğin layout,values,mipmap ve drawable gibi dosyalar her tema için default ortak dosyalardır. Layout dosyası projemiz içerisinde ki kullanıcı etkileşimleri için oluşturulan sayfaları(arayüz,layout,view,form) bulunduran dosyadır. Her platformun kendine has arayüz isimleri vardır. Örneğin C# da Form, Web de View, Android içinse Layout olarak adlandırılırlar. Values dosyası ise adından da anlaşılacağı gibi değerler’i bulunduran bir dosyadır, bu dosya içerisinde string.xml , style.xml , color.xml gibi xml uzantısına sahip içerik dosyaları barındırır. Her bir xml dosyasının adından ne işe yaradığını az çok anlayabilirsiniz. Biz bu xml dosyalarını yeri geldikçe daha detaylı şekilde anlatacağız.

 

Res dosyası içerisinde kendi android temamızı, kendi button,editText,dialog tasarımlarımızı yapabiliriz. Bunları yapabilmek içinde temel de olsa bir xml kodlama bilgisine ihtiyaç vardır. Xml, bir android geliştiricisi için hayati öneme sahiptir. Anlattığımız gibi xml ile Layout,design tools,json,style,color,string dosyaları geliştirmekte olduğumuz uygulamamızın genel anlamda tasarımsal araçlarıdır. Bu dosyalar kompleks yapılara da dönüşebilir. Material design için yapacağımız res düzenlemeleri uygulamanın hem kullanıcı etkileşimi katkı sağlarken aynı zamanda da res dosyasında bulunan xml uzantılı dosyaların biraz daha kompleks hale gelmesini sağlıyor.

 

Android kompleks bir yapı olması ile ünlüdür geliştiriciler arasında. Birçok farklı platformu kullanarak geliştirilen android sistemi biz geliştiricilerin işlerini kolaylaştırdığı gibi benim öz düşüncem olarak zorlaştırdığı bazı noktalarda yok değil. Ama biz bu platform üzerinde anlatacağımız eğitimler ve kaynaklar içerisinde olası hatalar ile karşılaşmanız durumunda bu hatalar ve çözümleri hakkında bazı tiyolar da vereceğiz.

 

Bu kısma kadar oluşturduğumuz projemizin App dosyasını basit bir şekilde siz okurlarımıza aktarmaya çalıştık. Gradle Scripts klasörümüzü App klasörümüzden ayıran en büyük özellik ise App içerisindeki neredeyse her şey kullanıcı etkileşimi üzerine kuruluyken,Gradle  Scripts klasöründe ki içerikler vs ler ise tamamen uygulama ile cihaz arasındaki etkileşim üzerine kuruludur. Tabi bazı noktaları kullanıcı ile alakalı bunu atlamamak gerekli.

Gradle Scripts içerisinde bulunan build.gradle(app) bizim geliştireceğimiz projemizin temel ayarlarını,paket ismini,versiyon numarasını ve kodunu, projeye eklenecek kütüphaneleri ayarladığımız bir ayar dosyası olarak tanımlayabiliriz. Bu dosya içeriğini gösterelim şimdi;

 

 

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.0'
    defaultConfig {
        applicationId "com.heryerdeyazilim.demo"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation 'com.android.support:appcompat-v7:26.0.0'
    implementation 'com.android.support:design:26.1.0'
    implementation project(':library')

    //CircleImageView
    implementation 'de.hdodenhof:circleimageview:2.2.0'
    //QR Reader
    implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
    //Noty dialog
    implementation 'com.emredavarci:noty:1.0.3'
}

 

Gördüğünüz gibi build.gradle(app) dosyamızın içeriği bu şekilde oluyor. Dosya içerisinde bulunan bazı tag‘ları ele alalım. compileSdkVersion 26 olarak ayarlamışız burada. compileSdkVersion tag‘ı derleme yapmak istediğimiz cihazın android sürümünü belirttiğimiz bir tag olarak önümüze geliyor. Örneğin bu tag değerini 20 yaptık ama bizim cihazımızın api’si 25. O zaman bize derleme hatası verecektir. Kısacası bu tag bize derleme yapacağımız uygulamanın max hangi api sürümlerinde çalışacağını belirtiyor. buildToolsVersion tag’ı ise dependencies  kısmında bulunan support lib‘lerinin sürümü ile aynı olması gerekir, buildToolsVersion  belirtilen support kütüphaneleri uyumlu şekilde kullanmamızı sağlayan yapıdır.applicationId ise projemizin paket adını belirtir.targetSdkVersion Mevcut SDK platformunun en yüksek Android sürümünü içermelidir. Eğer targetSdkVersion’u belirtmediyseniz, minSdkVerison değeri ne ise onu kullanır. Her yeni android sürümü çıktığında, uygulamamızı o sürümlerde test etmeli ve targetSdkVersion kısmını güncellemeliyiz. versionCode tag’ı ise play store’a uygulamamızı attık,her yeni sürümde de ise bu değeri değiştirmemiz gereklidir. Aksi durumda play console da uyarı alacaksınızdır. versionName uygulama kullanıcısının String olarak görüntülediği sürüm bilgisidir. Her versionCode  değişiminde bu değer de değiştirilmelidir.

Bu yazımızla birlikte temel de bilinmesi gereken android bilgilerini vermiş olduk.Bir sonraki dersimizde uygulama geliştirme adımlarına geçmiş olacağız.

Bu yazımızı burada sonlandırıyoruz. Dersler hakkında önerilerinizi ve sorularınızı yorum bırakabilirsiniz.Bir dahaki dersimizdee görüşmek üzere.

Android Studio İle Adım Adım Mobil Programlama | 2

Giriş Yap

Hoşgeldin
Don't have an account?
Kayıt Ol

Şifreni Yenile

Back to
Giriş Yap

Kayıt Ol

Ekimize Katılmaya Hazırmısın

Back to
Giriş Yap
Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals