Google Play'in uygulama sunma modelinde Android Uygulaması Paketler Her kullanıcının Böylece kullanıcılar sadece kendileri için gereken kodu ve kaynakları yardımcı olabilir.
Play Feature Delivery, uygulama paketlerinin gelişmiş özelliklerini kullanarak Uygulamanızın belirli özellikleri koşullu olarak sunulacak veya isteğe bağlı olarak indirilecektir. Bunu yapmak için önce bu özellikleri temel uygulamanızdan özellik modüllerinden yararlanın.
Özellik modülü derleme yapılandırması
Android Studio'yu kullanarak yeni bir özellik modülü oluşturduğunuzda, IDE (Entegre Geliştirme Ortamı)
aşağıdaki Gradle eklentisini modülün build.gradle
dosyasına uygular.
// The following applies the dynamic-feature plugin to your feature module.
// The plugin includes the Gradle tasks and properties required to configure and build
// an app bundle that includes your feature module.
plugins {
id 'com.android.dynamic-feature'
}
Kullanılabilen tesislerin çoğu standart uygulama eklentisi kullanabilirsiniz. Aşağıdaki bölümler yer almanız gereken ve kullanmamanız gereken özellikleri özellik modülünün derleme yapılandırması.
Özellik modülü derleme yapılandırmasına dahil edilmeyenler
Her özellik modülü temel modüle bağlı olduğundan
bazı yapılandırmaları devralır. Dolayısıyla,
özellik modülünün build.gradle
dosyası:
- İmzalama yapılandırmaları: Uygulama paketleri, imzalama kullanılarak imzalanır. yapılandırma ayarlarını kullanabilirsiniz.
minifyEnabled
özelliği: Şunları yapabilirsiniz: kod küçültmeyi etkinleştir yalnızca temel modülün derlemesinden tüm uygulama projeniz için yapılandırma. Dolayısıyla, bu özelliği özellik modüllerinden yararlanın. Ancak, ek ProGuard kuralları belirtme her özellik modülü için mevcut.versionCode
veversionName
: Uygulama paketinizi oluştururken Gradle, temel modülün sağladığı uygulama sürümü bilgilerini kullanır. Bu özellikleri özellik modülünüzünbuild.gradle
dosyası yükleyin.
Temel modülle bir ilişki kurmak
Android Studio özellik modülünüzü oluşturduğunda onu görünür hale getirir
android.dynamicFeatures
özelliğini
aşağıdaki gibi temel modülün build.gradle
dosyasını yükleyin:
// In the base module’s build.gradle file.
android {
...
// Specifies feature modules that have a dependency on
// this base module.
dynamicFeatures = [":dynamic_feature", ":dynamic_feature2"]
}
Ayrıca Android Studio, aşağıda gösterildiği gibi özellik modülünün bir bağımlılığı olarak temel modülü içerir:
// In the feature module’s build.gradle file:
...
dependencies {
...
// Declares a dependency on the base module, ':app'.
implementation project(':app')
}
Ek ProGuard kuralları belirtme
Kod küçültmeyi yalnızca temel modülün derleme yapılandırması etkinleştirebilir ancak
özel ProGuard kuralları sağlayabilir ve her
özellik modülünü kullanarak
proguardFiles
özelliğini kullanmanızı öneririz.
android.buildTypes {
release {
// You must use the following property to specify additional ProGuard
// rules for feature modules.
proguardFiles 'proguard-rules-dynamic-features.pro'
}
}
Bu ProGuard kurallarının diğer modüllerdeki kurallarla birleştirildiğini unutmayın (temel modül dahil) gösterir. Her bir özellik modülünün yeni bir dizi kural belirtmesi halinde, bu kurallar Programdaki tüm modüller için uygulama projesi.
Uygulamanızı dağıtma
Uygulamanızı özellik modülleri desteğiyle geliştirirken
uygulamanızı bağlı bir cihaza dağıtmak için şu seçeneği belirleyin:
Çalıştır > Menü çubuğundan (veya Çalıştır öğesini
araç çubuğunda bulabilirsiniz).
Uygulama projenizde bir veya daha fazla özellik modülü varsa şunları yapabilirsiniz: Uygulamanızı dağıtırken hangi özellikleri dahil edeceğinizi belirlemek için çalıştırma/hata ayıklama yapılandırmanızı şöyle olur:
- Çalıştır > Menü çubuğundan Yapılandırmaları Düzenle'yi tıklayın.
- Çalıştır/Hata Ayıklama Yapılandırmaları iletişim kutusunun solundaki panelden Android Uygulaması yapılandırmasını devre dışı bırakın.
- Genel sekmesindeki Dağıtılacak dinamik özellikler bölümünde eklemek istediğiniz her özellik modülünün yanındaki en iyi uygulamaları paylaşacağız.
- Tamam'ı tıklayın.
Varsayılan olarak Android Studio, uygulamanızı dağıtmak için uygulama paketlerini kullanarak dağıtmaz en iyi şekilde yararlanabilirsiniz. Bunun yerine IDE APK'ları derler ve cihazınıza yükler, bu APK'lar dağıtım hızı için optimize edilmiş tercih eder. Android Studio'yu derleme ve dağıtma amacıyla yapılandırmak için Bir uygulama paketindeki APK'lar ve hazır deneyimler için çalışmanızı/hata ayıklamanızı değiştirin yapılandırma hakkında daha fazla bilgi edinin.
Özel dağıtım için özellik modüllerini kullanın
Özellik modüllerinin benzersiz bir avantajı, nasıl ve ne zaman Uygulamanızın farklı özellikleri Android 5.0 çalıştıran cihazlara indirilir (API düzeyi 21) veya üzeri. Örneğin, aynı uygulamanın ilk indirme boyutunu küçültmek için bazı özellikleri yapılandırarak isteğe bağlı olarak indirilecek yalnızca isteğe bağlı olarak veya yalnızca şu gibi özellikleri destekleyen cihazlar tarafından resim çekebilme veya artırılmış gerçeklik özelliklerini destekleyebilme.
Uygulamanızı yüklediğinizde varsayılan olarak son derece optimize edilmiş indirmeler elde edersiniz. paket halinde sunulan daha gelişmiş ve özelleştirilebilir özellik dağıtımı seçenekleri özellik modüllerini inceleyin. Yani özellik modülleri, binanın her biri için yapılandırabileceğiniz modüler özellikler oluşturmaya yarayan bloklar indirilmelidir.
Kullanıcılarınızın internetten ürün alıp satmasına olanak tanıyan bir uygulama düşünün yardımcı olur. Aşağıdaki işlevlerin her birini makul bir şekilde modüler hale getirebilirsiniz ayrı özellik modüllerine ayırmanızı sağlar:
- Hesaba giriş ve hesap oluşturma
- Pazar yerine göz atma
- Bir ürünü satışa sunma
- Ödemeleri işleme
Aşağıdaki tabloda, bu özelliği kullanan farklı yayınlama seçenekleri modüllerinin desteği ve bunların ilk indirme işlemini optimize etmek için boyutu da belirlenebilir.
Teslimat seçeneği | Davranış | Kullanım alanı örneği | Başlarken |
---|---|---|---|
Yükleme zamanında teslimat | Yayınlama seçeneklerinin hiçbirini yapılandırmayan özellik modülleri
uygulama yükleme sırasında indirilir. Bu bir
etkili bir yolunu sunar. Çünkü gelişmiş dağıtım
aşama aşama. Örneğin, ürünlerinizi veya hizmetlerinizi modülerleştirerek
özelliklerinden ve isteğe bağlı yayını yalnızca
Bu özellik, Play Feature Delivery kitaplığı kullanılarak isteğe bağlı indirmelerde uygulanır.
Ayrıca, uygulamanız daha sonra özelliklerin kaldırılmasını isteyebilir. Uygulama yükleme sırasında belirli özelliklere ihtiyaç duyarak söz konusu özelliği şuradan kaldırma isteğinde bulunarak yükleme boyutunu küçültebilirsiniz: olanak tanır. |
Uygulamada etkileşimli kılavuz gibi belirli eğitim etkinlikleri varsa
ürün satın alma ve satmayla ilgili diğer bilgilere, pazar yerinde
uygulama yükleme sırasında bir özellikte yer alıyor.
Ancak uygulamanın yüklü boyutunu küçültmek için uygulama Kullanıcı eğitimi tamamladıktan sonra bu özelliği silme. |
Özelliği kullanarak uygulamanızı modüler hale getirin
hiçbir gelişmiş dağıtım seçeneği yapılandırmayan modüller.
Uygulamanızın yüklü boyutunu nasıl küçülteceğinizi öğrenmek için daha fazla bilgi edinmek için Yönet yüklenmiş modülleri inceleyin. |
İsteğe bağlı teslimat | Uygulamanızın gerektiğinde özellik modülleri istemesine ve indirmesine izin verir. | Marketplace uygulamasını kullananların yalnızca% 20'si öğeleri satışa dönüştürüyorsa,
çoğu kullanıcı için ilk indirme boyutunu küçültme açısından iyi bir stratejidir
bir öğe de dahil olmak üzere, resim çekme işlevini
açıklama ve istek üzerine satışa sunulan bir ürünü yerleştirme
indirin. Yani, yeni web sitesi ürünleri için özellik modülünü
yalnızca kullanıcı bir kullanıcı göründüğünde indirilebilecek
pazar yerine ürün yerleştirmeyle ilgilenmesi gerekir.
Ayrıca kullanıcı belirli bir süre geçtikten sonra artık ürün satmıyorsa Uygulama, özelliğin kaldırılmasını isteyerek yüklü boyutunu küçültebilir. |
Bir özellik modülü oluşturun ve isteğe bağlı yapılandırma teslimat. Uygulamanız bundan sonra İstekte bulunmak için Play Özellik Yayınlama Kitaplığı modülü indirebilirsiniz. |
Koşullu yayın | Donanım gibi belirli kullanıcı cihazı gereksinimlerini belirtmenize olanak tanır. özellikleri, yerel ayarı ve minimum API düzeyini temel alan özellik uygulama yükleme sırasında indirilir. | Marketplace uygulaması dünya genelinde erişime sahipse Yalnızca belirli bölgelerde veya yerel bölgelerde popüler olan ödeme yöntemleri. İçinde ilk uygulama indirme boyutunu küçültmek için ayrı bir uygulama indirmesi belirli ödeme yöntemi türlerini işlemeye yönelik özellik modülleri ve kullanıcı özelliklerine göre kullanıcının cihazına koşullu olarak kayıtlı yerel ayar. | Bir özellik modülü oluşturun ve koşullu yayınlamayı yapılandırın. |
Anında teslimat | Google Play Hazır Uygulama
Kullanıcıların uygulamayı yüklemeleri gerekmeden uygulamanızla etkileşimde bulunmasına olanak tanır
cihazlarında test edebilirsiniz. Bunun yerine, "Deneme"
Şimdi" Google Play Store'da veya oluşturduğunuz bir URL'de bulabilirsiniz. Bu biçim
içerik sunmak, uygulamanızla olan etkileşiminizi
kolaylaştırmanızı kolaylaştırır.
uygulamasını indirin.
Anında teslimat ile Google Play Instant'ı kullanarak şunları yapabilirsiniz: uygulamanızın belirli özelliklerini kullanıcılara teşekkür ederiz. |
Bir oyunda oyunun ilk birkaç seviyesini içeren basit bir özellik modülü var. Bu modülü anında etkinleştirebilir ve böylece bir URL bağlantısı veya "Deneme sürümü" aracılığıyla Şimdi" düğmesi, uygulama yüklemesi olmadan. | Bir özellik modülü oluşturun ve
yapılandır
anında teslimat. Uygulamanız bundan sonra
İstekte bulunmak için Play Özellik Yayınlama Kitaplığı
modülü indirebilirsiniz.
Özellik kullanarak uygulama özelliklerinizi modülerleştirmenin, modüllerin yalnızca ilk adımıdır. Google Play Instant'ın desteklenmesi için uygulamanızın temel modülünün indirme boyutu ve belirli bir hazır sürüm etkin özelliği ile katı boyut kısıtlamalarına uygun olmalıdır. Daha fazla bilgi edinmek için Etkinleştir hazır uygulama deneyimlerinin kullanılmasını sağlayın. |
Bir kaynak için URI oluşturma
Özellik modülünde depolanan bir kaynağa
URI'larını kullanarak bir özellik modülü kaynak URI'sinin nasıl oluşturulacağı aşağıda açıklanmıştır:
Uri.Builder()
:
Kotlin
val uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build()
Java
String uri = Uri.Builder() .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded .appendPath(resources.getResourceTypeName(resId)) .appendPath(String.format("%s:%s", resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace. resources.getResourceEntryName(resId) )) .build().toString();
Kaynağa giden yolun her bölümü çalışma zamanında oluşturulur; böylece Bölünmüş APK'lar yüklendikten sonra doğru ad alanının oluşturulduğundan emin olun.
URI'nın nasıl oluşturulduğuna örnek olarak, bir uygulamanız olduğunu ve özellik modülleri:
- Uygulama paketi adı:
com.example.my_app_package
- Özelliğin kaynak paketi adı:
com.example.my_app_package.my_dynamic_feature
Yukarıdaki kod snippet'indeki resId
,
özellik modülünüzde "my_video" ise yukarıdaki Uri.Builder()
kodu
şu çıkışı yap:
android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video
Daha sonra bu URI, uygulamanız tarafından özellik modülünün kaynağına erişmek için kullanılabilir.
URI'nizdeki yolları doğrulamak için APK Analiz Aracı'nı kullanabilirsiniz. özellik modülü APK'nızı inceleyin ve paket adını belirleyin:
Şekil 2. Paket adını derlenmiş bir kaynak dosyasında incelemek için APK Analiz Aracı'nı kullanın.
Özellik modüllerinde dikkat edilmesi gereken noktalar
Özellik modülleriyle derleme hızını ve mühendislik hızını artırabilir, ayrıca uygulamanızın özelliklerinin sunumunu büyük ölçüde özelleştirerek uygulamanızın boyutunu küçültebilirsiniz. Bununla birlikte, özellik modüllerini kullanırken unutulmaması gereken bazı kısıtlamalar ve uç durumlar vardır:
- Koşullu veya görsel modlarla tek bir cihaza 50'den fazla özellik modülü yükleme performans sorunlarına yol açabilir. yükleme süresi modüllerini çıkarılabilir olarak yapılandırılmaz, otomatik olarak modülünü kullanabilir ve her cihazda yalnızca bir özellik modülü olarak sayılır.
- Yükleme süresi için kaldırılabilir olarak yapılandırdığınız modüllerin sayısını sınırlandırın teslimat - 10 veya daha az. Aksi halde, uygulamanızın indirme ve yükleme süresi artabilir.
- Yalnızca Android 5.0 (API düzeyi 21) ve sonraki sürümleri destekleyen cihazlar özellikleri indirip yükleyebilirsiniz. Özelliğinizi kullanılabilir hale getirmek için sürümlerinde, Android'in önceki sürümlerinden Bir özellik modülü oluşturduğunuzda birleştirme.
- SplitCompat (SplitCompat) özelliğini etkinleştirin. Böylece uygulamanız, şurada sunulan, indirilen özellik modüllerine erişebilir: gösteriyoruz.
- Özellik modülleri, manifest dosyalarında etkinlikleri belirtmek için
android:exported
şu şekilde ayarlandı:true
. Çünkü, ekibinizin cihazı Başka bir uygulama etkinliği'ne dokunun. Ayrıca, uygulamanız bir özelliğin indirilmeden önce durumuna bakın. Daha fazla bilgi edinmek için Yüklü modülleri yönetme. - Play Feature Delivery, uygulamanızı bir uygulama paketi kullanarak yayınlamanızı gerektirdiğinden, uygulama paketi hakkında bilgi sahibi olduğunuzdan bilinen sorunlar hakkında daha fazla bilgi edinin.
Özellik modülü manifest referansı
Android Studio'yu kullanarak yeni bir özellik modülü oluştururken IDE, modülün çalışması için gereken manifest özelliklerinin çoğunu içerir ayrı bir özellik modülü olabilir. Ayrıca, bazı özellikler derleme zamanında sistem oluşturabilirsiniz. Böylece, bunları kendiniz belirtmeniz veya değiştirmeniz gerekmez. Aşağıdaki tabloda, olması gereken önemli manifest özellikleri özellik modüllerinden yararlanın.
Özellik | Açıklama |
---|---|
<manifest |
Bu, normal
<manifest> blok. |
xmlns:dist="http://schemas.android.com/apk/distribution" |
Aşağıdaki yeni dist: XML ad alanını belirtir:
aşağıda ayrıntılı olarak açıklanmıştır. |
split="split_name" |
Android Studio, uygulama paketinizi oluştururken şunları içerir:
özelliğini gönderin. Bu nedenle, içeriğinizi herhangi bir zamanda
bu özelliği kullanabilirsiniz.
Uygulamanızın belirttiği modülün adını tanımlar . Gradle bu özelliğin değerini nasıl belirler? Varsayılan olarak, Android Studio, IDE (Entegre Geliştirme Ortamı), Modülü Gradle alt projesi olarak tanımlayan modül adı Gradle ayarları dosyası.
Gradle, uygulama paketinizi oluştururken
bu manifest özelliğini modülün
manifest'ini kullanabilirsiniz. Örneğin,
|
android:isFeatureSplit="true | false"> |
Android Studio, uygulama paketinizi oluştururken şunları içerir:
bu özelliği kullanabilirsiniz. Bu nedenle,
veya bu özelliği manuel olarak değiştirin.
Bu modülün bir özellik modülü olduğunu belirtir.
Temel modül ve yapılandırma APK'larındaki manifestler
bu özelliği atlayın veya |
<dist:module |
Bu yeni XML öğesi, modülün paketlenmesi ve APK'lar halinde dağıtılmasını sağlar. |
dist:instant="true | false" |
Modülün
Google Play Instant:
bir hazır uygulama deneyimidir.
Uygulamanız bir veya daha fazla hazır sürüm etkin özellik içeriyorsa temel modülü de anında etkinleştirmeniz gerekir. Bunu kullanırken Android Studio 3.5 veya sonraki sürümleri kullanıyorsanız IDE, hazırlık özellikli bir özellik modülünü inceleyin. Bu XML öğesini aynı zamanda |
dist:title="@string/feature_name" |
Modül için kullanıcılara yönelik bir başlık belirtir. Örneğin,
Cihaz, indirme isteğinde bulunduğunda bu başlığı gösterebilir
onayı.
Bu başlık için dize kaynağını eklemeniz gerekiyor
temel modülün |
<dist:fusing dist:include="true | false" />
|
Modülün, aşağıdaki özelliklere sahip çoklu APK'lara dahil edilip edilmeyeceğini belirtir:
Android 4.4 (API düzeyi 20) ve önceki sürümleri çalıştıran cihazları hedeflemelidir.
Ayrıca,
bir uygulama paketinden APK oluşturmak için |
<dist:delivery> |
Aşağıda gösterildiği gibi, modül yayınlamayı özelleştiren seçenekleri içerir. Her özellik modülünün yalnızca tek bir tür bu özel teslimat seçeneklerini kullanıyor. |
<dist:install-time> |
Modülün yükleme sırasında kullanılabilir olması gerektiğini belirtir. Bu,
başka bir değer belirtmeyen özellik modüllerinin varsayılan davranışı
türünü seçin.
Yükleme süresinde indirmeler hakkında daha fazla bilgi edinmek için Yükleme zamanı yayınlamayı yapılandırın. Bu düğüm, modülün kapsamını şu şekilde sınırlayan koşullar da belirtebilir: cihaz özellikleri, kullanıcı arayüzü ve tarayıcı özellikleri gibi belirli ülke veya minimum API düzeyi olabilir. Daha fazla bilgi edinmek için Koşullu yayını yapılandırın. |
<dist:removable dist:value="true | false" /> |
Paket aracı, ayarlanmadan bırakılırsa veya
Varsayılan olarak Not: Bu özellik yalnızca Android Gradle ile kullanılabilir. eklentisi 4.2'yi veya komut satırından Bundletool v1.0'ı kullanırken. |
</dist:install-time> |
|
<dist:on-demand/> |
Modülün isteğe bağlı olarak kullanılabileceğini belirtir
indirin. Yani modül yükleme sırasında kullanıma sunulmamıştır, ancak
Uygulama daha sonra indirme isteğinde bulunabilir.
İsteğe bağlı indirmeler hakkında daha fazla bilgi edinmek için İsteğe bağlı yayını yapılandırın. |
</dist:delivery> |
|
<application
|
Özellik modülü hiç DEX dosyası oluşturmuyorsa (yani
DEX dosyası biçiminde derlenen kod olmadan,
(aksi takdirde, çalışma zamanı hataları alabilirsiniz):
|
Ek kaynaklar
Özellik modüllerini kullanma hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları deneyin.
Blog yayınları
- Google Play'de işinizi geliştirmenize, yayınlamanıza ve büyütmenize yardımcı olacak yeni özellikler
- Ek dil API'sini de içeren en son Android App Bundle güncellemeleri
- Patchwork Plaid: Bir modülerleştirme hikayesi
Videolar
- Uygulama Paketi ile Özelleştirilebilir Yayınlama ve Test Derlemelerinin Kolay Paylaşımı
- Uygulamanızın Boyutunu Optimize Etmek ve Google Play'de Yükleme Sayısını Artırmak İçin Yeni Araçlar
Hizmet Şartları ve Veri Güvenliği
Play Özellik Yayınlama Kitaplığı'na erişerek veya Play Feature Delivery kitaplığını kullanarak şunları kabul etmiş olursunuz: Play Core Yazılım Geliştirme Kiti Hizmet Şartları. Lütfen okuyun ve kitaplığa erişmeden önce geçerli tüm şartları ve politikaları inceleyin.
Veri Güvenliği
Play Core kitaplıkları, uygulamanızın Google Play Store'daki çalışma zamanı arayüzüdür. Bu nedenle, uygulamanızda Play Core'u kullandığınızda Play Store kendi de dahil olmak üzere, bu işlemler arasında şunlar bulunur: Google Play Hizmet Şartları. Aşağıdaki bilgilerde, Play Core kitaplıklarının verileri uygulamanızdan gelen belirli istekleri işleme alabilir.
Ek diller API'si
Kullanım sırasında toplanan veriler | Yüklü dillerin listesi |
Veri toplamanın amacı | Toplanan veriler, uygulamanın farklı dil sürümlerini yayınlamak ve uygulama güncellemesinden sonra yüklü dilleri korumak için kullanılır. |
Veri şifreleme | Veriler şifrelenir. |
Veri paylaşımı | Veriler herhangi bir üçüncü tarafa aktarılmaz. |
Veri silme | Sabit bir saklama süresinin ardından veriler silinir. |
Play Özellik Dağıtımı
Kullanım sırasında toplanan veriler |
Cihaz meta verileri Uygulama sürümü |
Veri toplamanın amacı | Toplanan veriler, cihaza doğru modülü sunmak ve güncelleme, yedekleme ve geri yükleme sonrasında yüklü modülleri korumak için kullanılır. |
Veri şifreleme | Veriler şifrelenir. |
Veri paylaşımı | Veriler herhangi bir üçüncü tarafa aktarılmaz. |
Veri silme | Sabit bir saklama süresinin ardından veriler silinir. |
Mümkün olduğunca şeffaf olmayı hedeflesek de tüm sorumluluk size aittir Google Play'in Veri Güvenliği bölümü formuna nasıl yanıt vereceğinize karar vermek için Ayrıca, uygulamanızın kullanıcı verilerini toplama, paylaşma ve güvenlik yöntemleri ile ilgili bilgileri de alırsınız.