Uyumluluk çerçevesi araçları

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

Ş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:

  1. Geliştirici seçenekleri henüz etkinleştirilmemişse bunları etkinleştirin.
  2. Cihazınızın Ayarlar uygulamasını açın ve Sistem > Gelişmiş > Geliştirici seçenekleri > Uygulama Uyumluluğu Değişiklikleri.
  3. 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çin targetSDKVersion.

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şiklik targetSDKVersion 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 hem true veya false (uygulamanın targetSDKVersion ş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:

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 adresi targetSDKVersion 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şiklikler

Uygulamanı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ın targetSDKVersion 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:

  1. Geliştirici seçenekleri henüz etkinleştirilmemişse bunları etkinleştirin.
  2. Cihazınızın Ayarlar uygulamasını açın ve Sistem > Gelişmiş > Geliştirici seçenekleri > Uygulama Uyumluluğu Değişiklikleri.
  3. Listeden uygulamanızı seçin.
  4. Değişiklikler listesinde, açmak veya kapatmak istediğiniz değişikliği bulun. ve anahtara dokunun.

    Açılıp kapatılabilen değişikliklerin listesi

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