SDK Çalışma Zamanına genel bakış

Geri bildirim gönderin

Android platformu, uygulamayı korumalı alana alma uygulama kodu için süreç sınırları boyunca sağlam yürütme ve güvenlik sınırları. Uygulamaların genellikle üçüncü taraf kodu içermesi SDK'ları kullanarak ortaya koyabilir. Bu yeniden kullanım, uygulamayı etkinleştirir bir yandan uygulamalarını farklılaştırmaya odaklarken diğer yandan da konusunda uzmanlaşmış bir şekilde, uygulamayı kolayca yapabileceklerinin ötesine öğreniyorlar.

Çoğu işletim sisteminde olduğu gibi, Android SDK'ları da ana makine uygulamasının ana makine uygulamasının sahip olduğu ayrıcalıkları ve izinleri devralmak aynı zamanda ana makine uygulamasının hafızasına ve depolama alanına da erişebilir. Bu mimari, SDK'ların ve uygulamaların esnek bir şekilde entegre edilmesine olanak tanırken kullanıcı verilerinin açıklanması ve paylaşılması. Ayrıca, uygulama geliştiriciler üçüncü taraf SDK'larının işlevselliğinin ve verilerinin kapsamını tam olarak bilmelidir, bu da veri toplama ve veri toplama sürecini hesaba katmayı zorlaştırıyor. ve en iyi uygulamaları paylaşabiliyor.

Android 13'e üçüncü tarafların izin verdiği yeni bir platform özelliği ekledik. SDK Çalışma Zamanı adı verilen özel bir çalışma zamanı ortamında çalıştırılacak SDK'lar. İlgili içeriği oluşturmak için kullanılan SDK Çalışma Zamanı, Kullanıcı verilerinin toplanması ve paylaşılması:

  • Değiştirilmiş yürütme ortamı
  • SDK'lar için iyi tanımlanmış izinler ve veri erişim hakları
ziyaret edin.

Mobil uygulama reklamcılığı topluluğundan şu konularla ilgili geri bildirim istiyoruz: bu tasarımı kullanalım. Ayrıca daha geniş geliştirici topluluğumuzdan SDK Çalışma Zamanı'nın gelecekteki iterasyonlarını şekillendirmeye yardımcı olacak ve kullanım alanları görmek.

Hedefler

Bu teklifle aşağıdaki hedeflere ulaşılması amaçlanmaktadır:

  • Kullanıcıların uygulama verilerine üçüncü taraflarca açıkça erişilmesini ve bunların paylaşılmasını azaltma İşlem izolasyonu ve iyi tanımlanmış API ve veri erişim denetimine sahip SDK'lar. İşlem izolasyonu hakkında daha fazla bilgiyi ayrı bir bölümde bulabilirsiniz bu doküman için de geçerli.
  • Kullanıcıların uygulama kullanımının üçüncü taraf SDK'lar tarafından açıklanmayan takibini azaltmak için benzersiz ve kalıcı tanımlayıcılara SDK'ların erişmesini sınırlama.
  • SDK güncellemelerinin uygulamalara dağıtılmasını güvenli bir şekilde hızlandırmak için hem de son kullanıcıların yükünü hafifletir. Önerilen teklif hakkında daha fazla bilgi güvenilir SDK dağıtımı modeli başka bir bölümde bu doküman için de geçerli.
  • Uygulama geliştiricilerin, veri erişimi ve paylaşım yöntemlerini daha iyi hesaba katmasına yardımcı olma en iyi yoludur.
  • SDK geliştiricilerin, JNI kodu gibi güvenli olmayan belirli dil yapıları
  • Reklam SDK'larının geçersiz trafiği ve reklam sahtekarlığını tam anlamıyla algılayıp önlemesine yardımcı olun uzaktan görüntüler üzerinde kontrol sahibi olun.
  • Uygulama ve SDK geliştiricilerinin gereksiz etkisini mümkün olduğunca en aza indirin.

SDK'lar ayrı bir süreçte yürütülür

Teklif edilen SDK Çalışma Zamanı, geri kalanını çalışma zamanı etkin (RE) SDK'lar olarak değiştirerek uygulama için ayrı bir işlem. Platform iki yönlü iletişimi kolaylaştırıyor uygulama süreci ile SDK Çalışma Zamanı arasındaki iletişimi sağlar. Bkz. iletişim bölümünü inceleyin. RE dışı SDK'lar şu anda olduğu gibi uygulamanın sürecinde kalmalarını sağlar. Aşağıdaki diyagramlarda şu değişiklikler var:

Uygulama işlemini çalıştıran her şeyi gösteren diyagramdan önce
SDK Çalışma Zamanı'na eklenmeden önce, SDK çağırma kodu ve ilgili SDK'lardan gelen çağrıları alan SDK'lar bunların hepsi uygulama işleminde bulunur.

Uygulama süreci ile SDK çalışma zamanı süreci arasında bölünmüş işlemleri gösteren diyagramdan sonra
SDK Çalışma Zamanı'na eklendikten sonra SDK çağırma kodu, ön plan sürecinde, SDK çağrı kodu orijinal kodda SDK arayüzleri Bu arayüzler daha sonra bir süreç sınırını geçer ve SDK'ların kendisini çağırmak için SDK Çalışma Zamanı işlemi.

SDK'lar için yeni güvenilir dağıtım modeli

SDK'nın uygulamadan ayrılmasının önerdiği bu ayrım, başka bir ayırma kavramını teşvik eder: bir diğer uygulama da SDK ve uygulama dağıtımıdır. Teklifimiz güvenilir bir dağıtım gerektiriyor doğru SDK'ların yüklenmesini sağlamak için uygulama ve yükleme mekanizmasını uygulamanın SDK Çalışma Zamanı. Bu, kullanıcıların ve uygulama geliştiricilerin geçersiz reklamlardan korunmasına yardımcı olur Uygulama mağazalarının yükü önemli ölçüde azaltmasını sağlarken SDK'ların yüklenmesi yüzde 113'lük muazzam bir artış elde etti.

