29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Android Android, Google, Open Handset Alliance ve özgür yazılım topluluğu tarafından geliştirilen, Linux tabanlı, mobil cihaz ve cep telefonları için geliştirilmekte olan, açık kaynak kodlu bir mobil işletim sistemidir. Android, aygıtların fonksiyonelliğini genişleten uygulamalar yazan geniş bir geliştirici grubuna sahiptir. Google Play ise, Android işletim sistemi uygulamalarının çeşitli sitelerden indirilebilmesinin yanısıra, Google tarafından işletilen kurumsal uygulama mağazasıdır. Geliştiriciler, ilk olarak aygıtı, Google'ın Java kütüphanesi aracılığıyla kontrol ederek Java dilinde yazmışlardır. Open Handset Allience, 5 Kasım 2007'de Android'i kurduğunu duyurmuştur ve ardından 34 adet donanım, yazılım ve telekom şirketi, mobil cihazlar için telif hakkı olmayan bir işletim sisteminin teknolojinin gelişimi için yararlı olduğu konusunda hemfikir olmuşlardır. 2008'de piyasaya sürüldüğünde, birçok Android İşletim Sistemi Apache free-software ve Açık Kaynak Kodu lisansıyla geliştirilmeye açık hale gelmiştir. Android, linux çekirdeği üzerine inşa edilmiş bir mobil işletim sistemidir, bu sistemde ara katman yazılımı, kütüphaneler ve API C diliyle yazılmıştır. Uygulama yazılımları ise, Apache harmony üzerine kurulu java-uyumlu kütüphaneler ihtiva eden uygulama iskeleti üzerinden çalışır. Android, derlenmiş java kodunu çalıştırmak için dinamik çevirmeli (JIT) Dalvik sanal makinasını kullanır ve cihazların fonksiyonerliğini artıran uygulamaların geliştirilmesi için çalışan geniş bir programcı-geliştirici çevresine sahiptir. (Wikipedia : http://tr.wikipedia.org/wiki/Android_(i%C5%9Fletim_sistemi) ) Android İşletim Sistemi, İlk Çıktığı Tarihten İtibaren, Günümüze Kadar Bir Çok Değişikliğe Uğraşmıştır. Bu Değişiklikler İki Farklı Güncelleme Şeklinde Çıkartılmıştır (Major Değişken Ana Sürüm Numaraları Ve Minor, Değişken Son Hane Sürüm Numaraları ) Her Sürümün Farklı Bir API Numarası Vardır. Farklı Android İşletim Sistemi Versionları (4.1.2 Gibi ) İçin, Geliştiriciler Daha Çok API Numarası Kullanır (API 17) Android İşletim Sistemi Yapı Olarak, Kernel, Kütüphaneler, Uygulama SDK’ları Ve Uygulamalar’dan Oluşmaktadır. Bu Ana Yapılar Kendi İçlerinde Bir Çok Alt Bölüme Ayrılabilmektedir. Emir Civaş – i.am@live.jp Sayfa 1 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Günümüzde Android Yazılımları Çoğunlukla Cep Telefonlarında Ve Tabletlerde Çalışmaktadırlar. Ancak Mimarisi İzin Verirse, Linux OS Çalıştıran Çoğu Cihazda Android İşletim Sistemi Çalışabilmektedir. Android İşletim Sisteminin Sunduğu İmkanlar, İşletim Sisteminin Versionuna Göre Değişken Olup, OS’a Uygun Uygulamalar Yazılarak Zenginleştirilebilir. Bu İşletim Sisteminde Kendine Ait Dosya Sistemi & Katman Yapısı Vardır. Bir Dosya Sistemi, Bir İşletim Sisteminin Çalıştırılacağı Sürücünün, Belli Bir Formatta Biçimlenmesidir. Android İşletim Sistemi Linux Tamanlı Olduğu İçin, ExFAT, EXT2, EXT3, Yaffs2 Dosya Sistemlerine Destek Vermektedir. (Bu Destek Tabii, Cihaz Üreticilerinin Tutumunada Bağlı Olarak Değişkenlik Gösterebilir) Temelde, İşletim Sisteminin Açılması 3 Evrenin Yüklenmesiyle Gerçekleşir 1 – Bootlader : Herşeyden Önce Çalışan, Kod 2 – Kernel : İşletim Sistemlerinde Olan Bir Yazılım (Yazılımlar Bütünü) Kernel Yazılımlar İle Donanımlar Arasında Köprü Sağlayan Bir Yapıdır. 3 – OS : Bootloader ve Kernel Yüklendikten Sonra. İşletim Sistemi Yüklenmeye Başlanır. Emir Civaş – i.am@live.jp Sayfa 2 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Android’te Dosya Katman Yapısı Linux’un Katman Yapısında Benzer. Windows’taki C:\ Android İçin “/” ‘dir Ve Buna Root Denir. Root Klasörünün Altında, Çeşitli Klasörler Vardır. (Bu Klasörler & Bu Klasörlerde Bulunan Dosyalar Android İşletim Sistemi Versionu & Cihaz Üreticisine Göre Değişebilir). Bu Klasörlerden Bazıları : /data Kullanıcıların Yüklediği Uygulamalar & Yaptığı Ayarlar İle İlgili Verilerin Kutulduğu Klasör /mnt Android OS’ta Bağlanan Mediaların Bulunduğu Klasör (Örn : /mnt/sdcard) /system Android OS’ta İşletim Sistemi İle İlgili Dosyaların Tutulduğu Klasör Bunun Dışında “Root” Kelimesinin Başka Bir Anlamı Daha Vardır. Linux Evreninde Root, Tüm Yetkilere Sahip Olan Kullanıcı Demek. Root Kullanıcısı, Dahil Olduğu Sistemdeki Tüm Dosyalara & Ayarlara Erişim Yetkisi Olan Kullanıcı Demek. Çoğu Cihaz Üreticileri, Kendi İşletim Sistemi Implementasyonlarında (Ki Bunlara ROM Denir) Root Kullanıcılarını Sistemde Erişilemez Hale Getirmişlerdir. Version Kod Adı Yayınlama Tarihi API Level Kullanım Oranı 1.5 Cupcake 30.04.2009 3 %0 1.6 Donut 15.09.2009 4 % 0.1 2.0 – 2.1 Eclair 26.10.2009 7 % 1.5 2.2 Froyo 20.05.2010 8 % 3.2 2.3 – 2.3.2 Gingerbread 06.12.2010 9 % 0.1 2.3.3 – 2.3.7 Gingerbread 09.02.2011 10 % 36.4 3.1 Honeycomb 10.05.2011 12 %0 3.2 Honeycomb 15.06.2011 13 % 0.1 4.0.x IceCreamSandwich 16.12.2011 15 % 25.6 4.1.x Jelly Bean 09.06.2012 16 % 29 4.2.x Jelly Bean 13.11.2012 17 %4 5.0 Lime Pie ??? ??? ??? Yukarıdaki Tablo, Bugune Kadar Çıkan İşletim Sistemlerinin Version Numaralarını, Kod Adlarını, Yayınlama Tarihlerini, OS’ların API Numaralarını ve 2013 Yılına Göre, Dünyadaki Kullanım Oranlarını Göstermektedir. 1.5 – 2.3.7 Arası Versionlar Sadece Cep Telefonları İçindir. 3.0 – 3.1 – 3.2 Versionları Sadece Tablet Bilgisayarlar İçindir. Ama Ice Cream Sandwich’ten (4.0) Sonrasındaki Bütün Sürümler Tak Çatı Altında Toplanıp Hem Telefon Hemde Tablet İçin Çıkartılmıştır. Emir Civaş – i.am@live.jp Sayfa 3 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Android Development Android İşletim Sistemleri İçin Uygulama Geliştirmek Herşeyden Önce Zevkli Bir Uğraştır. Siz Uygulama Geliştirirken, Sistemin Size Sunmuş Olduğu Olanakları Görüp Sevinirken, Bir Taraftan Getirmiş Olduğu Kısıtlamaları Görünce Üzüleceksiniz Android İşletim Sisteminde, İşletim Sistemine Yazılan Uygulamalar APK Uzantılı Dosyalarda Tutulurlar. Android Package Anlamına Gelen Bu Dosya Uzantısının MIME Türü : application/vnd.android.package-archive ‘dır. Uygulama Mimarisinden Bahsetmek Gerekirse. Android İşletim Sistemindeki Uygulamalar, Java Bazlı Yazılır. Fakat Android İşletim Sisteminde Yerleşik Bir Java VM’i Bulunmadığı İçin, Bunlar Dalvik VM Denen Bir Sanal Makinenin Çalıştırabilmesi İçin Dex Byte Code’a Çevrilir. Java İle Birlikte, Uygulamalarınızın Bir Bölümünü İhtiyacınıza Göre Native (C/C++) Şeklinde Yazabilirsiniz. Fakat Bu Native Kod Olayını, Komple Uygulama Yazmak Olarak Düşünmeyin. Ama Diyelim Ki Uygulamanızın Bir Bölümü Gerçekten Yüksek Performans’a İhtiyaç Duyuyor, VM’yerine Native’de Çalışması Daha Mantıklı, Bu Durumlarda Faydalanabileceğiniz Bir Teknoloji. Bunun Dışında Uygulamalarınız, Android İşletim Sisteminin Belirli Özelliklerini Kullanacaksa (Örn : Bluetooth, Internet, Dosya Yazma, Kamera İle Resim Çekme, Mikrofon İle Ses Kaydı Vb..) Uygulamanızın Gerekli İzinlere Sahip Olması Gerekmektedir. Bu Güvenlik Amacıyla Kurulmuş Bir Mekanizmadır. Böylelikle, Ne Yaptığını Bilmediğiniz Bir Uygulamayı Kurmadan Önce, Kurulum Ekranında Gereken İzinleri Görebilir, Uygulamayı Kurabilir Yada Kurulumu İptal Edebilirsiniz. (Bunun Daha Sonra Detaylı Bir Şekilde Üstünde Duracağız) Java İle Uygulama Geliştirme Konusunda Dönecek Olursak; Öncelikle Bilgisayarınıza Bir Android Geliştirme Ortamı Kurmanız Gerekmektedir. Bu Geliştirme Ortamı Windows, Linux ve MAC’te Kurulabiliyor. İhtiyacınız Olanlar : Java 6 JDK Bir IDE (Eclipse Yada Android Studio) IDE İçin Android Geliştirme PlugIn’i (ADT) Ve Android SDK. Günümüz İtibariyle AndroidStudio Çok Yeni Bir Ürün (Şu Anki Versionu 0.1.1) Dolayısıyla Eğitim Boyu IDE Bazlı Oluşabilecek Hataların Önüne Geçmek İçin Eclipse Kullanacağız. Java JDK + JRE Kurulum Yönergelerini Önceki Dökümanlardan Bulabilirsiniz. Emir Civaş – i.am@live.jp Sayfa 4 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Android Geliştirme Ortamı http://developer.android.com/sdk/index.html Adresine Girin. Android SDK’nın Son Sürümünün 32 Bit Versionunu İndirin. Bu İndirdiğiniz Paket, Android Yazılım Geliştirmek İçin Gerekli Olan Bütün Araçları Size Sunan Bir Paket. İçinde : Eclipse (Google Rev) + ADT PlugIn Android SDK Tools Android Platform Tools Son Android Srümü Emulator İçin Son Android Sistem Imaji Mevcuttur. İndirdiğiniz Dosya Bir Zip Dosyası. Bu Dosyayı Açtığınızda İçindeki Eclipse Klasörüne Girip, Eclipse’i Çalıştırmaya Başlayın. Öncelikle SDK Manager & AVD Manager’dan Bahsetmek İstiyorum. SDK & AVD Manager’a Eclipse IDE Menusu > Window Seçeneği Altından Erişebilirsiniz. Emir Civaş – i.am@live.jp Sayfa 5 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 SDK Manager : Çeşitli Araçları, Ve Android OS Sürümlerini (Ve Ek Özelliklerini) İndirmenize Yarayan Bir Uygulama. Başka Hiç Bir İşlevi Yok. Farklı Sürümler İçin İndirdiğiniz Bu Dosyalar İse, Eclipse’te Uygulama Geliştirmenize Ve Emulator İle İstediğiniz OS Sürümünü Çalıştırmanızı Sağlar. Yüklemek İstediğiniz Paketlerin Checkbox’ını Seçip, Install Packages Diyebilirsiniz. Bir Android Uygulaması Geliştirmek İçin, Buradaki Tüm Paketlerin Yüklenmesi Gerekmiyor Zaten. Hele Android 2.2 Altındaki Hiç Bir Sürümü Yüklemeyin Bile Tools Klasörünün Altındaki 3 Seçeneği Her Zaman Yükleyin. Bir OS Sürümünde (API xx) Mutlaka SD Platform’u Yükleyin. Eğer, Bu Sürümde Google Apps Ile İşiniz Olucaksa, Google APIs’ide Yükleyin. Eğer Bu Sürümü Emulator’de Çalıştıracaksınız System Image’ida Yükleyin (ARM Olanı) AVD Manager : AVD (Android Virtual Device) Manager, Geliştirdiğiniz Uygulamaları Test Etmek İçin, SDK Manager İle Yüklediğiniz OS’lar İçin Emulator Cihazlar Oluşturmanızı Sağlar. Emir Civaş – i.am@live.jp Sayfa 6 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Eclipse Android Proje Yapısı Eclipse’ten File > New > Android Project Menusunde İlerleyin. İlk Ekranda Proje İle İlgili Bilgileri Gireceksiniz. İlk Ekranı Geçtikten Sonra, Karşınıza Uygulamanızda Kullanılacak Simge Ve Activity Ekleme Ekranı Gelecektir. (Activity : Android’te Uygulamanın Çalışan Bölümlerinin Yazıldığı Java Classları) Emir Civaş – i.am@live.jp Sayfa 7 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Daha Sonra İse Activity’nizin Layout Türünü Belirtiyorsunuz. Ve Yeni Bir Activity & O Activity Çalıştığı Zaman Ekranda Gösterilecek Layout’u Oluşturuyorsunuz. En Sonunda Finish’e Basıp Projemizi Oluşturuyoruz. Proje Oluştuğunda Eclipse Proje İçinde Bir Ağaç Yapısı Oluşturuyor. Bu Ağaç Yapısındaki Çeşitli Dosyaların & Klasörlerin Ne Oldukları Aşağıda Gösterilmiştir : Emir Civaş – i.am@live.jp Sayfa 8 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Emir Civaş – i.am@live.jp Sayfa 9 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Eğer Hiçbir Değişiklik Yapmadan, Eclipse’ten Dosyayı Derleyip Çalıştırırsanız, Uygulama Bağladığınız Cep Telefonunda, Yada Oluşturduğunuz Emulator’de Açılacak Ve XML’de Tanımlanan Arayüz Karşınıza Gelecektir. Uygulamanızı Oluştururken, Android’in Görsel Elemanlarını (Bunlara Widget Yada View Deniyor) Layout’unuzun Üzerinde Sürükleyip Bırakarak, İstediğiniz Tarzda Bir Arayüz Oluşturabilirsiniz. Bu Viewlar, Farklı Amaçlar İçin Yaratılmış, Kendi İçinde Bir Çok Şekilde Özelleştirilebilien Yapılardır. Emir Civaş – i.am@live.jp Sayfa 10 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Arayüz Tasarlarken, Kullanmış Olduğunuz Bu Sürükle Bırak Mekanizması, Aslında Sadece Bir Kısayol Aracıdır. Çünkü Sizin Sürükle Bırak Yaparak, Layout’a Oluşturduğunuz Herşey, Arkaplanda Bir XML Dosyası Olarak Tutulur (Evet, Layout Dosyaları Basit Birer XML Dosyasıdır ) Layout’tan Birşeyler Ekleyip, Değişiklik Yapabileceğiniz Gibi, XML Dosyasından’da Direkt Bu Değişiklikleri Yapabilirsiniz. Layout’a Eklediğiniz Her View’a Android Otomatik Olarak Bir ID Atar. Bu Id’leri Her Zaman Kendiniz Verin, Neyin Ne Olduğunu Bilin. Örneğin 3-5 Ekranlı, İçinde 25-30 Tane Metin Kutusunun Olduğu Bir Projede Bu Metin Kutularının ID’leri textView1, textView2, textView3, ... textView29.. Şeklinde Olacaktır. Neyin Ne Olduğunu, Bir Süre Sonra Hatırlamanız Neredeyse Mümkün Olmayacaktır. O Yüzden ID’leri Kendiniz Verin Arayüze Eklemiş Olduğunuz Bir View Otomatik Olarak gen Klasöründeki R.java’ya İşlenir. R.java Özel Bir Dosyadır. Sizin Sürükle Bırak Şeklinde Hazırladığınız UI Ekranlarındaki View’ları Koda Bağlamanıza Yarar. Emir Civaş – i.am@live.jp Sayfa 11 29.06.2013 – Wissen Akademie Java / Android Ders Notları #5 Burada Gördüğünüz Gib, XML’ile Yaratılan Herşey R.java’da Sizin Verdiğiniz ID İle Tanımlanmış Karşısındada Bir HexaDecimal Sayı Değeri Verilmiştir. Projenize Eklediğiniz Resimler (Drawable Klasörüne Ekledikleriniz); drawable class’ı Altına; Layout Dosyalarınız; layout class’ı Altına; Layoutlara Eklediğiniz View’lar; id class’ı Altına; Eklenir. Daha Sonra Bu ID’leri Kullanarak, Kodunuzun İçinden, Bu Arayüz Elemanlarına Ulaşabilirsiniz. Yandaki Snippet’ta Bir TextView Instance’ı Oluşturuldu (adı tw). Ve Bu instance, R.java’nın id class’ı Altındaki textView1 ID’sine Bağlandı. Artık TextView Objesinin Methodlarını Kullanarak UI View’ında Değişiklikler Yapılabilir. Emir Civaş – i.am@live.jp Sayfa 12