# Android yazılımı geliştirme
 Android yazılım geliştirmesi Android işletim sistemi için yeni uygulamaların oluşturulduğu süreçtir. Uygulamalar genellikle Android yazılım geliştirme kiti (SDK) kullanılarak Java programlama dilinde geliştirilir; ancak diğer geliştirme ortamları da mevcuttur. Google, Android uygulamaları Kotlin, Java ve C++ dilleri kullanılarak Android yazılım geliştirme kiti (SDK) kullanılarak yazılabilir" ve diğer dilleri kullanmak da mümkün olduğunu belirtiyor. Go, JavaScript, C, C++ veya Assembly gibi Java sanal makinesi (JVM) dışı tüm diller, muhtemelen kısıtlı API desteğiyle araçlar tarafından sağlanabilecek JVM dil kodunun yardımına ihtiyaç duyar.
Bazı programlama dilleri ve araçları, platformlar arası uygulama desteğine izin verir (yani hem Android hem de iOS için). Üçüncü taraf araçlar, geliştirme ortamları ve dil desteği de ilk SDK'nın 2008'de piyasaya sürülmesinden bu yana gelişmeye ve genişlemeye devam etti. Son kullanıcılara resmi Android uygulama dağıtım mekanizması Google Play'dir. Ayrıca, aşamalı aşamalı uygulama sürümünün yanı sıra yayın öncesi uygulama sürümlerinin test uzmanlarına dağıtılmasına da olanak tanır.