SDK'ların artık statik olarak bağlı ve uygulamanızın uygulama mağazasına yüklenmeden önce kullanır. Aşağıdakiler şu işlem gerçekleşir:

  1. SDK geliştiricileri, kendi sürümlerindeki SDK'larını ayrı ayrı uygulama mağazalarına yükleyebilir öğrenmeye çalışıyor.
  2. Uygulama geliştiriciler, SDK bağımlılıklarını SDK'nın gerçek sürümünü içermeyen bir uygulama sürümü oluşturma, derleme ve yükleme ve bildirmeyi konuştuk.
  3. Bir kullanıcı bu uygulamayı indirdiğinde, yükleme işleminde için belirtilen SDK bağımlılıklarını tespit edip bunları uygulama mağazasından indirmelidir.

Bu yeni dağıtım mekanizması, SDK geliştiricilerinin (ya da API'lerde veya anlamlarında herhangi bir değişiklik yapılmıyorsa) SDK'lar ve uygulama geliştiricilerin müdahalesine gerek kalmadan cihazlara dağıtılır. Bu kalıcı SDK değişiklikleri, uygulama geliştiricilerin uygulamalarını ya da son kullanıcıların uygulamalarını güncellemesini beklerken Zarar veren değişiklikler yine de uygulama geliştiriciler tarafından güncellenmesi gerekir, ancak SDK geliştiricileri en son değişiklikleri ve sorunları daha hızlı ve daha tutarlı şekilde daha fazla kullanıcıya destek oluyor, ideal olarak da sürüm desteğini en aza indiriyoruz.

Aşağıdaki diyagramlarda, SDK dağıtımında önerilen değişiklikler gösterilmektedir:

Diyagramdan önce
Geliştiriciler, SDK Çalışma Zamanı kullanıma sunulmadan önce izin veriyor.
ziyaret edin.
Diyagramdan sonra
SDK Çalışma Zamanı kullanıma sunulduktan sonra geliştiriciler, SDK'larını bir uygulama mağazasında yayınlamak için SDK yükleme kullanıcı arayüzünü kullanırlar. Daha sonra uygulama mağazası, SDK ile birlikte uygulamaların dağıtımını yönetir. son kullanıcı cihazlarına bağlılıklarını sağlayabilirsiniz.

SDK'ların ve uygulamaların oluşturulma, çalıştırılma ve dağıtılma biçiminde yapılan değişiklikler

Bu, esnek SDK Çalışma Zamanı ve dağıtımı için ilk tekliftir teknolojisidir. Aşağıdaki bölümlerde, reklam grubu düzeyinde aşağıdaki geniş kategorileri kapsar:

  • Erişim: İzinler, bellek, depolama alanı
  • Yürütme: Diller, çalışma zamanı değişiklikleri, yaşam döngüsü, medya oluşturma
  • İletişimler: Uygulamadan SDK'ya ve SDK'dan SDK'ya
  • Geliştirme: bu model
  • Dağıtım: Dağıtım, güncelleme ve Android, uygulamalar ve SDK sürümleri genelinde geri çek

Bu dokümanda, sık sorulan soruların yanıtlanmasına yardımcı olacak bir SSS de yer almaktadır.

Bu bir başlangıç tasarım teklifidir ve bunun anlamlı olabileceğinin ekosistemin bazı üyeleri için değişiklik yaratır. Bu nedenle, ve geri bildiriminizi sorun ile İzleyici.

Erişim

Bir sistemin gizliliğini yönetme, farklı tarafların birbirlerine karşı nasıl farklı kaynaklara erişebilirsiniz. Sunduğumuz gizlilik değer teklifimizi karşılamak için Uygulamalara, SDK'lara ve kullanıcı verilerine erişim modeli ilkesini uygulayarak potansiyel hassas verilerdir.

SDK izinleri

Ayrı bir işlem olarak, SDK Çalışma Zamanının iyi tanımlanmış kendi izinleri kullanın. Dayandığı karakter reklamlarla ilgili SDK'lar tarafından kullanılan izinlerle ilgili bir ön araştırma SDK'daki SDK'lar için aşağıdaki izinlere erişim önererek Varsayılan olarak çalışma zamanı:

  • INTERNET: Bir web hizmetiyle iletişim kurabilmek için internete erişim.
  • ACCESS_NETWORK_STATE: Ağlarla ilgili bilgilere erişin.
  • READ_BASIC_PHONE_STATE: Telefon durumuyla ilgili bilgilere (ör. mobil ağ türü) erişin.
  • Temel gizlilik özellikleri sunan gizliliği korumaya yönelik API'lere erişim izinleri ve uygulamalar arası tanımlayıcılara erişmeye gerek kalmadan reklamcılık özelliklerinden yararlanabilmenizi sağlar.
  • AD_ID: Reklam kimliği isteme imkanı. Bu, uygulamanın bu izne erişebilir.

Şu anda ek izinlerin yetkilendirilip yetkilendirilmeyeceğini ve nasıl yetkilendirileceğini Bu da son kullanıcılar üzerindeki etkisinin hem gizlilik hem de perspektifinden bakalım. Biz geri bildirim isteyin bu izin grubunun karşılayamadığı kullanım alanlarına da uyar.

Bellek

SDK Çalışma Zamanı'nın kendi izole bellek alanı olur çoğu zaman daha iyi hale gelir. Bu yapı varsayılan olarak uygulamanın bellek alanına SDK'sı erişimi varsa uygulama da benzer şekilde SDK'nın bellek alanına erişebilir. Bu varsayılan değeri korumanızı öneririz. ilkesine uygun şekilde hareket etmesi gerekir.

Depolama

Bu teklif, SDK'ların kendi uygulamaları için depolama alanına erişme Google Analytics 4'ü kullanarak uygulamalar arası ve işlemler arası izlemeyi kalıcı depolama alanıdır. Depolama alanının bugün erişildi:

  • Uygulamalar kendi SDK depolama alanlarına doğrudan erişemez. Bunun tersi de geçerlidir.
  • SDK'lar, cihazın harici depolama alanına erişemez.
  • Her SDK Çalışma Zamanı'nda tüm SDK'lar tarafından kullanılabilen depolama alanı yalnızca belirli bir SDK'ya özel depolama alanı oluşturabilirsiniz.

Mevcut depolama modelinde olduğu gibi, depolama alanında da rastgele sınırlar yoktur. boyutu. SDK'lar, öğeleri önbelleğe almak için depolama alanını kullanabilir. Bu depolama alanı düzenli aralıklarla SDK etkin olarak çalışmadığında temizlenir.

Yürütme

Uygulamalar, SDK'lar ve kullanıcılar arasında gizli bir sistem sağlamak için yürütme bağlamı kendisi (kod biçimleri, dil yapıları, erişilebilir API'ler ve sistem verileri) bu gizlilik sınırlarını güçlendirmeli ya da en azından atlatmaya yönelik fırsatlardan bahsedeceğiz. Bir yandan da sahip olduğumuz zengin platforma ve SDK'ların sağladığı çalışma zamanı özelliklerinin çoğuna sahip. Burada, çalışma ortamı için bir dizi güncellemeyi önerdik. tutturmalarını isteyebilirsiniz.

