Archive for March, 2009

Android için Uygulama Geliştirme Ortamı Hazırlamak

open-handset-allianceAndroid işletim sistemi, Google tarafından geliştirilmeye başlanan ve ilk kez HTC‘nin Dream adını verdiği cihaz üzerinde kullanılan bir mobil işletim sistemidir.  Android, geliştiriciler için en cazip mobil uygulama geliştirme paltformu olma yolunda hızla ilerlemektedir. Açık kaynak kodlu olan Android işletim sistemi geliştiriciler için sınırsız özgürlükler tanıyor. Birçok büyük firmanın bu platforma destek vermesi, birer ikişier Android işletim sistemli telefonların hatta dizüstü bilgisayarların Andorid kullanacağına dair haberlerin ortaya çıkması bu platformun cazibesini daha da arttırmaktadır. Android aynı zamanda hızlı ve etkin uygulama geliştirmek için büyük kolaylıklarla donatılmış SDK’sı ve özellikle günümüz taleplerine uygun uygulamalar geliştirmek için sunduğu gelişmiş API’ları ile benzersiz bir platform sunuyor. Bu alışagelmişin dışında API’lara, lokasyon bazlı servisler için, yüz tanıma sistemleri için, barkod okuyucular için sunduğu hazır kütüphaneler örnek olarak verilebilir.

Google, Android geliştiricileri için hazırladığı oldukça geniş bir dökümantasyona sahip, platforma yönelik her türlü bilgi Google’a özgü basitlikle zaten sunulmuş ama yine de benim acelem var diyen  geliştirciler için hızlıca Android uygulama geliştirme platformu nasıl kurulur? yazının kalan bölümünde bunu anlatmaya çalışacağım. Eğer Windows,Linux veya Mac OS X dışında bir işletim sistemi kullanmıyorsanız bu platformu kolayca kurabileceksiniz.

  • Öncelikle Android SDK indirilir ve uygun bir yere açılır.
  • Eğer yoksa bir Java 5 veya üzeri Java SDK‘ya sahip olunmalıdır.
  • Eğer yoksa Eclipse 3.3 veya üzeri bir Eclipse sürümü indirilir. Android development için Eclipse Classic yeterlidir.
  • Eclipse’e ADT (Android Development Tools) pluginleri eklenir:
    • Eclipse’te Help->Software Updates bölümüne gidilir
    • Available Software tabına geçilir
    • Add Site düğmesine tıklanır ve gelen pencerede http://dl-ssl.google.com/android/eclipse/ linki girilir.
    • Yeni eklediğimiz linkin yanındaki kutu işaretlenerek install düğmesine tıklanır ve plugin kurulumu yapılır.

androiddev1

androiddev3

.: Eclipse’e Android pluginleri yüklenir :.

  • Eclipse’e Android SDK’sı gösterilir:
    • Window->Preferences bölümüne gidilir.
    • Listeden Android seçilir.
    • SDK Location bölümünde Android SDK’sını açtığımız klasör seçilir.

androiddev2

.: Eclipse’e Android SDK’sı gösterilir :.

Android geliştirme ortamınız böylece hazırlanmış oldu. Artık Android için uygulama geliştirmeye başlayabilirsiniz. Uygulama geliştirmeye başlamadan önce Java deneyiminiz olsa da Android mobil platformuna özgü bazı kavramları öğrenmenizde fayda var. Bu kavramlara hakim olmak için Android Developer Guide bölümünde yer alan Notepad tutorial ‘ını adım adım gerçekleştirmek çok faydalı olacaktır.

No Comments

iPhone SDK Kısıtlamaları

iphone-sdk-restricted-shackled-limitediPhone için uygulama geliştirme konusunda yeni yatırım yapacakların (özellikle GSM operatörlerine özel iPhone uygulamaları geliştirmeyi düşünenlerin), bu işe girişmeden evvel iPhone SDK’sının kısıtlarını çok iyi bilmeleri gerekiyor. Apple, geliştiricilerin, diğer telefonlarda yapa bildiği bir çok şeyi yapmasına izin vermiyor. Bunun da aslında kabaca 3 ana nedeni bulunuyor:

a) Güvenlik
b) Pil Ömrü
c) Ticari Kaygı

Bu nedenlerden dolayı da Apple’ın SDK’da kısıtladıkları da aşağıdakiler oluyor:

* SIM Kart’a Erişim. Apple hiç bir şekilde geliştiricilerin cihaza takılı SIM karta erişimine izin vermiyor. Dolayısıyla hiç bir uygulama, bırakın kullanıcının telefon numarasını hangi operatörü kullandığını bile anlayamıyor. Benzer şekilde uygulamalar cihazın IMEI numarasına da erişemiyor. Apple bir tek SDK’da, UDID (Unique Data Item Description) şeklinde adlandırılan ve her cihaz için eşsiz (unique) olan numarayı almamıza izin veriyor.

* Telefon, SMS ve Mail Uygulamalarına Erişim. Apple geliştiricilerin Telefon, SMS ve Mail uygulamalarına erişime de izin vermiyor. Dolayısıyla geliştiriciler daha yetenekli bir SMS uygulaması yazamıyor. Eminim bir çok geliştiricinin aklından “Çalarken Reklam Dinlet” konseptinde olduğu gibi “iPhone’da Ararken Reklam İzlet” şeklinde bir telefon uygulaması geliştirmek geçmiştir. Maalesef SDK’nın kısıtlarından dolayı bu mümkün değildir.

* Private veya Unpublished API Kullanımı. Apple yukarıdaki maddelerden saydığımız, SDK’da olmaması nedeniyle kullanılamayan fonksiyonların özel veya henüz yayınlanmamış API’ler üzerinden erişimine de izin vermiyor. Bu şekilde bir kullanım farkettiğinde uygulamanın App Store’a çıkmasına izin vermiyor.

3.3.1 Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs. (iPhone SDK Agreement)

* Diğer Uygulamaların Verilerine Erişim. Apple bir kaç istisna hariç uygulamanın kendisine ayrılan veri alanın haricindeki yerlere ulaşımına, özellikle diğer uygulamaların verilerine ve uygulamaların kendisine erişim izni veriyor. Sadece Fotoğraf Albumü (Photo Album), Rehber (Contact List) gibi kısıtlı sayıdaki noktalara erişim izni veriyor.

3.3.4 An Application may write data on a device only to the Application’s designated container area, except as otherwise specified by Apple. (iPhone SDK Agreement)

* Üçüncü Parti API Kullanımı. Apple geliştiricilerin, başklarının geliştirdiği ve önceden derlediği API’leri, uygulamaları kullanmalarına veya çalıştırmalarına izin vermiyor. Üçüncü partilerin geliştirdiği uygulamaları kullanmanın tek yolu, ilgili uygulamanın kodunu kendi uygulamamız içine gömerek ve Apple’ın API’si ile derleyerek paketlemeden geçiyor.

3.3.2 An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple’s Published APIs and builtin interpreter(s). (iPhone SDK Agreement)

* Uygulamalarda Açık Kaynak API Kullanımı. Apple, iPhone uygulamaları içerisinde yukarıdaki maddeye uygun olacak şekilde Açık Kaynak kütüphanelerine kullanımına bir yasak getirmiyor. Fakat kullanılan kütüphanenin kullanım sözleşmesi, iPhone SDK anlaşması ile çelişiyorsa bu durumda ilgili kütüphanenin kullanımını yasaklıyor.

3.3.14 If Your Application includes any FOSS, You agree to comply with all applicable FOSS licensing terms. You also agree not to use any FOSS in the development of Your Application in such a way that would cause the non-FOSS portions of the SDK to be subject to any FOSS licensing terms or obligations.

* Sistem Dosyalarına ve Ayarlarına Erişim. Apple’ın iPhone uygulamalarının sistem dosyalarına ve ayarlarına erişime izin vermiyor. Örneğin uygulama içerisinden Wi-Fi kapatılıp açılamıyor ya da uygulamanın internete çıkış noktası (Wi-Fi veya EDGE) değiştirilemiyor.

