Android 11, test ve kontrol için yeni geliştirici araçlarını kullanıma sundu. Android'in yeni sürümlerindeki davranış değişikliklerine göre uygulamanızda hata ayıklama platformu. Bu araçlar, uygulamanızın izin verdiği uyumluluk çerçevesinin geliştiriciler, kötü amaçlı değişiklikleri geliştiricilerini kullanarak seçenekler veya ADB'dir. En yeni kullanıcıları hedeflemeye hazırlanırken bu esnekliği kullanın kararlı API sürümüne ve uygulamanızı Android Studio'nun önizleme sürümüyle bir sonraki Android sürümü hakkında daha fazla bilgi edinin.
Uyumluluk çerçevesi araçlarını kullandığınızda Android platformu
dahili mantığını otomatik olarak uyarlar. Böylece, manuel olarak
targetSDKVersion
kullanın veya uygulamanızı temel testleri gerçekleştirmek için yeniden derleyin. Çünkü
tek tek değiştirilebilir, bunlardan birini diğerlerinden ayırıp test edebilir ve hata ayıklayabilirsiniz
tek bir değişikliği devre dışı bırakabilir veya soruna neden olan bir
önce başka bir şeyi test etmeniz gerekir.
Hangi değişikliklerin etkinleştirildiğini belirleme
Bir davranış değişikliği etkinleştirildiğinde, uygulamanızın bu değişiklikten etkilenen platform API'leridir. Web sitenizdeki belirli değişiklikler geliştirici seçenekleri, logcat veya ADB komutları kullanılarak etkinleştirilir.
Geliştirici seçeneklerini kullanarak etkin değişiklikleri tanımlama
![](https://developer.android.com/static/images/guide/app-compatibility/appcompat-dev-options.png?authuser=0000&hl=tr)
Şekil 1. Uygulama uyumluluğu değişiklikleri Geliştirici seçenekleri'ndeki bu ekranı tıklayın.
Şu menüde hangi değişikliklerin etkin olduğunu görebilir ve bu değişiklikleri açıp kapatabilirsiniz cihaz geliştirici seçeneklerini belirleyebilir. Bu seçeneklere erişmek için şu adımları izleyin:
- Geliştirici seçenekleri henüz etkinleştirilmemişse bunları etkinleştirin.
- Cihazınızın Ayarlar uygulamasını açın ve Sistem > Gelişmiş > Geliştirici seçenekleri > Uygulama Uyumluluğu Değişiklikleri.
Listeden uygulamanızı seçin.
Her davranış değişikliği genellikle aşağıdaki iki kategoriden birine aittir:
Güncellemeden bağımsız olarak o Android sürümünde çalışan tüm uygulamaları etkileyen değişiklikler uygulamanın
targetSdkVersion
.Bu değişiklikler, uyumluluk çerçevesinde varsayılan olarak etkindir ve kullanıcı arayüzünde Varsayılan Etkin Değişiklikler bölümünde listelenir.
Yalnızca belirli Android sürümlerini hedefleyen uygulamaları etkileyen değişiklikler. Çünkü bu değişiklikler yalnızca uygulamanızın belirli bir sürümünü hedefleyen Android'de, son teknoloji ürünleri kullanan
targetSDKVersion
.Bu değişiklikler, uygulaması listelenen API sürümünden daha yüksek bir sürümü hedefliyor. Örneğin,
targetSDKVersion
tarafından denetlenen bir davranış değişikliği Android 13 (API düzeyi 33), kullanıcı arayüzünde targetSdkVersion >=33 için etkinleştirildi. Android'in bazı eski sürümlerinde, bu bölümün başlığı "API_LEVEL SDK'sından Sonra Etkinleştirildi" .
Şekil 1'de Varsayılan Devre Dışı Değişiklikler adlı bir bölüm de görürsünüz. Bu bölümde yer alan değişiklikler çeşitli amaçlara hizmet edebilir. Şu tarihten önce: bu değişiklikleri etkinleştirdiğinizde, uyumluluk çerçeve listesi oluşturun.
Logcat'i kullanarak etkin değişiklikleri tanımlama
Her davranış değişikliği için, uygulamanız işlemi sırasında uygulamanız çağrısından etkilenen API'yi çağırırsa sistem, aşağıdakine benzer bir logcat mesajı üretir:
D CompatibilityChangeReporter: Compat change id reported: 194833441; UID 10265; state: ENABLED
Her logcat mesajı aşağıdaki bilgileri içerir:
- Kimliği Değiştir
- Uygulamayı etkileyen değişikliği gösterir. Bu değer,
Uygulama Uyumluluğu Değişiklikleri ekranında listelenen davranış değişiklikleri
(Şekil 1'e bakın). Bu örnekte,
194833441
,NOTIFICATION_PERM_CHANGE_ID
. - Benzersiz Kimlik
- Hangi uygulamanın değişiklikten etkileneceğini gösterir.
- Eyalet
Değişikliğin uygulamayı etkileyip etkilemediğini belirtir.
Eyalet, şu değerlerden biri olabilir:
Eyalet Anlamı ENABLED
Bu değişiklik etkinleştirilir ve aşağıdaki durumlarda uygulamanın davranışını etkiler Uygulama, değiştirilen API'leri kullanır. DISABLED
Değişiklik devre dışı bırakılır ve uygulamayı etkilemez.
Not: Bu değişiklik, uygulamanın
targetSDKVersion
gereken eşiğin altında. uygulama şu değeri artırdığında varsayılan olarak etkinleştirilir: Daha yüksek bir sürümü hedeflemek içintargetSDKVersion
.LOGGED
Değişiklik, uyumluluk çerçevesi üzerinden günlüğe kaydedilmektedir ancak bu ayar açılmıyor veya kapatılamıyor. Bu değişikliği açıp kapatmak mümkün olmasa da yine de uygulamanızın davranışını etkileyebilir. Şu açıklamaya bakın: için uyumluluk çerçevesi listesindeki ilgili Android sürümü hakkında daha fazla bilgi edinin. Çoğu durumda bu deneme amaçlıdır ve yoksayılabilir.
ADB kullanarak etkin değişiklikleri tanımlama
Yapılan değişikliklerin tamamını görmek için aşağıdaki ADB komutunu çalıştırın (her ikisi de: ve devre dışı bırakıldı):
adb shell dumpsys platform_compat
Çıkışta her değişiklik için aşağıdaki bilgiler listelenir:
- Kimliği Değiştir
- Bu davranış değişikliği için benzersiz bir tanımlayıcı. Örneğin,
194833441
. - Ad
- Bu davranış değişikliğinin adı. Örneğin,
NOTIFICATION_PERM_CHANGE_ID
. - targetSDKVersion ölçütleri
Değişikliğin hangi
targetSDKVersion
tarafından (varsa) denetlendiği.Örneğin, bu değişiklik yalnızca SDK sürümünü hedefleyen uygulamalar için etkinleştirilirse 33 veya üzeri bir değerse
enableAfterTargetSdk=32
çıkışıdır. DeğişikliktargetSDKVersion
tarafından kontrollü,enableAfterTargetSdk=0
çıktı.- Paket geçersiz kılmaları
Değişikliğin varsayılan durumunun olduğu her paketin adı (etkin veya devre dışı) geçersiz kılındı.
Örneğin, bu varsayılan olarak etkinleştirilen bir değişiklikse uygulamanızın geliştirici seçenekleri veya ADB'dir. Bu durumda çıkış şu şekilde olur:
packageOverrides={com.my.package=false}
targetSDKVersion
tarafından denetlenen değişiklikler etkinleştirilebilir veya Devre dışıdır. Bu nedenle, paketler listesi hemtrue
veyafalse
(uygulamanıntargetSDKVersion
şartlarına bağlı olarak). Örneğin, örnek:packageOverrides={com.my.package=true, com.another.package=false}
Belirli değişiklikler hakkında daha fazla bilgi edinin.
Uyumluluk çerçevesindeki davranış değişikliklerinin tam listesi aşağıdaki gibi dahil edilmiştir: bölümünü inceleyin. Aşağıdaki bağlantılara bakın: uygulamanızı test ettiğiniz Android sürümüne bağlı olarak daha fazla bilgi şunun için:
- Android 15 (API düzeyi 35)
- Android 14 (API düzeyi 34)
- Android 13 (API düzeyi 33)
- Android 12 (API düzeyleri 31 ve 32)
- Android 11 (API düzeyi 30)
Değişiklikler ne zaman değiştirilir?
Uyumluluk çerçevesinin ana amacı, son 30 güne ait yeni Android sürümleriyle uygulamanızı test ederken esneklik ve esneklik. Bu bölümünde, ne zaman geçiş yapacağınızı belirlemek için kullanabileceğiniz bazı stratejiler, değişiklikleri açık veya kapalı hale getirebilirsiniz.
Değişiklikler ne zaman kapatılır?
Değişikliklerin ne zaman devre dışı bırakılacağına karar vermek genellikle değişikliğin
targetSDKVersion
tarafından kapılı olup olmamalı.
- Değişiklikler tüm uygulamalar için etkinleştirildi
Tüm uygulamaları etkileyen değişiklikleri etkinleştirmek için: uygulamanızın yapısından bağımsız olarak belirli bir platform sürümü için varsayılan
targetSDKVersion
sayesinde uygulamanızın o platformdaki uygulama sürümündedir.Örneğin, Android 14'ü (API düzeyi 34) hedeflemeye hazırlanıyorsanız uygulamanızı çalışan bir cihaza yükleyerek Android 14'ü kullanın ve tipik testinizi kullanarak uygulamanızı test edin iş akışlarını takip eder. Uygulamanızda sorunlarla karşılaşılırsa diğer sorunları test etmeye devam edebilmeniz için soruna neden olur.
Bu değişiklikler,
targetSDKVersion
ürününden bağımsız olarak tüm uygulamaları etkileyebileceği için, genellikle değişikliklerden önce uygulamanızı bu değişikliklere göre test etmeniz ve güncellemeniz gerekir Bu e-posta adresitargetSDKVersion
tarafından korunmaktadır. Bu sayede, kullanıcılarınızın Cihazını yeni bir sürüme güncellediğinde uygulama deneyimi olumsuz etkilenmez. platform sürümü gereklidir.Bu değişikliklere öncelik veremediğiniz için değişiklikleri test etmeye öncelik vermelisiniz. Android'in herkese açık sürüm derlemesi kullanılırken bu değişiklikler devre dışı bırakılacak. İdeal olarak, her sürümü için bu değişiklikleri test etmeniz Android'de söz konusu sürüm önizlemedeyken.
targetSDKVersion
tarafından denetlenen değişikliklerUygulamanız belirli bir
targetSDKVersion
, bu sürüm tarafından korunan tüm değişiklikler etkinleştirilir varsayılan olarak. Bu nedenle, uygulamanızıntargetSDKVersion
anahtarını yeni bir sürümünüzle birlikte, uygulamanız tek seferde birçok yeni değişiklikten etkilenmeye başlayacaktır.Uygulamanız bu değişikliklerden birden fazlasından etkilenebileceği için test ederken bu değişikliklerden bazılarını tek tek kapatmanız gerekebilir hata ayıklamanızı sağlayabilir.
Değişiklikler ne zaman etkinleştirilir?
Belirli bir targetSDKVersion
tarafından kontrol edilen değişiklikler varsayılan olarak devre dışıdır
Bir uygulama kapılı sürümden daha düşük bir SDK sürümünü hedeflediğinde.
Genellikle, yeni bir targetSdkVersion
hedefleme türünü hedeflemeye hazırlanırken yararlanabileceğiniz bir liste
uygulamanızı test edip hata ayıklamanız gereken davranış
değişikliklerinden bahsedeceğiz.
Örneğin, uygulamanızı bir dizi platform değişikliğine karşı test ediyor
önümüzdeki targetSdkVersion
içinde. Geliştirici seçeneklerini veya ADB komutlarını kullanarak
anahtar kelimelerinizi değiştirmek yerine şifreli her bir değişikliği tek tek etkinleştirebilir
ve her değişikliği tek seferde etkinleştirmenizi sağlar. Bu ek kontrol, kullanıcıların
değişiklikleri izole olarak test eder ve
en iyi şekilde yararlanabilirsiniz.
Bir değişikliği etkinleştirdikten sonra, normal test iş akışları. Sorunlarla karşılaşırsanız şunları belirlemeye yardımcı olmak için günlüklerinizi kontrol edin: bir sonucu veya işaretidir. Sorunun nedeninin bir etkin platform değişikliği varsa, bu değişikliği devre dışı bırakmayı deneyin ve ardından bu değişikliği alanında olması gerekir.
Değişiklikleri açma veya kapatma
Uyumluluk çerçevesi geliştirici seçeneklerini veya ADB komutlarını kullanın. Değişiklikleri açmak veya kapatmak, uygulamanızın kilitlenmesini veya önemli güvenlik değişikliklerini devre dışı bırakmayı Değişiklikleri ne zaman değiştirebileceğinize dair kısıtlamalar.
Geliştirici seçeneklerini kullanarak değişiklikleri açma/kapatma
Değişiklikleri etkinleştirmek veya devre dışı bırakmak için geliştirici seçeneklerini kullanın. Geliştiriciyi bulmak için şu adımları uygulayın:
- Geliştirici seçenekleri henüz etkinleştirilmemişse bunları etkinleştirin.
- Cihazınızın Ayarlar uygulamasını açın ve Sistem > Gelişmiş > Geliştirici seçenekleri > Uygulama Uyumluluğu Değişiklikleri.
- Listeden uygulamanızı seçin.
Değişiklikler listesinde, açmak veya kapatmak istediğiniz değişikliği bulun. ve anahtara dokunun.
ADB kullanarak değişiklikleri aç/kapat
ADB'yi kullanarak bir değişikliği açmak veya kapatmak için aşağıdaki komutlardan birini çalıştırın:
adb shell am compat enable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
adb shell am compat disable (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
CHANGE_ID
(örneğin, 194833441
) veya
CHANGE_NAME
(örneğin,
NOTIFICATION_PERM_CHANGE_ID
) ve uygulamanızın
PACKAGE_NAME
.
Bir değişikliği varsayılan değerlerine sıfırlamak için aşağıdaki komutu da kullanabilirsiniz durumunda, ADB veya geliştirici seçeneklerini kullanarak ayarladığınız geçersiz kılmaları kaldırın:
adb shell am compat reset (CHANGE_ID|CHANGE_NAME) PACKAGE_NAME
Değişikliklerle ilgili kısıtlamalar
Varsayılan olarak her bir davranış değişikliği etkinleştirilir veya devre dışı bırakılır. Değişiklik
varsayılan olarak etkin olup tüm uygulamaları etkiler. Diğer değişiklikler
targetSdkVersion
Bu değişiklikler, bir uygulama
veya daha yüksek bir sürüme sahip olan bu uygulamalar, aşağıdaki durumlarda varsayılan olarak devre dışıdır:
Geçişli sürümden daha düşük bir SDK sürümünü hedeflemek. Bir değişikliği açtığınızda
varsayılan durumunu geçersiz kılarsınız.
Uyumluluk çerçevesinin kötü amaçlı olarak kullanılmasını önlemek için değişiklikleri ne zaman değiştirebileceğinize ilişkin bazı kısıtlamalar. Geçiş yapıp yapamayacağınız değişiklikler, değişikliğin türüne, uygulamanızın hata ayıklamaya uygun olup olmadığına bağlıdır ve cihazınızda çalışan derleme türünü belirtin. Aşağıdaki tabloda farklı türde değişiklikler yapabilirsiniz:
Derleme türü | Hata ayıklanamayan uygulama | Hata ayıklanabilir uygulama | |
---|---|---|---|
Tüm değişiklikler | targetSDKVersion tarafından kontrol edilen değişiklikler | Diğer tüm değişiklikler | |
Geliştirici Önizlemesi veya Beta derlemesi | Geçiş yapılamıyor | Geçiş yapabilir | Geçiş yapabilir |
Herkese açık kullanıcı derlemesi | Geçiş yapılamıyor | Geçiş yapabilir | Geçiş yapılamıyor |