Kod

Android kodu (uygulamalar ve SDK'lar) ağırlıklı olarak Android Çalışma Zamanı tarafından yorumlanır. (ART) gibi, kodun Kotlin veya Java dilinde mi yazıldığına bakılır. ART'ın zenginliği sunduğu doğrulanabilirlik ile birlikte sunduğu dil yapıları alternatiflerle (özellikle yerel kodla) karşılaştırıldığında işlevsellik ile gizlilik arasında denge kurun. Çalışma zamanı etkin SDK kodunun JNI erişimini desteklemek yerine yalnızca Dex bayt kodundan oluşur.

Bazı kullanım alanları (ör. özel paketlenmiş ürünler) Yerel kod kullanıldığında, alternatifi olan SDK'ları kullanabilirsiniz.

SELinux

Android'de her işlem (kök olarak çalıştırılanlar da dahil) belirli bir SELinux bağlamı, çekirdeğin sisteme erişim denetimini yönetmesine olanak tanır hizmetler, dosyalar, cihazlar ve diğer işlemler için geçerlidir. Dünyayı korumak amacıyla SDK kullanım alanlarının çoğunda gizlilik önlemlerinin atlatılması en aza indirilir. ve koruma altına almak istediğimizde, size şunları öneriyoruz: sistem dışı bir uygulamanın SDK Çalışma Zamanı için SELinux bağlamından yapılan güncellemeler:

  • Sınırlı bir sistem hizmeti grubuna erişilebilir. (etkin tasarım altında)
  • SDK'lar yalnızca APK'larında kodu yükleyip yürütebilirler.
  • Sınırlı bir sistem özelliği grubuna erişilebilir. (etkin tasarım altında)

API'ler

SDK çalışma zamanında yansıma ve API'lerin çağrılmasına izin verilir. Ancak SDK'ların başka bir SDK'da yansıma kullanmasına veya API'leri çağırmasına izin verilmez. çalışma zamanı etkin SDK. Yasaklanmış API'lerle ilgili tam bir teklifi dikkatinizi çekebilir.

Ayrıca, son Android platformu sürümleri gittikçe daha fazla kısıtlanmaya başlamıştır. gizliliği iyileştirmek için kalıcı tanımlayıcılara erişme. SDK için Çalışma zamanı, kullanılabilecek tanımlayıcılara erişimin daha da sınırlandırılmasını öneriyoruz. Google'a izin modu üzerinden iletmenize yardımcı olabilir.

SDK Çalışma Zamanı API'lerine yalnızca ön planda çalışan uygulamalardan erişilebilir. Uygulamalardan SdkSandboxManager API'lerine erişmeye çalışılıyor arka planda arama yapıldığında SecurityException atılıyor.

Son olarak RE-SDK'lar, aşağıdaki adreste kullanıcı bildirimleri göndermek için bildirim API'lerini kullanamaz istediğiniz zaman değiştirebilirsiniz.

Yaşam döngüsü

Uygulama SDK'ları şu anda ana makine uygulamalarının yaşam döngüsünü takip eder. Ön plana girer veya ön plana çıkar ya da ön plana çıktığında veya uygulamanın SDK'ları da bunu yapar. Bizim bir uygulamanın SDK'larını farklı bir işleme ayırma teklifi, aşağıdaki yaşam döngüsü değişikliklerinden oluşur:

  • Uygulama, kullanıcı veya işletim sistemi tarafından sonlandırılabilir. SDK Çalışma Zamanı otomatik olarak feshedilir.
  • SDK Çalışma Zamanı, bellek nedeniyle işletim sistemi tarafından sonlandırılabiliyor veya SDK'daki işlenmemiş bir istisnayı karşılaştırmanız imkansızdır.

    Android 13'te bir uygulama ön plandayken SDK Çalışma Zamanı yüksek öncelikli olduğu için feshedilmesi pek olası değildir. Uygulama SDK Çalışma Zamanı işleminin önceliği düşer ve feshedilebilir. SDK Çalışma Zamanı işleminin önceliği aynı kalır uygulama ön plana geri gelse bile düşük performans gösterir. Sonuç olarak, muhtemelen daha büyük bir kısmının bellek baskısına bağlı olarak uygulamasını indirin.

    Android 14 ve sonraki sürümlerde uygulamanın ve SDK'nın işlem öncelikleri Çalışma zamanı uyumlu olmalıdır. için süreç öncelikleri Uygulama veActivityManager.RunningAppProcessInfo.importance SDK Çalışma Zamanı yaklaşık olarak aynı olmalıdır.

    Uygulama yayındayken SDK Çalışma Zamanı sonlandırılırsa Örneğin, SDK'da işlenmemiş bir istisna (SDK Çalışma Zamanı) durumu (önceden yüklenen tüm SDK'lar ve uzaktan görüntülemeler dahil) kaybolur. İlgili içeriği oluşturmak için kullanılan SDK Çalışma Zamanı'nın feshedilmesiyle ilgili olarak aşağıdaki yöntemleri kullanabilirsiniz:

    • Teklif, uygulama geliştiricilere ilgili yaşam döngüsü geri çağırma yöntemleri sunar SDK Çalışma Zamanı'nın sonlandırıldığını tespit etmek için kullanılır.
    • SDK Çalışma Zamanı, reklamlar gösterilirken sonlandırılırsa reklamlar yayınlanmayabilir beklendiği gibi çalışıyor. Örneğin, görüntülemeler ekranda donmuş olabilir ve ve uzun etkileşim süresi sağlar. Uygulama, reklam görüntülemeyi etkilemiyorsa kaldırabilir en iyi uygulamaları paylaşacağız.
    • Uygulama, SDK'ları yüklemek ve reklam istemek için başka bir girişimde bulunabilir.
    • Android 14'te SDK Çalışma Zamanı, SDK'lar yüklenirken sona ererse Uygulama geliştirici yukarıda belirtilen yaşam döngüsünü kaydetmediyse uygulama varsayılan olarak sonlandırılır. Yalnızca uygulama işlemler sonlandırılır ve normal şekilde çıkar.
    • İletişim kurmak için SDK tarafından döndürülen bağlayıcı nesneleri (ör. SandboxedSdk) uygulama tarafından kullanılıyorsa DeadObjectException hatası verir.

    Bu yaşam döngüsü modeli, gelecekteki güncellemelerde değiştirilebilir.

    Kalıcı hatalar durumunda, uygulama geliştirici aşağıdakileri planlamalıdır: SDK olmadan kontrollü azalma veya SDK bu durumda kullanıcıya bilgi verme uygulamanın temel işlevi açısından kritik öneme sahip. Bu konuda daha fazla uygulama ile SDK arasındaki etkileşim hakkında daha fazla bilgi için aşağıdaki iletişim bölümüne bu belgeyi kontrol edin.