* Cellular Network (GPRS/EDGE/3G) Kullanımı. Apple, VOIP uygulamalarının Operatör Ağları (EDGE/3G) üzerinden veri transferine izin vermiyor. Ayrıca uygulamaların sadece EDGE/3G üzerinden internete çıkmasını da kabul etmiyor. Bu yüzden geliştireceğiniz iPhone uygulamasının mutlaka Wi-Fi üzerinden de internete çıkabilir olması gerekiyor.

3.3.15 If an Application requires or will have access to the cellular network, then additionally such Application:
- Must comply with Apple’s best practices and other guidelines on how Applications should access and use the cellular network;
- Must not in Apple’s reasonable judgment excessively use or unduly burden network capacity or bandwidth;
- May not have Voice over Internet Protocol (VoIP) functionality using the cellular network.
(iPhone SDK Agreement)

* APN Tanımı. Apple, iPhone’da baz istasyonları üzerinden internete çıkış imkanı veren APN tanımının sadece bir tane olmasına izin veriyor. Ayrıca bu apn tanımı üzerinde detaylı bir konfigürasyon yapılamıyor. Bu tanımı da sadece kullanıcının değiştirmesine izin veriyor. Zaten kullanıcılar da bunu internet APN’i olarak kullanıyorlar. Dolayısıyla MMS gibi farklı APN tanımı isteyen uygulamalar çalışamıyor.

* Video Streaming. Apple’ın bu konuda kesin bir yasağı olmamasına rağmen SDK’sında video streaming ile ilgili bir API’nin bulunmamasından dolayı, geliştiricilerin video streaming uygulamaları geliştirmesi çok zor oluyor. Apple gayri resmi açıklamalarında bunun nedenini streaming’in cihazın pil ömrünü çok kısa sürede bitirmesi olarak açıklıyor. Fakat buna rağmen App Store’da sayılı firma tarafından geliştirilmiş “Live Video Streaming” uygulamaları da bulunuyor.

* Human Interfance Guidelines ile Uyumluluk. Apple, iPhone için geliştirilmiş uygulamaların Human Interface Guidelines ismini verdiği dokümana göre geliştirilmesini istiyor. Apple’ın burdaki amacı, iPhone kullanıcı alışkanlığını ve tecrübesini bir seviyeye kadar standart tutup, uygulamayı ilk defa kullanacak birinin zorlanmadan uygulamaya alışması. Uygulamalara App Store’a çıkmadan evvel Apple çalışanları tarafından bizzat test edilip kullanıldığı için Human Interface Guidelines’a aykırı uygulamalar her zaman olmasa da çoğunlukla yakalanıyor.

3.3.5 Applications must comply with the Human Interface Guidelines and other Documentation provided by Apple. (iPhone SDK Agreement)

* Limited Utility. Apple, SDK sözleşmesinde yer almasa da bazı uygulamaları gereksiz ya da saçma bularak “Limited Utility” başlağı altında kabul etmeyebiliyor. Bu yüzden geliştiricilerin “ama SDK sözleşmesinde böyle bir yasak yoktu” diyerekten Apple’a itiraz etme imkanları bulunmuyor.

* Duplicate Functionality. Apple yine SDK anlaşmasında yer almamasına rağmen bazı uygulamaları, sırf kendi uygulamaları ile rekabet ediyor bahanesiyle “Duplicate Functionality” başlığı altında reddediyor.

Yukarıda bir geliştiricinin iPhone uygulaması geliştirirken karşısına çıkabilecek, SDK anlaşmasında yazılı olan veya olmayan kısıtlamaları tecrübelerimiz ışığında paylaşmaya çalıştım. Bu kısıtlamalara takılmak istemeyen geliştiriciler jailbreak’li cihazlar için istedikleri gibi uygulama geliştirebiliyorlar. Fakat bu uygulamalar App Store’da yer almıyor doğal olarak.

Eğer sizin de benzer tecrübeleriniz olursa lütfen yazıya yorum girerek paylaşın, bu yazıya ekleme yapalım.

7 Comments