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ı
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:
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:
- SDK geliştiricileri, kendi sürümlerindeki SDK'larını ayrı ayrı uygulama mağazalarına yükleyebilir öğrenmeye çalışıyor.
- 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.
- 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:
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 ve
ActivityManager.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ıyorsaDeadObjectException
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:
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:
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)
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.SdkSandboxManager
,IBinder
arayüzünü alır ve görebilirsiniz.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:
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 uygunSurfaceControlViewHost.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)
Uygulama daha sonra, döndürülen
SurfacePackage
öğesiniSurfaceView
içine yerleştirebilir.SurfaceView
adresindekisetChildSurfacePackage
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çinSandboxedSdk
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:
- 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.
- Ö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?
- 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](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/android/activityFlow2.png?authuser=8&hl=tr)
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
-
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.
-
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.
-
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.
-
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.
-
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.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- SDK Çalışma Zamanı geliştirici kılavuzu