RE dışı SDK'lar, kendi uygulamaları için mevcut standart işletim sistemi temel öğelerini kullanmaya devam edebilir. yerleşik uygulamalar (hizmetler, etkinlikler ve yayınlar dahil) RE SDK'ları yapamayız.

Özel durumlar

Aşağıdaki durumlar desteklenmez ve beklenmeyen davranışlara neden olabilir:

  • Aynı UID'yi paylaşan birden fazla uygulama varsa SDK Çalışma Zamanı çalışmayabilir. gerekir. Paylaşılan UID'ler için gelecekte destek eklenebilir.
  • Birden fazla işlemi olan uygulamalarda SDK, ana sayfada yüklenmelidir. bahsedeceğim.

Medya oluşturma

Metin, resim ve video gibi içerikleri görünüm oluşturabilirsiniz. Bunun için uzaktan görüntüleme yaklaşımı öneriyoruz. Burada SDK, SDK Çalışma Zamanı içindeki medyayı oluşturur ancak SurfaceControlViewHost API medyanın uygulama tarafından belirtilen bir görünümde oluşturulmasına izin vermek için. Bu, SDK'yı sunar bu medyayı, kullanıcıya özel bir şekilde hazırlama imkanı, geçersiz veya sahte kullanıcı etkileşimlerinin önlenmesine ve tespit edilmesine yardımcı olurken, oluşturulan medya.

SDK tarafından oluşturulmayan, bunun yerine uygulama tarafından oluşturulan doğal reklamlar, SDK Çalışma Zamanı'ndaki SDK'lar tarafından desteklenmelidir. Sinyal toplama ve reklam öğesi getirme işlemi yerel olmayan reklamlarda tutarlı olarak gerçekleşir. Bu bir üzerine konuşalım.

Video içi reklamlar, oynatıcıda gösterilen ve videoyla birlikte yayınlanan video içi reklamlardır. görebilirsiniz. Videonun, uygulamadaki bir oynatıcının içinde oynatıldığı oluşturma modeli, diğer reklamdan farklı olduğundan, SDK'daki bir oynatıcıya veya görünüme göre biçimlerinden biridir. Her iki sunucu tarafı reklamı destekleyecek mekanizmaları aktif olarak araştırıyoruz ekleme ve SDK tabanlı reklam ekleme.

Sistem sağlığı

SDK Çalışma Zamanı'nın son kullanıcı üzerindeki sistem sağlığını ve bunun için yeni yollar tasarlıyoruz. Büyük ihtimalle bazı giriş düzeyinde Örneğin, çok sınırlı sistem kaynaklarına sahip Android 13 cihazlar Android (Go sürümü), sistem sağlığı üzerindeki etkisi nedeniyle SDK Çalışma Zamanı'nı desteklemeyecek. Yakında SDK Çalışma Zamanı'nı başarılı bir şekilde kullanmak için gereken minimum gereksinimleri paylaşın.

İletişim

Uygulamalar ve SDK'lar şu anda aynı süreçte çalıştığı için hiçbir kısıtlama yoktur. Buna ek olarak Android, SDK'larla başlayıp bitse bile tüm iletişim olanaklarını Bu serbest akışlı iletişim modeli sayesinde aynı anda birçok farklı kullanım alanına Ayrıca, uygulamalar ve veri kaynakları arasında açıklanmamış veri paylaşımı uygulamalar arasındaki farkları giderir. Size önerimiz, sahip olduğu faydanın değeri arasında denge kurmak isteyen ve belirttiğimiz hedeflerin gerçekleştirilmesi.

Uygulamadan SDK'ya

Uygulama ile SDK arasındaki arayüz en yaygın iletişim yoludur kullanıcılara yönelik farklılaşmanın büyük bir kısmının, büyük önem arz eder. Amacımız SDK'ların inovasyon yapma daha iyi olur. Sonuç olarak teklifimiz, SDK'ların API'lerin ve uygulamaların tüm bu yeniliklerden yararlanmalarını sağlamak için çalışıyoruz.

SDK Çalışma Zamanı'nın süreç sınır yapısı göz önüne alındığında, uygulama içinden erişilebilen bir düzenleme katmanı oluşturarak yanıtlar veya geri çağırmalar oluşturur. Biz Bu sıralama katmanının arayüzünün SDK tarafından tanımlanacağını ve açık kaynak kodlu resmî açık kaynak geliştirme araçları tarafından için de geçerlidir.

Bu teklifle, standart sıralama çalışmasını uygulamadan kaldırmayı amaçlıyoruz. SDK geliştiricileri için, SDK geliştiricilerine esneklik sağlamanın yanı sıra SDK Çalışma Zamanı'nda çalıştırılan SDK kodları, gizlilik hedeflerimize ulaşır. Şu özellikleri kullanmalı mıyız: yolu izlemek isterseniz API tanımı dili ve araçları olacak şekilde tasarlandı.

