Android Programlama 2015-2016 BAHAR MAKU-TBMYO 2016 Konu Başlıkları Genel Kavramlar Android Geliştirme Araçları Android Kaynakları Activity Intent Layout Frame Servisler Dosyalar SqlLite veri tabanı Web Servis uygulamaları Sensörler Google MAP Uygulaması Mobil Telefon Anakartı Kaynak: http://www.cs.dartmouth.edu/~campbell/cs65/cs65-2014.html (22/02/2015) Bir Mobil Cihazdaki Bazı Sensörler Kaynak: http://www.cs.dartmouth.edu/~campbell/cs65/cs65-2014.html 22/02/2015 Bir Mobil Cihazdaki Bazı Sensörler (Hall) Kaynak: http://smartphoneworld.me/hello-world-2/ 22/02/2016 Bazı Mobil Cihaz Uygulama Geliştirme Araçları ===== Mobil Uygulama geliştirme programları ======== Android Studio (Java) Eclipse IDE (Java) Xcode ( Objective-C, Swift) Visual Studio C#.NET ======== On-Line Mobil uygulama Geliştirme Araçları ======== VindDev Mobile Telerik (Online - HTML5 ile) MIT App Inventor (On-line) ======== Mobil Oyun Geliştirme Araçları ======== Corona SDK Unity Android Nedir? Andrid Google Firması tarafından 2005 yılında geliştirilmeye başlanmış Telefon Tablet Saat TV Otomotiv gibi araçların/cihazları programlanması için Java Programlama Dilini kullanan, Linux Tabanlı (kernel) tabanlı bir İŞLETİM SİSTEMİDİR Neden Android? Linux Tabanlı Samsung, LG, Sony, Huawei,... vb. firmaların ortak Ücretsiz geliştirme aracı Java dili ile geliştirilir (iOS için kullanılan Object-C ve Swift gibi zor diller kullanmaz) Geniş Kullanım Alanı ( Mobil telefon, Tablet, Otomobil, TV, Blue Ray, vb. gibi) Farklı yerlerden kurulabilir (GoogleStore, direkt yükleme,..) Bol miktarda kaynak döküman Registery-based olduğundan küçük işlemcilede az bellekle çalışabilir Android Uygulamaları (SANDBOX) Android işletim sistemi üzerinde çalışan her bir uygulama için ayrı bir işlem ve sanal makina ( DVM: Dalvik Virtul Machine) ayrılır. Böylece uygulamalar birbirinden izole olarak çalışır. Bu güvenlik açısından önemlidir. Android uygulamaları GoogleAppStore üzerinden dağıtımı yapıldığında üretici firma anahtarı ile yüklenir. Dolayısıyla hangi uygulam hangi üretici tarafından geliştirildiği bellidir. Aynı üretici tarafından geliştirilen farklı uygulamalar aynı üretici koduyla yüklenir. Android Uygulamaları (SANDBOX) Android işletim sistemi üzerinde çalışan her bir uygulama için ayrı bir işlem ve sanal makina ( DVM: Dalvik Virtul Machine) ayrılır. Böylece uygulamalar birbirinden izole olarak çalışır. Bu güvenlik açısından önemlidir. DVM-1 DVM-2 Android Uygulama-1 Android Uygulama-2 Kendine ait bir Prosess Kendine ait İşletim sistemi kullanıcısı Kendine ait bir Prosess Kendine ait İşletim sistemi kullanıcısı Kendine ait bir Prosess Kendine ait İşletim sistemi kullanıcısı Kendine ait bir DVM Hafızadan ayrılmş bellek(Heap) Kendine ait kanaklar Kendine ait bir DVM Hafızadan ayrılmş bellek(Heap) Kendine ait kanaklar Kendine ait bir DVM Hafızadan ayrılmş bellek(Heap) Kendine ait kanaklar DVM-N ... Android Uygulama-N Android Mimarisi Android İşletim sistemi, adres defteri, telefon arama, notification, 2D/3D grafik, database, security/encryption, camera, ses, input/output, web .. gibi kütüphaneler sağlar. Java Kodlar Derlenerek DVM binary kodlara dönüştürülür 4 3 2 1 http://developer.android.com/images/system-architecture.jpg 1-Linux Çekirdeği(Kernel) 2-Android Yerel Linux Kütüphanesi (Android Linux Library) Dalvik Virtual Machine Dalvik Virtual Machine Hızlı CPU ihtiyaç duymaz Swap alana ihtiyaç duymaz Sınırlı batarya ömrü Küçük RAM lara ihtiyaç duyar Örn: Toplam 64 Mb, Çalışma sırasında yaklaşık 10 Mb Dalvik Virtual Machine Bir .dex dosyada birden çok class vardır Stack-based yerine registered-based dir Modifiye edilmiş garbage (çöp toplama) Geliştirilmiş memory paylaşımı (sharing) İnstal zamanında optimize edilir DVM’ ye karşı ART (OTM) Dalvik VM (Dalvik Virtual Machine) Dan Bornstein tarafından Android işletim sistemi için özel olarak geliştirilmiş bir sanal makinadır. Java olarak yazılan uygulama kodları (.class) derleyiciler tarafından Dalvik VM’in okuyabileceği bytecodelara çevrilerek toplanır ve .dex uzantılı dosyada dönüştürülürler. Bu .dex uzantılı dosyalar Dalvik VM’in çalıştırılabilir(executable) dosya uzantılarıdır. Dalvik VM düşük hafıza kullanımından dolayı sevilmektedir. Dalvik VM için ön görülen min RAM kapasitesi 64 MB olarak belirtilmektedir. İşletim sistemi başladıktan sonra 20 MB RAM kapasiti bulundurmaktadır. Dalvik VM, Android 2.2 ile birlikte Just-In-Time derleyici olarak yoluna devam etmiştir. JIT olarak bilinen ve çalışma zamanlı derleme yapısı Android 4.4 ile yerini Ahead-of-Time (AOT) derleyiciye bırakmaya başlamıştır. Çalışma öncesi derleme yapısı AOTGoogle firması tarafından ART olarak sunulmuştur. ART Android RunTime ile yoluna devam eden Android işletim sistemi için performans kazandırılacağı düşünülmektedir. Çünkü JIT yani çalışma zamanlı derleme, Uygulamaların çalışma zamanında ele alarak bytecodelarının okunup, işlemci üzerinde yorumlanmasıyla çalışmakta iken AOT yani çalışma öncesi derleme ile bu yapı Uygulamaların kurulma aşamasında derlenip çalışma esnasında derlenme ile zaman kaybetmemesi sağlamaktadır. Buda Android için daha az işlemci ve ram anlamına gelmektedir. Kaynak (23/02/2015): http://ibrahimbalic.com/tag/android-art/ Android Sürümleri 6.0 22,23 Program yazarken API level önemli Marshmallon An itibarı ile piyasadaki telefonlarda en çok kullanılan sürüm. Android Versiyonlarına göre Piyasada Kullanım Oranları 15 Şubat 2016 http://www.idc.com/prodserv/smartphone-os-market-share.jsp 15 Şubat 2016 http://www.idc.com/prodserv/smartphone-os-market-share.jsp Android Geliştirme Araçları SEÇENEK-I SEÇENEK-II 1- Java Developer Kit (JDK) 1- Java Developer Kit (JDK) 2- Eclipse ( Java Software Developer Kit) 3- Android Developer Toolkit 4- Emulatör (AVD, GenyMotion) 2- Android Studio (Android Virtual Device-AVD emulatör ile birlikte) Android Studio Kurulum 1- Java SDK kurulumu http://www.oracle.com/technetwork/java/javase/downloads/index.html 2- Download Android Studio http://developer.android.com/sdk/index.html Windows için sistem gereksinimleri: Microsoft® Windows® 8/7/Vista (32- or 64-bit) 2 GB RAM minimum, 4 GB RAM recommended 400 MB hard disk space At least 1 GB for Android SDK, emulator system images, and caches 1280 x 800 minimum screen resolution Java Development Kit (JDK) 7 Optional for accelerated emulator: Intel® processor with support for Intel® VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality Eclipse ADT Kurulumu 1- Download Java SDK http://www.oracle.com/technetwork/java/javase/downloads/index.html 2- Download Eclipse http://www.eclipse.org/downloads/packages/eclipse-ide-java-eedevelopers/marsr 3-Install ADT Plug-ins and Android SDK https://dl-ssl.google.com/android/eclipse/ Android Studio Android Uygulamsı Build İşlem Süreci Ornek1.java Android Uygulama Java Kodu javac ( Java Compiler) Ornek1.class dx (Dalvik Compiler) Ornek1.dex Kaynak dosyalar Ornek1.apk GoogleAppStore DVM Dalvik Virtual Machine ANDROID İŞLETİM SİSTEMİ Android Uygulaması Android Uygulaması Kaynakları Android Uygulaması Java Kodu AndroidManifast.xml -Projenin ayarlarının yapıldığı dosya src/java/... - Java class kaynak dosyaları res/... ( kaynak dosyalar (xml) ) -dreawable (resimler) -layout/ (GUI dosyaları) -menu/ (menu dosyası) -values/ (sabit değerler ve dizi dosyası) -strings (değişkenler dosyası) -styles (görünüm stilleri dosyası) Gradle -build/compile yönetim sistemi -build.gradle (ana build ayarları dosyası) XML dosya Diğer XML dosyalar: Tasarım ve diğer alfasayısal verilerin bılunduğu xml tabanlı kaynaklar AndroidManifest.xml Active_main.xml, menu.xml, values.xml, color.xml styles.xml dimension.xml Resim Kaynak dosyaları: png, jpeg, gif ve nine-pitch(.9.png) Diğer Kaynaklar (raw): video, ses, pdf, txt vb. SQLLite (dtabase) Android Sanal Makinesi (Emulator) Emülatörler Android programını gerçek cihazda çalşıyormuş gibi, sanal cihazlar üzerinde denemek için gerekli programlardır. Android Studio ile birlikte Android Virtual Device (AVD) emülatörü gelmektedir. Cok kullanılan bazı Emülatörler 1-Android Virtual Device (AVD) 2-GenyMotion (Download GenyMotion) 3-BluStacks (Download Bluestacks) 4-You wave (Download You Wave) 5-Windroy 6-AndyRoid 7-Droid4X 8-Xamarin 9-DuOS-M 10- Web tabanlı emulatör (https://www.manymo.com/emulators) … Emülatör Hızlandırma:http://www.javacodegeeks.com/2013/12/android-boost-up-the-android-emulator-speed-up-to-400-on-intel-based-architecture.html Android Uygulamsı Test Araçları Kaynak(03/03/2015):/https://software.intel.com/en-us/android/articles/services-to-test-your-android-apps-on-intel-devices Services to Test Your Android Apps on Intel Devices, Joshua A. Bancroft on May 22, 2014