Düzeltme 2
Son güncelleme: 17 Şubat 2013
Telif hakkı © 2012, Google Inc. Tüm hakları saklıdır.
[email protected]
İçindekiler
2. Kaynaklar
3. Yazılım
3.2. Soft API Uyumluluğu
3.3. Yerel API Uyumluluğu
3.4. Web Uyumluluğu
3.5. API Davranış Uyumluluğu
3.6. API Alan Adları
3.7. Sanal Makine Uyumluluğu
3.8. Kullanıcı Arayüzü Uyumluluğu
3.8.2. Bildirimler
3.8.3. Ara
3.8.4. Tostlar
3.8.5. Temalar
3.8.6. Animasyonlu Duvar Kağıtları
3.8.7. Son Uygulama Görünümü
3.8.8. Giriş Yönetimi Ayarları
3.8.9. Kilit ve Ana Ekran Widget'ları
3.8.10. Kilit Ekranı Medya Uzaktan Kumandası
3.8.11. Düşler
3.10 Erişilebilirlik
3.11 Metin Okuma
5. Multimedya Uyumluluğu
5.2. Video Kodlama
5.3. Video Kod Çözme
5.4. Ses Kaydı
5.5. Ses Gecikmesi
5.6. Ağ Protokolleri
7. Donanım Uyumluluğu
7.1.2. Görüntülü Reklam Ağı Metrikleri
7.1.3. Ekran Yönlendirmesi
7.1.4. 2D ve 3D Grafik Hızlandırması
7.1.5. Eski Uygulama Uyumluluk Modu
7.1.6. Ekran Türleri
7.1.7. Ekran Teknolojisi
7.1.8. Harici Ekranlar
7.2.2. Dokunmatik olmayan gezinme
7.2.3. Gezinme tuşları
7.2.4. Dokunmatik ekran girişi
7.3.2. Manyetometre
7.3.3. GPS
7.3.4. Jiroskop
7.3.5. Barometre
7.3.6. Termometre
7.3.7. Fotometr
7.3.8. Yakınlık Sensörü
7.4.2. IEEE 802.11 (Kablosuz)
7.4.3. Bluetooth
7.4.4. Near Field Communications
7.4.5. Minimum Ağ Kapasitesi
7.6. Bellek ve Depolama
7.7. USB
9. Güvenlik Modeli Uyumluluğu
9.2. UID ve İşlem İzolasyonu
9.3. Dosya Sistemi İzinleri
9.4. Alternatif Yürütme Ortamları
9.5. Çok Kullanıcılı Destek
9.6. Premium SMS Uyarısı
11. Güncelleyebilir Yazılımlar
12. Bizimle İletişime Geçin
Ek A - Bluetooth Test Prosedürü
1. Giriş
Bu belgede, cihazların Android 4.2 ile uyumlu olması için karşılanması gereken şartlar listelenmiştir.
"Zorunlu", "Zorunlu değil", "Gerekli", "Olmalıdır", "Olmamalıdır", "Olması gerekir", "Olmaması gerekir", "Önerilen", "Olabilir" ve "İsteğe bağlı" ifadeleri RFC2119 [Kaynaklar, 1] belgesinde tanımlanan IETF standardına göre kullanılmalıdır.
Bu dokümanda "cihaz uygulayıcısı" veya "uygulayıcı", Android 4.2 çalıştıran bir donanım/yazılım çözümü geliştiren kişi veya kuruluştur. "Cihaz uygulaması" veya "uygulama", bu şekilde geliştirilen donanım/yazılım çözümüdür.
Android 4.2 ile uyumlu olarak kabul edilmek için cihaz uygulamalarının, referansla dahil edilen tüm dokümanlar da dahil olmak üzere bu Uyumluluk Tanımı'nda sunulan şartları karşılaması GEREKİR.
Bu tanım veya 10. Bölüm'de açıklanan yazılım testleri net değilse, belirsizse ya da eksikse mevcut uygulamalarla uyumluluğu sağlamak cihaz uygulayıcının sorumluluğundadır.
Bu nedenle Android Açık Kaynak Projesi [Kaynaklar, 3], Android'in hem referans hem de tercih edilen uygulamasıdır. Cihaz uygulayıcılarının, uygulamalarını mümkün olduğunca Android Açık Kaynak Projesi'nden edinilebilen "yukarı yönlü" kaynak koda dayandırmaları önemle tavsiye edilir. Bazı bileşenler teorik olarak alternatif uygulamalarla değiştirilebilir olsa da yazılım testlerini geçmek önemli ölçüde daha zor olacağından bu uygulamadan kesinlikle kaçınılmalıdır. Uyumluluk Testi Paketi dahil ve hariç olmak üzere standart Android uygulamasıyla davranışsal olarak tam uyumluluğu sağlamak uygulayıcının sorumluluğundadır. Son olarak, belirli bileşen değişimlerinin ve modifikasyonlarının bu dokümanda açıkça yasaklandığını unutmayın.
2. Kaynaklar
- IETF RFC2119 Şart Düzeyleri: http://www.ietf.org/rfc/rfc2119.txt
- Android Uyumluluk Programı'na Genel Bakış: http://source.android.com/docs/compatibility/index.html
- Android Açık Kaynak Projesi: http://source.android.com/
- API tanımları ve dokümanları: http://developer.android.com/reference/packages.html
- Android izinleri referansı: http://developer.android.com/reference/android/Manifest.permission.html
- android.os.Build referansı: http://developer.android.com/reference/android/os/Build.html
- Android 4.2'de izin verilen sürüm dizeleri: http://source.android.com/docs/compatibility/4.2/versions.html
- Renderscript: http://developer.android.com/guide/topics/graphics/renderscript.html
- Donanım Hızlandırma: http://developer.android.com/guide/topics/graphics/hardware-accel.html
- android.webkit.WebView sınıfı: http://developer.android.com/reference/android/webkit/WebView.html
- HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
- HTML5 çevrimdışı özellikleri: http://dev.w3.org/html5/spec/Overview.html#offline
- HTML5 video etiketi: http://dev.w3.org/html5/spec/Overview.html#video
- HTML5/W3C coğrafi konum API'si: http://www.w3.org/TR/geolocation-API/
- HTML5/W3C web veritabanı API'si: http://www.w3.org/TR/webdatabase/
- HTML5/W3C IndexedDB API: http://www.w3.org/TR/IndexedDB/
- Dalvik sanal makinesi spesifikasyonu: Android kaynak kodunda, dalvik/docs adresinde mevcuttur.
- Uygulama widget'ları: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
- Bildirimler: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
- Uygulama Kaynakları: http://code.google.com/android/reference/available-resources.html
- Durum çubuğu simgesi stil kılavuzu: http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
- Search Manager: http://developer.android.com/reference/android/app/SearchManager.html
- Bildirimler: http://developer.android.com/reference/android/widget/Toast.html
- Temalar: http://developer.android.com/guide/topics/ui/themes.html
- R.style sınıfı: http://developer.android.com/reference/android/R.style.html
- Animasyonlu Duvar Kağıtları: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
- Android Cihaz Yönetimi: http://developer.android.com/guide/topics/admin/device-admin.html
- DevicePolicyManager referansı: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
- Android Erişilebilirlik Hizmeti API'leri: http://developer.android.com/reference/android/accessibilityservice/package-summary.html
- Android Erişilebilirlik API'leri: http://developer.android.com/reference/android/view/accessibility/package-summary.html
- Eyes Free projesi: http://code.google.com/p/eyes-free
- Metni Konuştur API'leri: http://developer.android.com/reference/android/speech/tts/package-summary.html
- Referans araç dokümanları (adb, aapt, ddms, systrace için): http://developer.android.com/guide/developing/tools/index.html
- Android apk dosyası açıklaması: http://developer.android.com/guide/topics/fundamentals.html
- Manifest dosyaları: http://developer.android.com/guide/topics/manifest/manifest-intro.html
- Maymun test aracı: https://developer.android.com/studio/test/other-testing-tools/monkey
- Android android.content.pm.PackageManager sınıfı ve Donanım Özellikleri Listesi: http://developer.android.com/reference/android/content/pm/PackageManager.html
- Birden fazla ekranı destekleme: http://developer.android.com/guide/practices/screens_support.html
- android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html
- android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
- android.hardware.SensorEvent: http://developer.android.com/reference/android/hardware/SensorEvent.html
- Bluetooth API: http://developer.android.com/reference/android/bluetooth/package-summary.html
- NDEF Push Protokolü: http://source.android.com/docs/compatibility/ndef-push-protocol.pdf
- MIFARE MF1S503X: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
- MIFARE MF1S703X: http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
- MIFARE MF0ICU1: http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
- MIFARE MF0ICU2: http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf
- MIFARE AN130511: http://www.nxp.com/documents/application_note/AN130511.pdf
- MIFARE AN130411: http://www.nxp.com/documents/application_note/AN130411.pdf
- Kamera yönü API'si: http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
- Kamera: http://developer.android.com/reference/android/hardware/Camera.html
- Android Open Accessories: http://developer.android.com/guide/topics/usb/accessory.html
- USB Host API: http://developer.android.com/guide/topics/usb/host.html
- Android Güvenlik ve İzinler referansı: http://developer.android.com/guide/topics/security/security.html
- Android için Uygulamalar: http://code.google.com/p/apps-for-android
- Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html
- Android Dosya Aktarımı: http://www.android.com/filetransfer
- Android Medya Biçimleri: http://developer.android.com/guide/appendix/media-formats.html
- HTTP Canlı Yayın Taslak Protokolü: http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
- NFC Bağlantı Devre Alma: http://www.nfc-forum.org/specs/spec_list/#conn_handover
- NFC Kullanarak Bluetooth Güvenli Basit Eşleme: http://www.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf
- Wifi Çoklu Yayın API'si: http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
- İşlem Asistanı: http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
- USB Şarj Şartnamesi: http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf
- Android Beam: http://developer.android.com/guide/topics/nfc/nfc.html
- Android USB Ses: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
- Android NFC Paylaşım Ayarları: http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
- Wifi Direct (Wifi P2P): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
- Kilit ve Ana Ekran Widget'ı: http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
- UserManager referansı: http://developer.android.com/reference/android/os/UserManager.html
- Harici Depolama referansı: https://source.android.com/docs/core/storage
- Harici Depolama API'leri: http://developer.android.com/reference/android/os/Environment.html
- SMS kısa kodu: http://tr.wikipedia.org/wiki/Kısa_kod
- Medya Uzaktan Kumanda İstemcisi: http://developer.android.com/reference/android/media/RemoteControlClient.html
- Ekran Yöneticisi: http://developer.android.com/reference/android/hardware/display/DisplayManager.html
- Dreams: http://developer.android.com/reference/android/service/dreams/DreamService.html
- Android Uygulama Geliştirme ile İlgili Ayarlar: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS
Bu kaynakların çoğu doğrudan veya dolaylı olarak Android 4.2 SDK'sından türetilmiştir ve işlevsel olarak bu SDK'nın dokümanlarında yer alan bilgilerle aynıdır. Bu Uyumluluk Tanımlama Belgesi'nin veya Uyumluluk Testi Paketi'nin SDK dokümanlarıyla çeliştiği durumlarda SDK dokümanları yetkili kabul edilir. Yukarıda yer alan referanslarda sağlanan tüm teknik ayrıntılar, bu Uyumluluk Tanımı'nın bir parçası olarak kabul edilir.
3. Yazılım
3.1. Yönetilen API Uyumluluğu
Yönetilen (Dalvik tabanlı) yürütme ortamı, Android uygulamalarının birincil aracıdır. Android uygulama programlama arayüzü (API), yönetilen sanal makine ortamında çalışan uygulamalara sunulan Android platform arayüzleri grubudur. Cihaz uygulamalarında, Android 4.2 SDK'sı tarafından kullanıma sunulan tüm belgelenmiş API'lerin (Kaynaklar, 4) belgelenmiş tüm davranışları da dahil olmak üzere eksiksiz uygulamalar sağlanmalıdır.
Cihaz uygulamalarında, bu Uyumluluk Tanımı'nda özellikle izin verildiği durumlar hariç olmak üzere yönetilen API'ler atlanmamalı, API arayüzleri veya imzaları değiştirilmemeli, belirtilen davranıştan sapılmamalı ya da işlem yapmama işlemleri dahil edilmemelidir.
Bu Uyumluluk Tanımı, Android'in API'leri içeren bazı donanım türlerinin cihaz uygulamaları tarafından atlanmasına izin verir. Bu gibi durumlarda API'ler mevcut olmalı ve makul bir şekilde davranmalıdır. Bu senaryoya özgü şartlar için 7. Bölüm'e bakın.
3.2. Soft API Uyumluluğu
Android, 3.1 Bölümü'ndeki yönetilen API'lere ek olarak, Android uygulamalarının derleme sırasında uygulanamayan Intent'ler, izinler ve benzer özellikleri gibi yalnızca çalışma zamanında önemli bir "yumuşak" API içerir.
3.2.1. İzinler
Cihaz uygulayıcıları, izin referans sayfasında [Kaynaklar, 5] belirtildiği gibi tüm izin sabitlerini desteklemeli ve uygulamalıdır. 10. Bölüm'de Android güvenlik modeliyle ilgili ek şartların listelendiğini unutmayın.
3.2.2. Derleme Parametreleri
Android API'leri, android.os.Build
sınıfında [Resources, 6] mevcut cihazı tanımlamak için tasarlanmış bir dizi sabit içerir. Cihaz uygulamalarında tutarlı ve anlamlı değerler sağlamak için aşağıdaki tabloda, cihaz uygulamalarının UYGUN OLMASI GEREKEN bu değerlerin biçimleriyle ilgili ek kısıtlamalar yer almaktadır.
Parametre | Yorumlar |
android.os.Build.VERSION.RELEASE | Şu anda çalışan Android sisteminin, kullanıcılar tarafından okunabilir biçimdeki sürümü. Bu alanda [Kaynaklar, 7] bölümünde tanımlanan dize değerlerinden biri bulunmalıdır. |
android.os.Build.VERSION.SDK | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 4.2 için bu alanın tam sayı değeri 17 OLMALIDIR. |
android.os.Build.VERSION.SDK_INT | Şu anda çalışan Android sisteminin sürümü (üçüncü taraf uygulama kodunun erişebileceği bir biçimde). Android 4.2 için bu alanın tam sayı değeri 17 OLMALIDIR. |
android.os.Build.VERSION.INCREMENTAL | Cihaz uygulayıcısı tarafından seçilen ve o anda çalışan Android sisteminin belirli derlemesini kullanıcılar tarafından okunabilir biçimde belirten bir değer. Bu değer, son kullanıcılara sunulan farklı derlemeler için yeniden KULLANILAMAZ. Bu alanın tipik bir kullanımı, derlemeyi oluşturmak için hangi derleme numarasının veya kaynak denetimi değişiklik tanımlayıcısının kullanıldığını belirtmektir. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş dize ("") veya null değer OLMAMASI gerekir. |
android.os.Build.BOARD | Cihaz uygulayıcısı tarafından seçilen ve cihaz tarafından kullanılan belirli dahili donanımı kullanıcı tarafından okunabilir biçimde tanımlayan bir değer. Bu alanın olası bir kullanımı, cihazı besleyen kartın belirli bir revizyonunu belirtmektir.
Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.BRAND | Cihazı üreten şirketin, kuruluşun, şahsın vb. adını kullanıcı tarafından okunabilir biçimde tanımlayan, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanın olası bir kullanımı, cihazı satan OEM'i ve/veya operatörü belirtmektir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
|
android.os.Build.CPU_ABI | Yerel kodun talimat setinin adı (CPU türü + ABI kuralı). 3.3 Bölümü: Yerel API Uyumluluğu'na bakın. |
android.os.Build.CPU_ABI2 | Yerel kodun ikinci talimat setinin (CPU türü + ABI kuralı) adı. 3.3 Bölümü: Yerel API Uyumluluğu'na bakın. |
android.os.Build.DEVICE | Cihaz uygulayıcısı tarafından seçilen ve cihazın gövdesinin (bazen "endüstriyel tasarım" olarak da adlandırılır) belirli yapılandırmasını veya düzeltmesini tanımlayan bir değer. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.FINGERPRINT | Bu derlemeyi benzersiz şekilde tanımlayan bir dize. Makul ölçüde okunaklı OLMALIDIR. Şu şablonu İZLEMELİYDİR:
$(BRAND)/$(PRODUCT)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS) Örneğin: acme/mydevice/generic:4.2/JRN53/3359:userdebug/test-keys Parmak izi boşluk karakterleri İÇERMEMELİDİR. Yukarıdaki şablona dahil edilen diğer alanlarda boşluk karakterleri varsa derleme parmak izinde alt çizgi ("_") karakteri gibi başka bir karakterle DEĞİŞTİRİLMESİ GEREKİR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir OLMALIDIR. |
android.os.Build.HARDWARE | Donanımın adı (çekirdek komut satırından veya /proc'ten). Makul ölçüde okunaklı OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.HOST | Derlemenin oluşturulduğu ana makineyi benzersiz şekilde tanımlayan, kullanıcı tarafından okunabilir biçimde bir dize. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
android.os.Build.ID | Cihaz uygulayıcısı tarafından, belirli bir sürümü belirtmek için kullanıcı tarafından okunabilir biçimde seçilen bir tanımlayıcı. Bu alan, android.os.Build.VERSION.INCREMENTAL ile aynı olabilir ancak son kullanıcıların yazılım derlemeleri arasında ayrım yapması için yeterince anlamlı bir değer OLMALIDIR. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir.
|
android.os.Build.MANUFACTURER | Ürünün özgün donanım üreticisinin (OEM) ticari adı. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
android.os.Build.MODEL | Cihaz uygulayıcısı tarafından seçilen ve son kullanıcının bildiği cihaz adını içeren bir değer. Bu, cihazın pazarlandığı ve son kullanıcılara satıldığı adla aynı OLMALIDIR. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Bununla birlikte, alanın boş veya boş dize ("") OLMAMASI ZORUNLUDUR. |
android.os.Build.PRODUCT | Cihaz uygulayıcısı tarafından seçilen ve ürünün geliştirme adını veya kod adını (SKU) içeren bir değer. Kullanıcılar tarafından okunabilir OLMALIDIR ancak son kullanıcıların görüntülemesi için tasarlanmayabilir. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.SERIAL | Varsa donanım seri numarası. Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^([a-zA-Z0-9]{0,20})$" normal ifadesiyle eşleşmelidir. |
android.os.Build.TAGS | Cihaz uygulayıcısı tarafından seçilen ve derlemeyi daha da ayırt edici hale getiren, virgülle ayrılmış bir etiket listesi. Örneğin, "unsigned,debug". Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.TIME | Derlemenin gerçekleştiği zamanın zaman damgasını temsil eden bir değer. |
android.os.Build.TYPE | Derlemenin çalışma zamanı yapılandırmasını belirten, cihaz uygulayıcısı tarafından seçilen bir değer. Bu alanda, üç tipik Android çalışma zamanı yapılandırmasına karşılık gelen değerlerden biri OLMALIDIR: "user", "userdebug" veya "eng". Bu alanın değeri 7 bit ASCII olarak kodlanabilir ve "^[a-zA-Z0-9.,_-]+$" normal ifadesiyle eşleşmelidir. |
android.os.Build.USER | Derlemeyi oluşturan kullanıcının (veya otomatik kullanıcının) adı veya kullanıcı kimliği. Bu alanın biçimiyle ilgili herhangi bir koşul yoktur. Ancak alanın boş veya boş dize ("") OLMAMASI gerekir. |
3.2.3. Intent Uyumluluğu
Cihaz uygulamalarında, aşağıdaki bölümlerde açıklandığı gibi Android'in gevşek bağlantılı Intent sistemi dikkate alınmalıdır. "Uygulanması", cihaz uygulayıcının eşleşen bir Intent filtresi belirten ve belirtilen her Intent kalıbı için doğru davranışı bağlayan ve uygulayan bir Android Activity veya Service sağlaması GEREKTİĞİ anlamına gelir.
3.2.3.1. Temel Uygulama Amaçları
Android yayın öncesi projesi, kişiler, takvim, fotoğraf galerisi, müzik çalar gibi çeşitli temel uygulamaları tanımlar. Cihaz uygulayıcıları bu uygulamaları alternatif sürümlerle DEĞİŞTİREBİLİR.
Ancak bu tür alternatif sürümler, yayın öncesi proje tarafından sağlanan aynı Intent kalıplarını UYGUNLAŞTIRMALIDIR. Örneğin, bir cihazda alternatif bir müzik çalar varsa şarkı seçmek için üçüncü taraf uygulamaları tarafından yayınlanan Intent kalıbını yine de dikkate almalıdır.
Aşağıdaki uygulamalar temel Android sistem uygulamaları olarak kabul edilir:
- Masa Saati
- Tarayıcı
- Takvim
- Kişiler
- Galeri
- GlobalSearch
- Roketatar
- Müzik
- Ayarlar
Temel Android sistem uygulamaları, "herkese açık" olarak kabul edilen çeşitli etkinlik veya hizmet bileşenleri içerir. Yani "android:exported" özelliği bulunmayabilir veya "true" değerine sahip olabilir.
Temel Android sistem uygulamalarından birinde tanımlanan ve "false" değerine sahip bir android:exported özelliği aracılığıyla herkese açık olmayan olarak işaretlenmeyen her etkinlik veya hizmet için cihaz uygulamalarında, temel Android sistem uygulamasıyla aynı Intent filtresi kalıplarını uygulayan aynı türde bir bileşen BULUNMASI GEREKİR.
Diğer bir deyişle, cihaz uygulaması temel Android sistem uygulamalarını DEĞİŞTİREBİLİR. Ancak bu durumda, cihaz uygulaması, değiştirilen her temel Android sistem uygulaması tarafından tanımlanan tüm Intent kalıplarını DESTEKLEMELİDİR.
3.2.3.2. Intent Geçersiz Kılmaları
Android genişletilebilir bir platform olduğundan cihaz uygulamalarında, 3.2.3.2 Bölümü'nde belirtilen her Intent kalıbının üçüncü taraf uygulamaları tarafından geçersiz kılınmasına izin VERİLMELİDİR. Yukarı yönlü Android açık kaynak uygulaması buna varsayılan olarak izin verir. Cihaz uygulayıcıları, sistem uygulamalarının bu Intent kalıplarını kullanımına özel ayrıcalıklar eklememeli veya üçüncü taraf uygulamalarının bu kalıplara bağlanmasını ve bu kalıpların kontrolünü devralmasını engellememelidir. Bu yasak, özellikle kullanıcının tümü aynı Intent kalıbını işleyen birden fazla uygulama arasında seçim yapmasına olanak tanıyan "Seçici" kullanıcı arayüzünün devre dışı bırakılmasını içerir ancak bunlarla sınırlı değildir.
Ancak cihaz uygulamaları, varsayılan etkinlik veri URI için daha spesifik bir filtre sağlıyorsa belirli URI kalıpları (ör. http://play.google.com) için varsayılan etkinlikler sağlayabilir. Örneğin, "http://www.android.com" veri URI'sini belirten bir intent filtresi, "http://" için tarayıcı filtresinden daha spesifiktir. Cihaz uygulamalarında, kullanıcıların intent'ler için varsayılan etkinliği değiştirmesi amacıyla bir kullanıcı arayüzü ZORUNLUDUR.
3.2.3.3. Intent Ad Alanları
Cihaz uygulamalarında, android.* veya com.android.* ad alanındaki bir ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni Intent veya Broadcast Intent kalıplarını dikkate alan Android bileşenleri BULUNMAMALIDIR. Cihaz uygulayıcıları, başka bir kuruluşa ait bir paket alanında ACTION, CATEGORY veya başka bir anahtar dizesi kullanarak yeni Intent veya Broadcast Intent kalıplarını destekleyen Android bileşenleri İÇERMEMELİDİR. Cihaz uygulayıcıları, 3.2.3.1 numaralı bölümde listelenen temel uygulamalar tarafından kullanılan Intent kalıplarından hiçbirini DEĞİŞTİRMELİ veya GENİŞLETMEMELİDİR. Cihaz uygulamaları, kendi kuruluşlarıyla açıkça ilişkili olan ad alanlarının kullanıldığı Intent kalıplarını İÇERİEBİLİR.
Bu yasak, Bölüm 3.6'da Java dil sınıfları için belirtilene benzer.
3.2.3.4. Yayın Amaçları
Üçüncü taraf uygulamaları, donanım veya yazılım ortamındaki değişiklikler hakkında bilgilendirilmek için belirli Intent'leri yayınlamak üzere platformdan yararlanır. Android uyumlu cihazlar, uygun sistem etkinliklerine yanıt olarak herkese açık yayın Intent'lerini YAYINLAMALIDIR. Yayın intent'leri SDK dokümanlarında açıklanmaktadır.
3.3. Yerel API Uyumluluğu
3.3.1 Uygulama İkili Arabirimleri
Dalvik'te çalışan yönetilen kod, uygulama .apk dosyasında uygun cihaz donanım mimarisi için derlenmiş bir ELF .so dosyası olarak sağlanan yerel kodu çağırabilir. Yerel kod, temel işlemci teknolojisine oldukça bağlı olduğundan Android, Android NDK'da docs/CPU-ARCH-ABIS.html
dosyasında bir dizi Uygulama İkili Arabirimi (ABI) tanımlar. Bir cihaz uygulaması bir veya daha fazla tanımlanmış ABI ile uyumluysa aşağıdaki gibi Android NDK ile uyumluluğu UYGULAMALIDIR.
Bir cihaz uygulaması, Android ABI'si desteği içeriyorsa:
- Standart Java Native Interface (JNI) semantikleri kullanılarak yönetilen ortamda çalışan kodun yerel koda çağrılması için destek DAHİL OLMALIDIR.
- Aşağıdaki listedeki her gerekli kitaplıkla kaynak uyumlu (ör. başlık uyumlu) ve ikili uyumlu (ABI için) OLMALIDIR
- Cihaz tarafından desteklenen yerel Uygulama İkili Arabirimi'ni (ABI)
android.os.Build.CPU_ABI
API üzerinden doğru şekilde bildirmelidir. - Yalnızca Android NDK'nın en son sürümünde,
docs/CPU-ARCH-ABIS.txt
dosyasında belgelenen ABI'leri bildirmelidir. - Yukarı yönlü Android açık kaynak projesinde bulunan kaynak kod ve başlık dosyaları kullanılarak OLUŞTURULMALIDIR
Aşağıdaki yerel kod API'leri, yerel kod içeren uygulamalar tarafından KULLANILABİLİR OLMALIDIR:
- libc (C kitaplığı)
- libm (matematik kitaplığı)
- C++ için minimum destek
- JNI arayüzü
- liblog (Android günlük kaydı)
- libz (Zlib sıkıştırması)
- libdl (dinamik bağlayıcı)
- libGLESv1_CM.so (OpenGL ES 1.0)
- libGLESv2.so (OpenGL ES 2.0)
- libEGL.so (yerel OpenGL yüzey yönetimi)
- libjnigraphics.so
- libOpenSLES.so (OpenSL ES 1.0.1 ses desteği)
- libOpenMAXAL.so (OpenMAX AL 1.0.1 desteği)
- libandroid.so (yerel Android etkinliği desteği)
- Aşağıda açıklandığı şekilde OpenGL desteği
Android NDK'nın gelecekteki sürümlerinde ek ABI'ler için destek sunulabileceğini unutmayın. Bir cihaz uygulaması, mevcut bir önceden tanımlanmış ABI ile uyumlu değilse hiçbir ABI için destek bildirmemelidir.
Yerel kod uyumluluğu zordur. Bu nedenle, cihaz uygulayıcılarının uyumluluğu sağlamak için yukarıda listelenen kitaplıkların yayın öncesi uygulamalarını kullanmalarının ÇOK önemle tavsiye edildiği tekrar vurgulanmalıdır.
3.4. Web Uyumluluğu
3.4.1. WebView Uyumluluğu
Android Açık Kaynak uygulaması, android.webkit.WebView
'ü uygulamak için WebKit oluşturma motorunu kullanır. Bir web oluşturma sistemi için kapsamlı bir test paketi geliştirmek mümkün olmadığından cihaz uygulayıcıları, WebView uygulamasında WebKit'in belirli bir yayın öncesi derlemesini KULLANMAK ZORUNDADIR. Özellikle:
- Cihaz uygulamalarının
android.webkit.WebView
uygulamaları, Android 4.2 için yayındaki Android Açık Kaynak ağacındaki 534.30 WebKit derlemesini temel ALMALIDIR. Bu derleme, Web Görünümü için belirli bir işlev ve güvenlik düzeltmeleri grubu içerir. Cihaz uygulayıcıları WebKit uygulamasına özelleştirmeler EKLEYEBİLİR ancak bu tür özelleştirmeler, oluşturma davranışı da dahil olmak üzere Web Görünümü'nün davranışını DEĞİŞTİRMEMELİDİR. - WebView tarafından bildirilen kullanıcı aracısı dizesi şu biçimde OLMALIDIR:
Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL) Build/$(BUILD)) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30
- $(VERSION) dizesinin değeri
android.os.Build.VERSION.RELEASE
değeriyle AYNI OLMALIDIR - $(LOCALE) dizesinin değeri, ülke kodu ve dil için ISO kurallarına uymalı ve cihazın mevcut yapılandırılmış yerel ayarını belirtmelidir.
- $(MODEL) dizesinin değeri
android.os.Build.MODEL
değeriyle AYNI OLMALIDIR. - $(BUILD) dizesinin değeri
android.os.Build.ID
değeriyle AYNI OLMALIDIR - Cihaz uygulamaları, kullanıcı aracısı dizesinde
Mobile
öğesini EKSİLTİREBİLİR.
- $(VERSION) dizesinin değeri
WebView bileşeni, HTML5'in mümkün olduğunca büyük bir kısmını [Kaynaklar, 11] desteklemelidir. Cihaz uygulamalarının, WebView'de HTML5 ile ilişkili aşağıdaki API'lerin her birini en azından desteklemesi GEREKİR:
- application cache/offline operation [Resources, 12]
- <video> etiketi [Kaynaklar, 13]
- coğrafi konum [Kaynaklar, 14]
Ayrıca, cihaz uygulamaları HTML5/W3C webstorage API'yi [Kaynaklar, 15] destekleMELİ ve HTML5/W3C IndexedDB API'yi [Kaynaklar, 16] DESTEKLEMELİDİR. Web geliştirme standartları kuruluşları web depolama yerine IndexedDB'i tercih etmeye başladığından, IndexedDB'in Android'in gelecekteki bir sürümünde zorunlu bir bileşen haline gelmesinin beklendiğini unutmayın.
Tüm JavaScript API'leri gibi HTML5 API'leri de, geliştirici tarafından normal Android API'leri aracılığıyla açıkça etkinleştirilmediği sürece WebView'de varsayılan olarak devre dışı bırakılmalıdır.
3.4.2. Tarayıcı Uyumluluğu
Cihaz uygulamalarında, genel kullanıcıların web'de gezinmesi için bağımsız bir tarayıcı uygulaması BULUNMASI GEREKİR. Bağımsız tarayıcı, WebKit dışında bir tarayıcı teknolojisine dayalı OLABİLİR. Ancak alternatif bir Tarayıcı uygulaması kullanılsa bile üçüncü taraf uygulamalarına sağlanan android.webkit.WebView
bileşeni, 3.4.1 numaralı bölümde açıklandığı gibi WebKit'e dayalı OLMALIDIR.
Uygulamalar, bağımsız tarayıcı uygulamasında özel bir kullanıcı aracısı dizesi GÖNDERMEYEBİLİR.
Bağımsız Tarayıcı uygulaması (üst akış WebKit Tarayıcı uygulamasına veya üçüncü taraf bir değişime dayalı olsun), HTML5'in mümkün olduğunca büyük bir kısmı için destek İÇERMELİDİR [Kaynaklar, 11]. Cihaz uygulamalarının, HTML5 ile ilişkili aşağıdaki API'lerin her birini en azından desteklemesi GEREKİR:
- application cache/offline operation [Resources, 12]
- <video> etiketi [Kaynaklar, 13]
- coğrafi konum [Kaynaklar, 14]
Ayrıca, cihaz uygulamaları HTML5/W3C webstorage API'yi [