Genel etkileşim modeli aşağıdaki gibi olur:

  • Uygulama, geri çağırmaları ileterek arayüz üzerinden SDK'yı çağırır.
  • SDK, istekleri eşzamansız olarak karşılar ve geri çağırmaları kullanarak yanıt verir.
  • Bu, herhangi bir yayıncı-abone modeline genelleştirilebilir, yani bir uygulama SDK'da geri çağırma özellikli etkinliklere abone olma ve bu etkinlikler gerçekleştiğinde geri çağırmalar tetiklenir.

Bu teklifin yeni çapraz işlemler yapısının bir sonucu olarak da, yönetilmesi gereken iki süreç yaşam döngüsüdür: Biri uygulama için SDK Çalışma Zamanı içindir. Teklifimiz, müşteri e-postalarını uygulama ve SDK geliştiricileri üzerindeki etkiyi en aza indirerek bunların mümkün olduğunca büyük kısmını ele alacağız. İlgili içeriği oluşturmak için kullanılan aşağıdaki diyagram, üzerinde düşündüğümüz bir yaklaşımı gösteriyor:

Şema
Uygulamadan SDK'ya geçiş sürecini gösteren sıra şeması etkileşimlerine yol açabilir.

Platform, uygulamaların SDK'ları Google Ads API'sine dinamik olarak yüklemesi için SDK Çalışma Zamanı işlemi, sürecin durumunda yapılan değişikliklerle ilgili bildirim alın, ve SDK Çalışma Zamanı'na yüklenen SDK'larla etkileşimde bulunurlar.

Önceki şekildeki grafik, uygulama ile SDK arasındaki iletişimi farklı daha alt bir düzeye indirin.

Uygulama, SDK Çalışma Zamanı işleminde çalışan SDK ile şu adımları uygulayın:

  1. Bir uygulama SDK ile etkileşime geçmeden önce SDK'yı platforma yükleyebilirsiniz. Sistemin bütünlüğünü sağlamak için uygulamalar manifest dosyalarında yüklemeyi düşündükleri SDK'lar ve bu SDK'lar yalnızca yüklenmelerine izin verilir.

    Aşağıdaki kod snippet'i, açıklayıcı bir API örneği sağlar:

    SdkSandboxManager.loadSdk(String sdkName, Bundle data, Executor executor,
        OutcomeReceiver<SandboxedSdk, LoadSdkException> receiver)
    
  2. SDK, yüklendiğine dair bildirim alır ve arayüzüne döner. Bu arayüzün, uygulama işlemi tarafından kullanılması amaçlanmıştır. Arayüzü paylaşmak için IBinder nesnesi olarak döndürülmesi gerekir.

    Bağlı hizmetler rehberi, IBinder sağlamak için farklı yöntemler sunar. Hangi yöntemi seçerseniz seçin, SDK ve arayan uygulamasıdır. Diyagramlarda örnek olarak AIDL kullanılmıştır.

  3. SdkSandboxManager, IBinder arayüzünü alır ve görebilirsiniz.

  4. Uygulama IBinder öğesini alır ve SDK arayüzüne yayınlar. işlevler:

    IBinder binder = sandboxSdk.getInterface();
    ISdkInterface mySdkInterface = ISdkInterface.Stub.asInterface(binder);
    mySdkInterface.something();
    

Uygulama, aşağıdaki adımları izleyerek SDK'dan medya da oluşturabilir:

  1. Bu dokümanın medya oluşturma bölümünde açıklandığı gibi, dokümanına göre, bir uygulamanın bir görünümde medya oluşturmak üzere bir SDK alabilmesi için, requestSurfacePackage() adresine bir çağrı yapabilir ve uygun SurfaceControlViewHost.SurfacePackage.

    Aşağıdaki kod snippet'i, açıklayıcı bir API örneği sağlar:

    SdkSandboxManager.requestSurfacePackage(String sdkName, Bundle extraParams,
            Executor executor,
            OutcomeReceiver<Bundle, RequestSurfacePackageException> receiver)
    
  2. Uygulama daha sonra, döndürülen SurfacePackage öğesini SurfaceView içine yerleştirebilir. SurfaceView adresindeki setChildSurfacePackage API üzerinden.

    Aşağıdaki kod snippet'i, açıklayıcı bir API örneği sağlar:

    SurfaceView.setChildSurfacePackage(SurfacePackage surfacePackage)
    

Önerimiz, IBinder ve requestSurfacePackage() API'lerinin genel ve uygulamalar tarafından doğrudan çağrılması amaçlanmamıştır. Bunun yerine bu API yukarıda açıklanan oluşturulmuş API referansı tarafından, bir "shim" içinde çağrılır Böylece uygulama geliştiricilerin üzerindeki yükü azaltmış olursunuz.

SDK'dan SDK'ya

Aynı uygulamadaki iki SDK'nın genellikle iletişim kurması gerekir. Bu durum, belirli bir SDK, bileşen SDK'lardan meydana gelecek şekilde tasarlanmıştır ve iki SDK Farklı taraflara ait SDK'ların, arama uygulaması.

