umutbsl Posted September 27, 2014 Share Posted September 27, 2014 (edited) 101 i yazmadım direk 201 den girelim başka günler inş 301 401 ileri seviye paylaşırız Android Cihazlar ve Android İşletim Sistemi Üzerine Genel Bilgiler Android, akıllı telefon ve tablet PC gibi mobil cihazlar için geliştirilmiş Linux tabanlı bir işletim sistemidir. Google tarafından desteklenen Open Handset Alliance organizasyonu tarafından geliştirilmiştir. Google ilk yatırım masraflarını karşıladığı Android’i 2005 yılında satın aldı. Şirket daha sonra Apache Lisansı altında Android’in açık kaynak (open source) olarak dağıtımını yaptı. Bugüne kadar Android’in çeşitli sürümleri farklı adlarla piyasaya sürüldü: Android 1.0 (API level 1) Android 1.1 (API level 2) Android 1.5 Cupcake (API level 3) Android 1.6 Donut (API level 4) Android 2.0 Eclair (API level 5) Android 2.0.1 Eclair (API level 6) Android 2.1 Eclair (API level 7) Android 2.2–2.2.3 Froyo (API level 8) Android 2.3–2.3.2 Gingerbread (API level 9) Android 2.3.3–2.3.7 Gingerbread (API level 10) Android 3.0 Honeycomb (API level 11) Android 3.1 Honeycomb (API level 12) Android 3.2 Honeycomb (API level 13) Android 4.0–4.0.2 Ice Cream Sandwich (API level 14) Android 4.0.3–4.0.4 Ice Cream Sandwich (API level 15) Android 4.1 Jelly Bean (API level 16) Android 4.2 Jelly Bean (API level 17) Android 4.3 Jelly Bean (API level 18) Android 4.4 KitKat (API level 19) Android L (API level 20) Google Play Google tarafından yönetilen Google Play, Android cihazların uygulama ve oyunlara ulaşabileceği çevrim içi bir markettir. Buradan, çoğu zaman geliştiricilerin tercihleri doğrultusunda ülkelere göre yayınlanan oyun ve uygulamalara erişilebilir. Android cihazlar üzerinden Google Play uygulamasıyla ya da Google Playsitesinden erişilebilir. Google Play, üzerinde yer alan uygulamaları kategorilerine göre ayırarak kullanıcılara sunar. Ana sayfasında en çok satılan ve talep gören uygulamalara yer verir. Ayrıca "Editörün Seçimi" gibi yeni bir kategorilendirmeye daha da gitmiştir. Yukarıdaki resimde yer alan arama kutusuna ilgilendiğimiz bir konuyu ya da geliştirici firma adını girerek kolayca arama yapabiliriz. Bir uygulamayı seçtiğimizde aşağıdaki uygulama detay sayfasına yönlendiriliriz. Bir uygulamanın ayrıntı sayfasına girdiğimizde, uygulamanın adını, hemen altında geliştiricisini görürüz.Yükle düğmesine tıkladığımızda uygulama Google hesabımıza bağlı Android cihazlarımıza gönderilir. Uygulama detay sayfasında aşağı doğru ilerlediğimizde, uygulama içi görselleri bulabiliriz. Görsellerin hemen altında geliştirici tarafından yapılan açıklamalara ve uygulamayı indiren kullanıcıların yorumlarını görme şansımız var. Kullanıcılar çok çeşitli amaçlarla da yorumlar yapabilirler. Detay sayfasında daha aşağıya indiğimizde uygulamaya dair ek bilgiler karşımıza çıkar. Burada uygulamanın hangi sürümde olduğu, boyutu ve hedef Android sürümleri görülebilir. Burada yer alan geliştirici bağlantı sayfaları ise, geliştiriciye ulaşabilmeniz açısından, geliştirici tarafından paylaşılan sayfalardır. Sayfanın sonunda ise benzer uygulamalar ve bu geliştiricinin diğer uygulamalarına da bakabilirsiniz. Android Mimarisi ve Sistem Özellikleri Android, Open Handset Alliance, Google ve özgür yazılım topluluğu tarafından geliştirilen bir mobil işletim sistemidir. Bu işletim sisteminin parçaları çekirdek (kernel), sistem kütüphaneleri, uygulama geliştirme çatıları (frameworks) ve yerleşik temel uygulamalardan oluşmaktadır. Android mimarisi aşağıdaki gibidir. Bu yapıyı ayrı ayrı incelemek geliştirici adaylarının üzerinde çalıştıkları yapıyı anlamaları bakımından faydalı olacak. İşletim Sistemi (Linux çekirdek) Android, Linux çekirdeğini (kernel) kullanır. Linux çekirdeğine Android için eklenen kod parçacıkları ve kütüphaneler Genel Kamu Lisansı'na sahipken, diğer bileşenler üretici firmalarına kendi kapalı ROM'larını oluşturmalarına izin verecek ama yine özgür bir şekilde Apache Lisansı ile dağıtılmaktadır. Linux çekirdeğinin doğrudan kaynak sağladığı yapılar security (güvenlik), memory ve process (hafıza ve süreç) kontrolü, dosyalama ve bağlantı için I/O işlemleri ve cihaz sürücüleridir. Çekirdekte Android için özelleştirilmiş başlıca alanlar ise güç kontrolü, paylaşılan hafıza, low memory killer ve süreçler arası iletişim içindir. Kütüphaneler (Libraries) Mimarinin diğer önemli yapısı olan kütüphaneler bölümünde C ile yazılmış sistem kütüphaneleri, internet tarayıcısı (browser) motorlarının çalışması için Webkit, görüntüleme kontrolünü yapan Surface Manager, grafik işlemleri için OpenGL, ses ve video işlemleri için gereken Media Freamwork, veri yapıları kontrolü ve düzenlenmesi için SQLite gibi yapılar bulunur. Android Runtime Bu bölüm Linux çekirdeğindeki kütüphanelerin java ile birleştiği bölümdür. İki önemli bileşeni vardır. Bunlar temel Java kütüphaneleri ve Dalvik Sanal (virtual) Makinesi'dır. Bu yapılar hakkında detaylı bilgileri ilerleyen eğitim içeriklerinde bulacaksınız. Burada Dalvik Sanal Makinesi'ne kısaca değinelim: Dalvik Sanal Makinası: Uygulamalar Dalvik Sanal Makinesi tarafından çalıştırılır. Temel çalışma mekanizmasını anlamak Android projelerinin yaşam döngüsünü anlamak açısından önemlidir. Java ile yazılan uygulamalar alınır, Java kodları derlenerek bytecode dosyalarına çevrilir. Bu dosyalar dex dosyasına çevrilerek Dalvik Sanal Makinesi'nin çalıştıracağı şekle sokar. Dalvik ortamı düşük işlemci gücü, az RAM ve sınırlı batarya koşullarına göre tasarlanmıştır. Not: Dalvik her ne kadar mobil odaklı ve kısıtlı kaynaklarla çalışabilecek bir yapı olsa da, bazı alanlarda iyileştirilmesi gereken ve zamanın şartlarına göre tasarlanmış, artık yavaş yavaş eskiyen bir runtime. Google bunun farkında olduğu için yaklaşık 2 yıldır yeni bir runtime üzerinde çalışıyor, ismi ART yani Android Runtime. Dalvik'ten çok farklı bir bir çalışma yapısına sahip olan ART hakkında ayrıntılı bir blog yazısına buradanulaşabilirsiniz. Eğitimin ilerleyen bölümlerinde uygulama çatılarını (application freamwork) adım adım anlatacağız. Şimdiden herkese bu yeni dünyada başarılar diliyoruz :). ADT Geliştirme Ortamı'nın Oluşturulması Android uygulamaları çoğunlukla Java dili kullanılarak geliştirildiğinden, Google uygulama geliştirme platformu olarak Java dünyasında oldukça popüler bir IDE olan Eclipse platformunu yeğlemektedir. Üzerine eklenen modüllerle Java dünyasında neredeyse her türlü uygulama geliştirme çatısına (framework) destek veren Eclipse, Google’ın Android eklentisi kullanılarak Android uygulama geliştirmeye uygun hale getirilebilir. NOT : Eclipse sürekli güncellenen bir IDE olduğundan bu sayfada yer alan ekran görüntüleri ve sürüm numaraları güncel sürümlerden farklılık gösterebilir. İşletim sisteminize uygun Eclipse tabanlı Android Geliştirme Ortamını (ADT) buradan indirebilirsiniz. Not: Eclipse IDE'sinin ilk açılışı biraz zaman alabilir. Bu açılış ve kullanım süreleri, özellikle emülatör kullanımı sırasında, bilgisayarınızın donanımına bağlıdır. http://developer.android.com/sdk/index.html Android NDK Android Native Development Kit (NDK), Android platformuna Native uygulamalar yazabilmeniz için hazırlanmıştır. Android platformunda uygulamalar büyük çoğunlukta Java dili kullanılarak yazılır ancak Android belirli oranda Native (C/C++) desteği de sağlamaktadır. Bu yüzden ilerleyen anlatımlar için indirilmesi zorunlu değildir. Android eğitimlerinde daha çok Java tabanlı uygulama geliştirmeyi tercih etmemizin en önemli nedeni native uygulama geliştirmenin Android platformunda görece zorluğu ve performansa etkisidir. Android NDK, C kütüphaneleriyle yazılmıştır. ARM ve x86 platformlarını destekler. Derleyici olarak GCC kullanır. Java ortamından farklı olarak Android NDK, komut satırı araçlarıyla çalışır ve hata ayıklama, oluşturma ve çalıştırma işlemleri de yine komut satırı üzerinden yürütülür. Bazı üçüncü parti araçlarda ise Eclipse ve Visual Studio eklentileri bulunmaktadır. IDE'nin Tanıtılması ve Android Bileşenlerinin Eklenmesi Bir önceki derste nasıl yüklendiğini gördüğümüz Eclipse IDE'sini biraz daha yakından inceleyelim: Eclipse yüklenmesi tamamlandıktan sonra Google’ın Android geliştiriciler için yazdığı Eclipse eklentilerini kurmamız gerekir. Bunun için Help > Install New Software yolunu kullanarak eklenti yükleme penceresini açtıktan sonra Add... seçeneğine tıklayalım. Karşımıza aşağıdaki pencere gelecektir. Burada yeni yükleme yapmak için isim (Name) kısmına “Android”, konum (Location) kısmına ise https://dl-ssl.google.com/android/eclipse/ adresini girelim. OK tuşuna bastıktan sonra Eclipse belirtilen adresi sorgulayacak ve bulduğu paketleri listeleyecektir. Burada bütün paketleri seçip Next düğmesine tıklayalım. Sonraki pencerede bizden lisans onaylamamız isteyecek. Gerekli onayı verdikten sonra Finish düğmesine tıklayarak yüklemeyi başlatalım. Bu aşamada dosyalar indirilmeye başlar. Dosyalar yüklendikten sonra Eclipse’ı tekrar başlattığımızda üst pencerede Android ile ilgili iki simge görüntülenir. Soldaki simgeye tıklayarak Android SDK Manager’ı başlatalım ve bize gerekli Android paketlerini indirmeye hazırlanalım. Bu ekranda bugüne kadar Google ve Android projesini destekleyen firmalar tarafından yayınlanmış her türlü geliştirme aracına erişebiliriz. Listeden uygulamamıza uygun Android versiyonunu seçerek indirme işlemini başlatabiliriz. Dilersek birden fazla sürüm yükleyerek uygulamamızın değişik Android sürümlerinde nasıl çalışacağını da takip edebiliriz. Gerekli paketleri seçtikten sonra Install Packages seçeneğiyle yüklemeyi başlatabiliriz. Yükleme bittikten sonra Android Virtual Device Manager adlı uygulamayı başlatarak kendimize bir sanal cihaz tanımlamamız gerekir. Tanımlayacağımız sanal cihaz, seçtiğimiz işletim sistemi sürümüne göre bir Android işletim sistemi başlatır ve gerçek bir cihazda çalışır gibi bütün fonksiyonları denememize olanak tanır. Bu ekrandaki Newseçeneğiyle yeni bir cihaz tanımlayalım. Yukarıda yer alan örnekte, Android 4.1 sürümünü kullanan ve 512 MB harici diske sahip bir sanal makina tanımladık. Ayarlarımız bittiğinde Create AVD düğmesine tıklayarak sanal makinamızı yaratalım. Sanal cihazı tanımladıktan sonra Start düğmesine basarak artık Android Emülatörü'nü başlatabiliriz. (Android Emülatör'ünün çalışması ilk seferde uzun sürebilir.) DDMS DDMS (Dalvik Debug Monitor Server) bilgisayarınıza bağlı bulunan Android cihazları ve o anda çalışan simulatörleri takip edebileceğiniz bir Eclipse eklentisidir. DDMS sayesinde cihaz üzerinde çalışan uygulamaları görüntüleyebilir, cihazın dosya sistemine müdahale edebilir, sahte konum gönderebilir ve ekran görüntüleri alabiliriz. DDMS ekranına ulaşmak için Eclipse içinde Window > Open Perspectiveseçeneğinden DDMS’yi seçmeniz gerekir. DDMS ekranının sol tarafında o anda bilgisayara bağlı bulunan cihazları görüntüleyebiliriz. Ekranın alt tarafında ise daha önceki bölümde anlattığımız LogCat konsolu bulunmaktadır. Sağ üst kısımda cihaza ait detaylı bilgileri alacağımız bir ekran yer alır. Şimdi bu ekranları inceleyelim. Cihaz ekranında listelenmiş cihazlardan birine tıkladığımızda cihazın üzerinde o anda çalışan bütün uygulamaları ve bu uygulamaların tükettiği bellek miktarını görüntüleyebiliriz. Burada bir uygulamayı seçtiğimizde yukarıdaki düğmeleri kullanarak uygulamayla ilgili çeşitli kontrollere erişebiliriz. Buradaki düğmeler; Debug : Eğer çalışan uygulamanın açık kodu Eclipse’de mevcutsa uygulamayı bu seçenekle debugmodunda çalıştırabiliriz. Bu şekilde uygulamanın adım adım çalışmasını kod üzerinden takip etme olanağına sahip oluruz. Update Heap : Uygulamanın harcadığı bellek tüketimini görmemizi sağlar. Dump HPROF File : Uygulamanın CPU ve bellek tüketimini gözlemlememizi sağlayan bir dosya oluşturur. Cause GC : Bir Garbage Collection başlatır. Stop Process : Uygulamayı durdurur. Update Threads : Çalışan Thread bilgisini günceller. Screen Capture : Cihazdan ekran görüntüsü almamızı sağlar. Diğer ekrandaki tablara da göz atalım: Threads : Uygulamada o anda çalışan bütün Thread’leri görmemizi sağlar. Bunun için gözlemlemek istediğimiz uygulamayı seçip Update Threads butonuna tıklamamız gerekir. Böylece çalışanThread’ler listelenecektir. Heap : Uygulamanın bellek tüketimini ayrıntılı bir şekilde görmemizi sağlar. Tüketimini görmek istediğimiz uygulamayı seçerek Update Heap düğmesine tıklayıp ardından Cause GC düğmesine tıklayarak bellek tüketimini görüntüleyebiliriz. Allocation Tracker : Bu seçenek uygulamanın çalışması sırasında belleğin ne derece tükedildiğini gerçek zamanlı izlememizi sağlar. Network Statistics : Android 4.0 ve sonrası sürümlerin yüklü olduğu cihazlarda kullanabileceğimiz bu özellik sayesinde işletim sisteminin yaptığı bütün internet kullanım trafiğini görüntüleyebiliriz. File Explorer : Cihazın dosya sistemine buradan göz atabiliriz. Her türlü uygulama dosyası ve diğer dosyalar listelenecektir. Emulator Control : Cihaz üzerinde gerçekleştirmek istediğimiz sanal işlemleri burada yapabiliyoruz. Örneğin cihaza sanal bir SMS atabilir, GPS’e koordinat gönderebilir, hatta bir simulatöre telefon çağrısı gelmiş görüntüsü sağlayabilirz. Bu şekilde uygulamalarınızdaki fonksiyonları deneme şansı elde ederiz. Logcat LogCat, Android Developer Tools ile birlikte gelen ve uygulamaların log çıktılarını okuyup incelemenize yarayan basit bir geliştirici aracıdır. Uygulamanızın kodunda, geliştirme aşamasında akışı takip etmek için sadece sizin görebileceğiniz notlar bırakabilirsiniz. İşte bu notlara, log denir. Eclipse'te LogCat'e ulaşabilmek için LogCat isimli view'ı etkinleştirmiş olmalısınız. Bir uygulamayı derleyip çalıştırmak istediğinizde eğer LogCat bölmesi açık değilse Eclipse size açma önerisinde bulunacaktır. Elle açıp kapatmak için Window > Show View > Other menüsüne girip açılan pencereden LogCat'i seçmelisiniz: Bu işlemin ardından LogCat bölmesi Eclipse'in alt tarafına yerleşecektir. Basit log işlemi Bir Android uygulamasında, hata takibini kolaylaştırmak için notlar/loglar bırakırken basitçe Log.i("Bilgi", "Internet baglantisi kuruldu"); ya da Log.w("Dikkat", "Parola uc kez yanlis girildi"); gibi metotlar kullanılır. Log.i'nin (info) bilgi, Log.w'nin (warning) tehlike mesajı gereken durumlarda kullanılması, LogCat bölmesinde fark edilmelerini kolaylaştırır. Bunun dışında da log türleri vardır: (Log.v) verbose: gerekli gereksiz tüm bilgiler (Log.d) debug: hata ayıklamaya dönük, metodun ya da sınıfın gidişatına ilişkin bilgiler (Log.e) error: hata oluşan yerlere ilişkin bilgiler Şimdi uygulamamızın içinde bir bölme işlemi yapalım ve tüm değerleri biz verelim. Bir sayıyı 0'a bölmeye çalışacağımız zaman hataya sebep olacağımız için bunu da log mesajlarından takip edelim: //Dosya Adı: MainActivity.java @Overridepublic void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("LogDeneme", "Kullanıcı arayüzü oluşturuldu."); try {int c = 7 / 0;} catch (Exception hata) { Log.e("LogDeneme", "Ciddi bir hata oluştu: " + hata.getLocalizedMessage());}} Bu uygulamayı çalıştırdığımızda LogCat bölmesi şöyle görünecektir: Gördüğünüz gibi farklı seviyelerdeki log mesajları farklı renklendirildi. Bilgi içeren log mesajları yeşil, hata içerenler kırmızı renkte yazı tipiyle ekrana basıldı. Soldaki Saved Filters bölümüyle log mesajlarını dinlemek istediğimiz uygulamaya veya etiketlere has süzgeçler oluşturup, sadece o kurallara uyan mesajların görüntülenmesini sağlayabilirsiniz. Uygulamanın çalıştığı cihaza ilişkin koşulsuz tüm mesajları görebilmek için "All messages" öğesine tıklayabilirsiniz. Sağdaki bölmedeki ayrıntılara değinelim: Level: Log mesajlarının seviyesini içeriyor. Info, Error, Debug ve Warning seviyesinde farklı mesajlar farklı renklerde gösteriliyor. Time: Verilen log mesajının tam olarak ne zaman verildiğini gösteren sütun. PID: Çalışan uygulamanın process ID değeri. Bu ID değeri Android'te uygulamaya has bir değerdir. TID: Uygulamaya bağlı çalışan thread ID değeri. Bazen bir uygulamanın içinde birden fazla thread (iş parçacığı) ile işlem yapılır ve farklı thread'lere ait log mesajları bu sütuna bakarak anlaşılır. Application: Uygulamanın paket adının yazılı olduğu kısım. Birden çok uygulamaya ait log mesajlarının incelendiği durumlarda kullanışlı olur. Tag: Geliştirici kişinin hata mesajına verdiği etiketin yer aldığı sütun. Verdiğiniz log mesajını sınıflandırmak için etiketleri kullanabilirsiniz. Text: Log mesajının metin kısmı. Süzgeçler Eclipse, com.logcatdeneme paket adına sahip uygulamamız için kendisi bir süzgeç oluşturdu. + ve - düğmelerinin yanındaki düzenleme düğmesine bastığımızda süzgeçle ilgili ayrıntıları görebiliyoruz: Bu süzgece göre com.logcatdeneme uygulaması için verbose seviyesinde tüm log mesajları LogCat bölmesinde görülebilir. Kullanışlı düğmeler LogCat bölmesinde log mesajlarıyla ilgili birkaç yardımcı düğme vardır: Export: Bölmede gördüğünüz log mesajlarınızı bir dosyaya kaydetmenize yarar. Clear Log: O an ekrana basılmış tüm log mesajlarını temizler. Scrool Lock: Varsayılan olarak yeni log mesajları geldikçe gösterilir. Kaydırma kilidini kaldırarak istediğiniz mesaja, uygulama çalışırken ve log mesajları yağmaya devam ederken daha kolay odaklanırsınız. Bazen de ekrana basılan log mesajlarını hızlıca bir şarta göre süzmek istersiniz: Hızlıca paket adına, etikete veya process id'ye göre sorgular yazıp çıktısını görebilirsiniz. LogCat, Eclipse ile Android uygulamaları geliştirirken sıkça kullandığınız bölümlerden bir tanesi olacaktır. Bir uygulamanın çalıştırılması sırasında oluşan hataları izlemek, gerektiğinde onları paylaşmak için kullanılan yararlı bir bileşendir. Android Projesi Oluşturmak Detaylı Anlatım Android eklentileri yüklendikten sonra artık yeni bir Android projesi oluşturabiliriz. Bunun için File > New > Other seçeneği ile çıkan listeden Android Application Project seçeneğini seçiyoruz. Bir sonraki ekranda projemizle ilgili çeşitli özellikleri girmemiz gerekecek. Buradaki seçeneklere göz atacak olursak; Application Name : Uygulamanın adı. Cihazda uygulama adı olarak bu değer görünür. Project Name : Projenin adı. Bllekte proje dosyaları bu klasör altında görünür. Package Name : Uygulamanın dosyalarının saklanacağı paket adı. Bu uygulamaya özgü benzersiz bir ad olmalıdır. Aynı zamanda Google Play hesabında uygulamanızı tanımlayacağından oldukça önemlidir. Build SDK : Projenin derleneceği Android versiyonunu belirtir. Minimum Required SDK : Projenin çalışacağı en alt Android işletim sistemi versiyonunu belirtir. Next düğmesine bastıktan sonra sizi aşağıdaki gibi bir ekran karşılayacaktır. Burada aslında çok fazla detaya girmeye gerek yok. Varsayılan olarak seçilen seçeneklerin işaretli kalmasında fayda var: Create custom launcher icon: Uygulamanızın logosunu belirleyeceksiniz. Create activity: Uygulamanızın yazımınza başlamadan önce size otomatik olarak bir activity hazırlayacak. Mark this project as a library: Projeyi kütüphane olarka belirle. Create Project in Workspace: Projenizi mevcut çalışma alanınızda açar. Working Sets: Projenizi çalışma alanlarına ekleyebilirsiniz. Next düğmesine basarak bir sonraki adıma geçtiğimizde uygulamanın simgeleriyle ilgili seçenekler gelecektir. Burada simgeyi bir imaj dosyasından yükleyebileceğimiz gibi Text seçeneği ile kendimiz de oluşturabiliriz. Buradaki diğer seçenekler; Trim Surrounding Blank Space: Yazılı metinle çerçeve arasındaki boşluğu ayarlamanızı sağlar. Foreground Scaling: Metnin yerleştirileceği bölgeyi belirler. Shape: Burada simgeyi daire ya da kare olarak tanımlayabilirsiniz. Background Color: İkonun arka plan rengini belirler. Foreground Color: İkonun metin rengini belirler. Burada gerekli ayarları yaptıktan sonra Next düğmesiyle bir sonraki aşamaya geçelim. Bu aşamada bizden uygulamanın tasarımıyla ilgili bilgiler istenecektir. Tabletleri hedefleyen bir uygulamanız varsaMasterDetailFlow tipini seçmenizi tavsiye ederiz. Bu şekilde Edited September 27, 2014 by umutbsl Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.