## Tarihçe.
Android, Google tarafından yönetilen Open Handset Alliance tarafından yaratıldı. Android platformu için uygulama geliştirme konusunda ilk geri bildirimler karışıktı. Bahsedilen sorunlar arasında hatalar, dokümantasyon eksikliği, yetersiz QA altyapısı ve genel bir sorun izleme sisteminin olmaması yer alır. (Google, 18 Ocak 2008'de sorun izleme sistemini duyurdu.) Aralık 2007'de, MergeLab mobil girişim kurucusu Adam MacBeth, "İşlevsellik yok, yetersiz belgelenmiş veya çalışmıyor... Açıkça en iyi zamanı için hazır değil." dedi. Buna rağmen platformun duyurulmasından bir hafta sonra Android'e yönelik uygulamalar ortaya çıkmaya başladı. İlk halka açık uygulama Yılan oyunu idi.
Android SDK'nın önizleme sürümü 12 Kasım 2007'de yayınlandı. 15 Temmuz 2008'de, Android Developer Challenge Ekibi yanlışlıkla Android Developer Challenge'a katılan herkese SDK'nın yeni bir sürümünün "özel" bir indirme alanında mevcut olduğunu duyuran bir e-posta gönderdi. E-posta, Android Developer Challenge'ın ilk turunun kazananlarına yönelikti. Google'ın bazı geliştiricilere yeni SDK sürümleri sağladığı ve diğerlerine sağlamadığı (ve bu anlaşmayı gizli tuttuğu) ortaya çıkması, o dönemde Android geliştirici topluluğunda yaygın bir hayal kırıklığına yol açtı.
18 Ağustos 2008'de Android 0.9 SDK beta sürümü yayımlandı. Bu sürüm güncellenmiş ve genişletilmiş bir API, iyileştirilmiş geliştirme araçları ve ana ekran için güncellenmiş bir tasarım sağladı. Daha önceki bir sürümle çalışanlar için yükseltmeye ilişkin ayrıntılı talimatlar mevcuttur. 23 Eylül 2008'de Android 1.0 SDK (Sürüm 1) yayımlandı. Sürüm notlarına göre, "çoğunlukla hata düzeltmeleri içeriyordu, ancak bazı daha küçük özellikler de eklendi." Ayrıca 0.9 sürümünden birkaç API değişikliği de içeriyordu. Geliştirildiğinden beri birden fazla sürüm yayınlandı.
5 Aralık 2008'de Google, ileri düzey geliştiriciler için tasarlanmış, SIM kilidi açılmış ve donanım kilidi açılmış bir cihaz olan ilk Android Dev Phone'u duyurdu. Bu, HTC'nin Dream telefonunun değiştirilmiş bir versiyonuydu. Geliştiriciler uygulamalarını test etmek ve kullanmak için normal tüketici cihazlarını kullanabilirken, bazı geliştiriciler özel kilidi açılmış veya sözleşmesiz bir cihaz seçebilir.
Temmuz 2013 itibarıyla Android için bir milyondan fazla uygulama geliştirildi ve 25 milyardan fazla indirme gerçekleştirildi.


## Pazar payı.
Haziran 2011 tarihli bir araştırma, yayınlandığı tarihte mobil geliştiricilerin %67'sinden fazlasının platformu kullandığını gösterdi. Android akıllı telefon sevkiyatlarının 2018'de %85 pazar payıyla 1,2 milyar birimi aşması tahmin edilmektedir.


## Android SDK.
Android yazılım geliştirme kiti (SDK) kapsamlı bir geliştirme araçları seti içerir. Bunlar arasında hata ayıklayıcı, kitaplık, QEMU'ya dayalı ahize düzenleyici, belgeler, örnek kod ve öğreticiler bulunur. Şimdi desteklenen geliştirme platformları arasında Linux (herhangi bir modern masaüstü Linux dağıtımı), Mac OS X 10.5.8 Leopard veya üstü, Windows 7 veya üstü çalıştıran bilgisayarlar bulunmaktadır. Mart 2015 itibarıyla, SDK Android'in kendisinde bulunmaz; ancak yazılım geliştirmesi uzmanlaşmış Android uygulamaları kullanarak mümkündür.
IntelliJ IDEA (tüm sürümleri) Android geliştirmeyi tam olarak desteklese de, 2014 sonuna kadar resmen desteklenen tümleşik geliştirme ortamı (IDE), Android Geliştirme Araçları (ADT) eklentisi'ni kullanan Eclipse'di. NetBeans IDE ayrıca bir eklenti aracılığıyla Android geliştirmeyi desteklemektedir. 2015 itibarıyla Google tarafından hazırlanan ve IntelliJ tarafından desteklenen Android Studio resmi ortamdır. Geliştiriciler başkalarını kullanmakta özgürdür; ancak Google, ADT'nin resmi geliştirme ortamı olarak Android Studio'ya odaklanması için 2015'ten bu yana resmi olarak önerilmeyeceğini açıkladı. Ayrıca, geliştiriciler Java ve XML dosyalarını düzenlemek için herhangi bir metin düzenleyiciyi kullanabilir, daha sonra Android uygulamalarını oluşturmak, hata ayıklamak, ekli Android aygıtlarını kontrol etmek için komut satırı araçlarını (Java Geliştirme Kiti ve Apache Ant gereklidir) kullanabilir. Android uygulamaları APK formatında paketlenir ve Android işletim sistemindeki / data / app klasörü altında saklanır (klasöre güvenlik nedeniyle yalnızca kök kullanıcı tarafından erişilebilir). APK paketi, .dex dosyaları (Dalvik yürütülebilir dosyaları, derlenmiş bayt kod dosyaları), kaynak dosyaları vb. içeriyor.


## Android NDK.
C / C++ ile yazılmış kütüphaneler, ARM mimarisi, MIPS mimarisi veya x86 makine diline (veya 64-bit varyantlarına) derlenebilir ve Android Native Development Kit (NDK) kullanılarak yüklenebilir. Bu, yerli kütüphaneler, standart Android Java sınıflarının bir parçası olan System.loadLibrary çağrısı kullanılarak Dalvik altında çalışan Java kodundan çağrılabilir. Komple uygulamalar geleneksel geliştirme araçlarını kullanarak derlenebilir ve kurulabilir. Bununla birlikte, Android dokümantasyonuna göre NDK, yalnızca geliştiricinin C / C ++ programını tercih etmesinden ötürü kullanılmamalıdır.
ADB Hata Ayıklayıcı, Android Emulator altında, ARM, MIPS veya x86 yerel kodunun yüklenip çalıştırılmasına izin veren bir kök kabuk verir. Yerel kod, standart bir PC'de Clang veya GCC kullanılarak derlenebilir. Yerel kodu çalıştırmak, Android'in standart olmayan bir C kütüphanesini (Bionic olarak bilinir) kullanmasıyla karmaşıktır.
Android'in aygıta hakemlik etmek ve bunlara erişimi denetlemek için kullandığı grafik kitaplığına Skia Grafik Kütüphanesi (SGL) adı verilir ve bir açık kaynak lisansı altında serbest bırakılır. Skia, hem Windows API, hem de UNIX için arka uçlara sahiptir, çapraz platform uygulamalarının geliştirilmesine izin verir ve Google Chrome web tarayıcısının temelini oluşturan grafik motorudur. Skia bir NDK API-si değil ve NDK geliştiricileri OpenGL kullanıyor.
NDK projeleri geliştirmek için Gradle ile Android Studio'yu kullanmak mümkündür. Diğer üçüncü parti araçlar Eclipse ve Microsoft Visual Studio'dur.