Dikkate alınması gereken iki önemli durum vardır:

  • Her iki SDK'nın da çalışma zamanı etkin olduğunda. Bu durumda her iki SDK da SDK Çalışma Zamanı'nı tüm koruma özellikleriyle birlikte sunar. SDK'lar yaptıklarını da göz önünde bulundurun. Sonuç olarak Yeşil Ofis’teki Getirme işleminin etkinleştirilmesi için SdkSandboxController eklendi Yüklenen tüm RE-SDK'lar için SandboxedSdk nesneleri Bu, RE-SDK'nın şunları yapmasına olanak tanır: SDK Çalışma Zamanında yüklenen diğer SDK'larla iletişim kurma.
  • Yalnızca bir SDK'nın çalışma zamanı etkin olduğunda.
    • Çağrı yapan SDK uygulama içinde çalışıyorsa bu durum uygulamanın kendisi SDK Çalışma Zamanı içinde ikinci SDK'yı çağırır.
    • Çağrı yapan SDK SDK Çalışma Zamanı içinde çalışıyorsa bu teklif app-to-SDK içinde açıklanan IBinder kullanarak bir yöntemin ortaya çıkarılmasını önerir kodu dinleyen, işleyen ve yanıt veren bir bölümü olan kullanılabilir.
    • Çalışma zamanı özelliğinin etkin olmadığı reklam SDK'ları kendi kendilerini kaydedemeyebilir, her tür iş ortağını veya uygulamayı içeren bir arabulucu SDK'sının oluşturulmasını öneriyoruz. Uygulamanın doğrudan bağımlılığı olan SDK'lar ve kayıt işlemlerini yürütür. Bu aracı SDK'sı, çalışma zamanı etkin olmayan öğeler arasında iletişim kurar SDK'lar veya diğer uygulama bağımlılıkları ve çalışma zamanının etkin olduğu arabulucu adaptörü kullanabilirsiniz.

SDK-SDK iletişimi için özellik grubu aşağıdaki bölümlere ayrılmıştır kategoriler:

  • SDK Çalışma Zamanı içinde SDK-SDK iletişimi (şu sürümde mevcuttur: Geliştirici Önizlemesi)
  • Uygulama ile SDK Çalışma Zamanı arasındaki SDK-SDK iletişimi ( en son Geliştirici Önizlemesi)
  • Görünümler ve uzaktan oluşturma, uyumlulaştırma için nasıl çalışmalıdır? geliştirme)

Aşağıdaki kullanım alanları, temel öğeler proje amaçlarıyla birlikte göz önünde bulundurulduğu için tasarlanan:

  1. Uyumlulaştırma ve Teklifli Sistem. Birçok reklam SDK'sı uyumlulaştırma veya teklifli sistem sunar SDK'nın bir reklam gösterimi için diğer çeşitli SDK'ları çağırdığı özellik (uyumlulaştırma) veya açık artırma (teklifli sistem) yürütmek için sinyal toplama amaçlıdır. Normal şartlarda Koordine SDK, koordine ediyoruz. Yukarıdaki temel öğelere göre, koordinasyon SDK'sı, RE veya normal çalışma için tüm RE ve RE dışı SDK'lara erişebilmelidir. Bu bağlamda oluşturma, etkin bir araştırma alanıdır.
  2. Özellik keşfetme. Bazı SDK ürünleri daha küçük SDK'lardan oluşur. SDK'lar arası keşif süreci uygulayarak Google Ads'de kullanabileceğiniz uygulama geliştiricisine sunulan bir araçtır. Kayıt ve keşif temel öğeleri ne kadarının bu kullanım alanını gerçekleştirmesi bekleniyor?
  3. Yayıncı-abonelik modelleri. Bazı SDK'lar, diğer SDK'ların veya uygulamaların abone olabileceği etkinliklerin yayıncısı ve geri aramalarla bildirim alın. Yukarıdaki temel öğeler bu kullanımı desteklemelidir dava açın.

Uygulamadan uygulamaya

Uygulamadan uygulamaya iletişim, iki işlemden en az birinin çalışma zamanı etkin bir SDK'dır ve iletişim, teknoloji, pazarlama gizli veri paylaşımına izin verilir. Sonuç olarak SDK Çalışma Zamanı, istemci uygulaması dışındaki herhangi bir uygulamayla doğrudan iletişim kanalı veya başka bir uygulama için oluşturulmuş başka bir SDK çalışma zamanındaki SDK'larla. Bu ulaşılmasına yardımcı olur:

  • SDK; <service>, <contentprovider> veya Manifest dosyasında <activity>.
  • SDK ContentProvider yayınlayamaz veya yayın gönderemez.
  • SDK, başka bir uygulamaya ait etkinlikleri başlatabilir ancak bazı durumlarda Intent'e neyin gönderilebileceğini anlatacağım. Örneğin hiçbir ekstra ya da özel bu Niyete eklenecektir.
  • SDK yalnızca izin verilen hizmetleri başlatabilir veya izin verilenler listesine bağlanabilir.
  • SDK, ContentProvider sisteminin yalnızca bir alt kümesine erişebilir (com.android.providers.settings.SettingsProvider gibi) Verilerde tanımlayıcı bulunmaz ve bu veriler kullanıcının parmak izini oluşturmak için kullanılamaz. Bu kontroller, ContentProvider alan adına yönelik erişim için de geçerlidir. ContentResolver.
  • SDK, yalnızca korunan yayın alıcılarının bir alt kümesine (ör. android.intent.action.AIRPLANE_MODE olarak).

Manifest etiketleri

SDK yüklendiğinde PackageManager, SDK'nın manifestini ayrıştırır ve başarısız olur. (yasaklanan manifest etiketleri varsa SDK'yı yüklemek için). Örneğin, SDK <service>, <activity>, <provider> veya <receiver> gibi bileşenleri tanımlamaz ve manifest dosyasında <permission> beyan edemez. Başarısız olan etiketler yükleme işlemi SDK Çalışma Zamanı'nda desteklenmiyor. Hata vermeyen etiketler ancak sessizce yoksayılan reklamlar ileride Android cihazlarda desteklenebilir. sürümleri vardır.

Bu kontroller, SDK'nın SDK paketini oluştururken ve uygulama mağazasına yükleme sırasında.

Etkinlik desteği

SDK Çalışma Zamanı ortamındaki SDK'lar, manifest dosyalarına etkinlik etiketi ekleyemez ve Context.startActivity kullanarak kendi etkinliklerini başlatamaz. Bunun yerine platform, istendiğinde SDK'lar için etkinlikler oluşturur ve bunları SDK'larla paylaşır.

Platform etkinliği android.app.Activity türünde. Platform etkinliği uygulamanın etkinliklerinden birinden başlar ve uygulama görevinin bir parçasıdır. FLAG_ACTIVITY_NEW_TASK desteklenmiyor.

Bir SDK'nın etkinlik başlatması için şu türde bir örnek kaydetmesi gerekir: Aşağıdaki durumlarda etkinlik oluşturulmasıyla ilgili bildirim göndermek için kullanılan SdkSandboxActivityHandler Uygulama, SdkSandboxManager::startSdkSandboxActivity(Activity, IBinder) adlı kişiyi şu şekilde çağırıyor: ve etkinliği başlatın.

Etkinlik isteme akışı aşağıdaki grafikte gösterilmektedir.

Şema
Sıra şeması gösteren bir grafik oluşturur.

Geliştirme

Bu teklifteki önemli bir ilke, içeriğin geliştiriciye olan etkisini en aza indirmektir. ekosistemini mümkün olduğunca genişlettik. Bu teklifte sunulanlar: geliştiriciler, RE yansımalarını yazmak, derlemek ve hata ayıklamak için kapsamlı bir SDK'ları kullanabilirsiniz. Bu teklifin bütünlüğünü sağlamak için RE uygulamalarının ve SDK'larının yapılandırma, yazma ve derleme şeklinde bazı değişiklikler yapıldı.

Yazma

Android Studio ve ilgili araçlar, SDK Çalışma Zamanına duyarlı olacak şekilde güncellenecek. geliştiricilerin RE uygulamalarını doğru şekilde yapılandırmalarını ve ve eski ya da desteklenmeyen çağrıların yeni sürümlere güncellenmesini sağlama durumlarda daha fazla alternatif sunar. Yazma aşamasında tamamlanması gereken geliştiricilerin dikkate alması gerekecek.

Uygulama geliştiriciler

Uygulamaların RE SDK'sı ve SDK sertifikalarını belirtmesi gerekir bağımlılıklarını görebilirsiniz. Teklifimizde bunu kaynak olarak kabul ediyoruz. doğruluğunu teyit edin. Örneğin:

  • Ad: SDK'nın veya kitaplığın paket adı.
  • Ana sürüm: SDK'nın ana sürüm kodu.
  • Sertifika özeti: SDK derlemesinin sertifika özeti. Belirli bir SDK geliştiricisinin bu değeri şuradan elde etmesini ve kaydetmesini öneririz: ilgili uygulama mağazasına gidin.

Bu, yalnızca uygulama mağazasında dağıtılan SDK'lar (RE olsun veya olmasın) için geçerlidir. SDK'ları statik olarak bağlayan uygulamalar mevcut bağımlılık mekanizmalarını kullanır.

Geliştiriciler üzerindeki etkisini asgari düzeyde tutma hedefimiz doğrultusunda, bir kez SDK Çalışma Zamanı'nı destekleyen hedef API düzeyi belirtildi, yalnızca uygulama geliştiriciler her zaman tek bir derlemenin olması, bu derlemenin SDK Çalışma Zamanı'nı desteklemiyor.

SDK geliştiricileri

Önerdiğimiz tasarımda, RE SDK geliştiricilerinin hemfikir olmasını sağlamak için manifest dosyasında SDK'yı veya kitaplık varlığını temsil eden yeni bir öğe tanımlayın. Ayrıca, bağımlılıkla benzer bir değer kümesinin ve sağlanan alt sürüm:

  • Ad: SDK'nın veya kitaplığın paket adı.
  • Ana sürüm: SDK'nın ana sürüm kodu.
  • Alt sürüm: SDK'nın alt sürüm kodu.

RE SDK geliştiricilerinin, derleme zamanına bağımlılık olarak başka RE SDK'ları varsa büyük olasılıkla, bunları bir uygulama geliştiricisininkine benzer bir şekilde tanımlaması gerekir. aynı bağımlılığı tanımlar. RE dışı SDK'lara bağlı olarak RE SDK'ları bunları statik olarak bağlayabilirsiniz. Bu durum, karşılaşacağımız sorunların SDK'ların işlevsellik gerektirmesi durumunda, derleme süresinde veya test geçişlerinde SDK Çalışma Zamanı desteklenmiyor veya uygulamanın işleminde çalıştırılması gerekip gerekmediği.

RE SDK geliştiricileri, yeniden etkinleştirilmeyen SDK'ları desteklemeye devam etmek isteyecektir. Android 12 veya önceki sürümler gibi ve Sistem Sağlığı bölümünde bulunan giriş düzeyindeki Android 13 cihazlar için sınırlı sistem kaynağı olduğunu unutmayın. SDK'ları kullanıma sunmaya yönelik yaklaşımlar üzerinde çalışıyoruz geliştiriciler, RE ve RE dışı ortamları desteklemek için tek bir kod tabanı elde edebilir.

Derlemeler

Uygulama geliştiriciler

Uygulama geliştiricilerin, oluşturma adımıdır. SDK bağımlılıkları (yerel olarak dağıtılan veya uygulama) mağaza tarafından dağıtılan (RE veya değil) olmak üzere, hata analizi için makinede mevcut olması gerekir. derleme ve derlemeler vardır. Android Studio'nun bu soyutlamaları bilgilerini uygulama geliştiricisinden vermeli ve bunu şeffaf hale getirmelisiniz. yardımcı olabilirsiniz.

Bir HATA AYIKLAMA derlemesinin tüm kod ve sembolleri içermesini beklesek de, hata ayıklaması için DEBUG derlemesinde mevcut olmasını istiyorsanız RELEASE derlemeleri isteğe bağlı olarak uygulama mağazasında dağıtılan tüm SDK'ların (RE veya değil) yardımcı olur.

Şu anda tasarım aşamasının daha erken bir aşamasındayız ve kullanıma sunuldukça daha fazla bilgi paylaşacağız.

SDK geliştiricileri

RE ve RE olmayan sürümlerin de her SDK, dağıtım için tek bir yapıda derlenebilir. Bu, uygulama geliştiricilerin RE ve SDK'nın RE olmayan sürümleri.

Uygulamalarda olduğu gibi, uygulama mağazası tarafından dağıtılan bağımlılık SDK'larının da derleme, derleme ve derleme için makinede mevcut. Android'in Studio bu işlemi sorunsuz şekilde yapabilmelidir.

Test

Uygulama geliştiriciler

Teklifimizde de açıklandığı gibi, uygulama geliştiriciler Android 13 çalıştıran cihazlardaki uygulamaları normalde olduğu gibi oynatır. İnşaatlarını bitirdikten sonra uygulama bir RE cihazına veya emülatörüne yüklenebilir. Bu yükleme işlemi, doğru SDK'ların SDK'ların uzak SDK deposuna veya derleme sisteminin önbelleğine alma.

SDK geliştiricileri

SDK geliştiricileri genellikle cihazlarda ve emülatörleri kullanarak geliştirmelerini test edebilirler. Teklifimiz bunu değiştirmez ve uygulama içi doğrulama, uygulama geliştiriciler için belirtilen adımların aynısını izler. hem RE hem de RE dışı uygulamalar için tek bir derleme yapısı içerir. SDK geliştiriciler, SDK'da olsun ya da olmasın, kodlarını adım adım inceleyebilirler Çalışma zamanı olsun ya da olmasın, ancak gelişmiş hata ayıklama ve profil çıkarma araçları. Bu etkin bir araştırma alanıdır.

Dağıtım

Bir uygulamanın SDK'larından ayrılmasına yönelik tasarım teklifimiz, SDK'ların uygulama mağazasında dağıtılması olanağı. Bu genel bir olasılıktır Yalnızca belirli bir uygulama mağazasına özgü olmamalıdır. Avantajları ise açıktır:

  • SDK'ların kalitesini ve tutarlılığını sağlamak.
  • SDK geliştiricileri için yayın sürecini kolaylaştırın.
  • SDK alt sürüm güncellemelerinin yüklü uygulamalara kullanıma sunulmasını hızlandırın.

SDK dağıtımını desteklemek için bir uygulama mağazasının büyük olasılıkla şu olanakların çoğunu sağlar:

  • SDK geliştiricilerin, uygulama mağazasında dağıtılabilir SDK'larını yüklemeleri için kullanılan mekanizma güncellemek, geri çekmek ve büyük olasılıkla kaldırmak için kullanılır.
  • SDK'nın bütünlüğünü ve kaynağını sağlayan bir mekanizma ve uygulama ve bağımlılıklarını çözmekten bahsedeceğiz.
  • Bunları cihazlara tutarlı bir şekilde güvenilir ve en iyi performansı sunar.

Zaman içinde değişen kısıtlamalar

SDK çalışma zamanında kod tarafından uygulanan kısıtlamaların daha sonra gelişmesini bekliyoruz. Android'in sürümleri. Uygulama uyumluluğunu sağlamak için bu ayarları değiştirmeyiz. ana hat modül güncellemeleriyle ilgili kısıtlamalara neden olabilir. Davranış belirli bir targetSdkVersion ile ilişkilendirilmiş öğe desteklenene kadar korunur targetSdkVersion, uygulama mağazası politikası nedeniyle kullanımdan kaldırılmıştır ve targetSdkVersion desteğinin sonlandırılması, uygulamalara kıyasla daha hızlı bir şekilde gerçekleşebilir. Özellikle Android SDK sürümlerinde kısıtlamaların sık sık değişmesi olabilir. tanıtmıştık.

Buna ek olarak, Google'ın iç ve dış dünyadan uzaklaşmasına izin vermek için bir sonraki deneme için önerilen kısıtlama grubunu alan bir gruba katılmalarını sürümünü kullanabilirsiniz. Böylece, markayla ilgili geri bildirim alabilir ve kısıtlama grubu için önerilen değişiklikler.

SSS

  1. Reklamcılıkla ilgili SDK nedir?

    Reklamlarla ilgili SDK'lar, uygulamanızın hedeflemesinin herhangi bir bölümünü kolaylaştıran ticari amaçlı uçlar için mesajlar gönderen kullanıcılar, belirlemektir. Bu politika, kullanıcıların Hedefleme, reklam sunma SDK'ları, kötüye kullanımı önleme için gruplar oluşturulabilir. ve sahtekarlıkla mücadele SDK'ları, etkileşim SDK'ları ve ilişkilendirme SDK'ları aracılığıyla sunulmaktadır.

  2. Herhangi bir SDK, SDK Çalışma Zamanında çalışabilir mi?

    İlk odak noktası reklamla ilgili SDK'lar olsa da, reklamlarla ilgili olmayan SDK'lar gizlilik yanlısı bir duruş sergilemek ve yukarıda özetlenen koşullar, SDK'ları hakkında geri bildirim paylaşabilir ve SDK Çalışma Zamanı'nda çalışıyor. SDK Çalışma Zamanı, uyumlu olacak şekilde tasarlanmamıştır yeniden tasarladık. SDK, belirtilen sınırlamaların dışında Çalışma zamanı, gerçek zamanlı veya yüksek işleme hızına ihtiyaç duyan SDK'lar için uygun olmayabilir barındırma uygulamasıyla iletişim kurmaya çalışır.

  3. Bir işlemin izolasyonu yerine neden izolasyonu tercih edin? Java tabanlı çalışma zamanı?

    Java tabanlı çalışma zamanı, şu anda güvenliğin sağlanmasını Android'de istenen gizlilik güvencelerinin yardımcı olur. Böyle bir şeyi uygulamaya çalışmak, büyük olasılıkla ve başarı garantisi vermeksizin birkaç yıl boyunca çaba harcamıştır. Bu nedenle, Gizlilik Korumalı alan, kullanım sınırları kullanır, zamana meydan okumuş ve iyi anlaşılmış teknolojisidir.

  4. SDK'ların SDK Çalışma Zamanı sürecine taşınması indirme boyutu sağlar mı? tasarruf etmek mi istiyorsunuz?

    Çalışma zamanı etkin SDK'larla entegre edilmiş birden fazla uygulama varsa sürümünü indirmek, indirme boyutunu ve disk alanını azaltabilir.

  5. Uygulamanın web sitesine gitmesi gibi, uygulama yaşam döngüsü SDK Çalışma Zamanı'nda SDK'lar bunlara erişebilir mi?

    Biz Uygulama düzeyinde SDK çalışma zamanını bilgilendirmek için tasarım desteği üzerinde etkin bir şekilde çalışıyoruz. yaşam döngüsü olayları (ör. uygulamanın arka plana girmesi, ön plana gittiğini unutmayın). Tasarım ve örnek kod yakında yayınlanacak geliştirici önizlemesi.

ziyaret edin. ziyaret edin.