Play Feature Delivery'ye genel bakış

Google Play'in uygulama sunma modelinde, her kullanıcının cihaz yapılandırmasına göre optimize edilmiş APK'lar oluşturmak ve yayınlamak için Android Uygulama Paketleri kullanılır. Böylece kullanıcılar yalnızca uygulamanızı çalıştırmak için ihtiyaç duydukları kodu ve kaynakları indirir.

Play Özellik Dağıtımı, uygulama paketlerinin gelişmiş özelliklerini kullanarak uygulamanızın belirli özelliklerinin koşullu olarak sunulmasına veya isteğe bağlı olarak indirilmesine olanak tanır. Bunun için önce bu özellikleri temel uygulamanızdan özellik modüllerine ayırmanız gerekir.

Ö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'
}

Standart uygulama eklentisi tarafından kullanılabilen özelliklerin birçoğu özellik modülünüzde de kullanılabilir. Aşağıdaki bölümlerde, özellik modülünüzün derleme yapılandırmasına eklemeniz gereken ve eklememeniz gereken özellikler açıklanmaktadır.

Özellik modülü derleme yapılandırmasına dahil edilmemeleri gerekenler

Her özellik modülü temel modüle bağlı olduğundan, belirli yapılandırmaları da devralır. Bu nedenle, özellik modülünün build.gradle dosyasında aşağıdakileri atlamanız gerekir:

  • İmzalama yapılandırmaları: Uygulama paketleri, temel modülde belirttiğiniz imzalama yapılandırmaları kullanılarak imzalanır.
  • minifyEnabled özelliği: Yalnızca temel modülün derleme yapılandırmasından uygulama projenizin tamamı için kod daraltma özelliğini etkinleştirebilirsiniz. Bu nedenle, özellik modüllerinden bu özelliği çıkarmanız gerekir. Ancak her özellik modülü için ek ProGuard kuralları belirtebilirsiniz.
  • versionCode ve versionName: Gradle, uygulama paketinizi oluştururken temel modülün sağladığı uygulama sürümü bilgilerini kullanır. Bu özellikleri, özellik modülünüzün build.gradle dosyasından çıkarmanız gerekir.

Temel modülle ilişki kurar

Android Studio özellik modülünüzü oluşturduğunda, aşağıda gösterildiği gibi, temel modülün build.gradle dosyasına android.dynamicFeatures özelliğini ekleyerek temel modüle görünür hale getirir:

// 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 temel modülü özellik modülünün bağımlısı olarak 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ı belirtin

Uygulama projenizde kod daraltma özelliğini yalnızca temel modülün derleme yapılandırması etkinleştirebilecek olsa da, aşağıda gösterildiği gibi proguardFiles özelliğini kullanarak her bir özellik modülünde özel ProGuard kuralları sağlayabilirsiniz.

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, derleme sırasında diğer modüllerdeki (temel modül dahil) kurallarla birleştirildiğini unutmayın. Bu nedenle, her özellik modülü yeni bir kurallar grubu belirtebilir ancak bu kurallar uygulama projesindeki tüm modüller için geçerlidir.

Uygulamanızı dağıtma

Uygulamanızı özellik modüllerini desteğiyle geliştirirken, uygulamanızı normalde yaptığınız gibi bağlı bir cihaza dağıtabilirsiniz. Bunun için menü çubuğundan Çalıştır > Çalıştır'ı seçin (veya araç çubuğundaki Çalıştır simgesini tıklayın).

Uygulama projeniz bir veya daha fazla özellik modülü içeriyorsa mevcut çalıştırma/hata ayıklama yapılandırmanızı aşağıdaki gibi değiştirerek uygulamanızı dağıtırken hangi özelliklerin dahil edileceğini seçebilirsiniz:

  1. Menü çubuğundan Çalıştır > Yapılandırmaları Düzenle'yi seçin.
  2. Çalıştırma/Hata Ayıklama Yapılandırmaları iletişim kutusunun sol panelinden istediğiniz Android Uygulaması yapılandırmasını seçin.
  3. Genel sekmesindeki Dağıtılacak dinamik özellikler altında, uygulamanızı dağıtırken dahil etmek istediğiniz her özellik modülünün yanındaki kutuyu işaretleyin.
  4. Tamam'ı tıklayın.

Varsayılan olarak Android Studio, uygulamanızı dağıtmak için uygulama paketlerini kullanarak uygulamanızı dağıtmaz. Bunun yerine IDE, cihazınıza APK boyutu yerine dağıtım hızı için optimize edilmiş APK'lar oluşturur ve yükler. Android Studio'yu bunun yerine bir uygulama paketinden APK'lar ve hazır uygulama deneyimleri oluşturup dağıtacak şekilde yapılandırmak için çalıştırma/hata ayıklama yapılandırmanızda değişiklik yapın.

Özel yayın için özellik modüllerini kullanma

Özellik modüllerinin benzersiz bir avantajı, uygulamanızın farklı özelliklerinin Android 5.0 (API düzeyi 21) veya sonraki sürümleri çalıştıran cihazlara nasıl ve ne zaman indirileceğini özelleştirebilmektir. Örneğin, uygulamanızın ilk indirme boyutunu küçültmek için belirli özellikleri gerektiğinde gerektiğinde indirilecek veya yalnızca resim çekebilme ya da artırılmış gerçeklik özelliklerini destekleme gibi belirli özellikleri destekleyen cihazlar tarafından indirilecek şekilde yapılandırabilirsiniz.

Uygulamanızı uygulama paketi olarak yüklediğinizde varsayılan olarak yüksek düzeyde optimize edilmiş indirmeler elde etseniz de daha gelişmiş ve özelleştirilebilir özellik sunma seçenekleri, özellik modüllerini kullanarak uygulama özelliklerinin ek yapılandırılmasını ve modülerleştirilmesini gerektirir. Diğer bir deyişle, özellik modülleri, her biri gerektiğinde indirilmek üzere yapılandırabileceğiniz modüler özellikler oluşturmak için yapı taşları sağlar.

Kullanıcılarınızın online bir pazar yerinde ürün alıp satmasına olanak tanıyan bir uygulama düşünün. Uygulamanın aşağıdaki işlevlerinin her birini, makul ölçüde ayrı özellik modülleri halinde modüler hale getirebilirsiniz:

  • Hesaba giriş ve hesap oluşturma
  • Marketplace'e göz atma
  • Ürünü satışa yerleştirme
  • Ödemeleri işleme koyma

Aşağıdaki tabloda, özellik modüllerinin desteklediği farklı yayınlama seçenekleri ve örnek Marketplace uygulamasının ilk indirme boyutunu optimize etmek için nasıl kullanılabileceği açıklanmaktadır.

Teslimat seçeneği Davranış Örnek kullanım alanı Başlangıç
Yükleme sırasında teslim Yukarıda açıklanan yayınlama seçeneklerinden hiçbirini yapılandırmayan özellik modülleri, varsayılan olarak uygulama yükleme sırasında indirilir. Bu, gelişmiş yayınlama seçeneklerini kademeli olarak benimseyebileceğiniz anlamına geldiğinden önemli bir davranıştır. Örneğin, uygulamanızın özelliklerini modüler hale getirmekten ve isteğe bağlı yayınlamayı ancak Play Özellik Dağıtım Kitaplığı'nı kullanarak isteğe bağlı indirmeleri tam olarak uyguladıktan sonra etkinleştirebilirsiniz.

Buna ek olarak, uygulamanız daha sonra bazı özelliklerin kaldırılmasını isteyebilir. Bu nedenle, uygulama yükleme sırasında belirli özelliklere ihtiyaç duyuyorsanız ancak bunun ardından söz konusu özelliğin cihazdan kaldırılmasını isteyerek yükleme boyutunu azaltabilirsiniz.

Uygulamanın, pazar yerinde ürün satın alma ve satmayla ilgili etkileşimli bir kılavuz gibi belirli eğitim etkinlikleri varsa bu özelliği varsayılan olarak uygulama yükleme sırasında ekleyebilirsiniz.

Ancak uygulama, kullanıcı eğitimi tamamladıktan sonra özelliğin silinmesini talep ederek uygulamanın yüklü boyutunu küçültebilir.

Gelişmiş yayınlama seçenekleri yapılandırılmayan özellik modüllerini kullanarak uygulamanızı modüler hale getirin.

Kullanıcının artık ihtiyaç duymadığı belirli özellik modüllerini kaldırarak uygulamanızın yüklü boyutunu nasıl küçülteceğinizi öğrenmek için Yüklü modülleri yönetme konusunu okuyun.

İsteğe bağlı yayınlama Uygulamanızın gerektiğinde özellik modüllerini istemesine ve indirmesine izin verir. Marketplace uygulamasını kullananların yalnızca% 20'si satılık öğeler yayınlıyorsa, kullanıcıların çoğunluğu için ilk indirme boyutunu küçültmek için iyi bir strateji, resim çekme ve öğe açıklaması ekleme işlevselliğini sağlamak ve öğeyi isteğe bağlı indirme olarak satışa sunmaktır. Yani, özellik modülünü, uygulamanın satış işlevselliğinin yalnızca kullanıcı öğeleri pazar yerine satılmaya ilgi gösterdiğinde indirilecek şekilde yapılandırabilirsiniz.

Ayrıca kullanıcı belirli bir süre sonra artık ürün satmıyorsa uygulama, özelliğin kaldırılmasını isteyerek yüklenen boyutunu küçültebilir.

Bir özellik modülü oluşturun ve istek üzerine yayını yapılandırın. Böylece uygulamanız, modülü isteğe bağlı olarak indirme isteğinde bulunmak için Play Özellik Dağıtım Kitaplığı'nı kullanabilir.
Koşullu yayın Uygulama yükleme sırasında modüler hale getirilmiş bir özelliğin indirilip indirilmeyeceğini belirlemek için donanım özellikleri, yerel ayar ve minimum API düzeyi gibi kullanıcı cihazı gereksinimlerini belirtmenize olanak tanır. Marketplace uygulaması küresel çapta erişime sahipse yalnızca belirli bölgelerde veya yerel bölgelerde popüler olan ödeme yöntemlerini desteklemeniz gerekebilir. İlk uygulama indirme boyutunu küçültmek amacıyla, belirli ödeme yöntemlerini işlemek için ayrı özellik modülleri oluşturabilir ve bunların bir kullanıcının cihazına, kayıtlı yerel ayarlarına göre koşullu olarak yüklenmesini sağlayabilirsiniz. Bir özellik modülü oluşturun ve koşullu dağıtımı yapılandırın.
Anında teslimat Google Play Instant, kullanıcıların uygulamayı cihazlarına yüklemek zorunda kalmadan uygulamanızla etkileşimde bulunmasına olanak tanır. Bunun yerine, uygulamanızı Google Play Store'daki "Şimdi Dene" düğmesi veya oluşturduğunuz bir URL aracılığıyla deneyebilirler. Bu içerik yayınlama biçimi, uygulamanızla etkileşimi artırmanızı kolaylaştırır.

Anında dağıtım sayesinde Google Play Instant'ı kullanarak kullanıcılarınızın, uygulamanızın belirli özelliklerini yüklemeden anında deneyimlemelerini sağlayabilirsiniz.

Basit bir özellik modülünde oyunun ilk birkaç seviyesini içeren bir oyun düşünün. Bu modülü anında etkinleştirebilirsiniz. Böylece kullanıcılar, uygulamayı yüklemeden bir URL bağlantısı veya "Şimdi Dene" düğmesiyle oyunu anında deneyimleyebilirler. Bir özellik modülü oluşturun ve anında dağıtımı yapılandırın. Böylece uygulamanız, modülü isteğe bağlı olarak indirme isteğinde bulunmak için Play Özellik Dağıtım Kitaplığı'nı kullanabilir.

Özellik modüllerini kullanarak uygulama özelliklerinizi modülerleştirmenin yalnızca ilk adım olduğunu unutmayın. Google Play Instant'ın desteklenmesi için uygulamanızın temel modülünün ve hazır sürüm etkin belirli bir özelliğin indirme boyutu, katı boyut kısıtlamalarına uymalıdır. Daha fazla bilgi edinmek için Uygulama veya oyun boyutunu küçülterek hazır uygulama deneyimlerini etkinleştirme başlıklı makaleyi okuyun.

Bir kaynak için URI oluşturma

URI kullanarak bir özellik modülünde depolanan bir kaynağa erişmek istiyorsanız Uri.Builder() kullanarak özellik modülü kaynak URI'sı oluşturmak için aşağıdaki adımları uygulayın:

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ı oluşturulur.

URI'nın nasıl oluşturulduğuna örnek olarak aşağıdaki adlara sahip bir uygulama ve özellik modüllerinizin olduğunu varsayalım:

  • Uygulama paketi adı: com.example.my_app_package
  • Özelliğin kaynaklar paketi adı: com.example.my_app_package.my_dynamic_feature

Yukarıdaki kod snippet'indeki resId, özellik modülünüzde "my_video" adlı ham dosya kaynağına işaret ederse yukarıdaki Uri.Builder() kodu aşağıdaki çıkışı verir:

android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video

Bu URI, daha sonra uygulamanız tarafından özellik modülünün kaynağına erişmek için kullanılabilir.

URI'nızdaki yolları doğrulamak için APK Analizcisi'ni kullanarak özellik modülü APK'nızı inceleyebilir ve paket adını belirleyebilirsiniz:

APK Analiz Aracı'nın derlenmiş bir kaynak dosyasının içeriğini incelediği ekran görüntüsü.

2. Şekil. Derlenmiş bir kaynak dosyasındaki paket adını incelemek için APK Analiz Aracı'nı kullanın.

Özellik modülleriyle ilgili dikkat edilmesi gereken noktalar

Özellik modülleriyle, derleme ve mühendislik hızını artırabilir ve uygulamanızın boyutunu küçültmek için uygulamanızın özelliklerinin yayınlanmasını büyük ölçüde özelleştirebilirsiniz. Ancak, özellik modüllerini kullanırken unutulmaması gereken bazı kısıtlamalar ve uç durumlar vardır:

  • Koşullu veya isteğe bağlı yayınlama yoluyla tek bir cihaza 50 ya da daha fazla özellik modülü yüklemek performans sorunlarına neden olabilir. Kaldırılabilir olarak yapılandırılmamış yükleme süresi modülleri, temel modüle otomatik olarak dahil edilir ve her cihazda yalnızca bir özellik modülü olarak sayılır.
  • Yükleme sırasında yayınlama için kaldırılabilir olarak yapılandırdığınız modül sayısını en fazla 10 tane olacak şekilde sınırlandırın. Aksi takdirde, uygulamanızın indirme ve yükleme süresi artabilir.
  • Yalnızca Android 5.0 (API düzeyi 21) ve sonraki sürümleri çalıştıran cihazlar isteğe bağlı özelliklerin indirilmesini ve yüklenmesini destekler. Özelliğinizi Android'in önceki sürümlerinde kullanılabilir hale getirmek için özellik modülü oluştururken Fusing'i (Kaynaştırma) etkinleştirin.
  • Uygulamanızın isteğe bağlı olarak sunulan indirilmiş özellik modüllerine erişebilmesi için SplitCompat'ı etkinleştirin.
  • Özellik modülleri, android:exported true olarak ayarlanmış manifest dosyalarında etkinlikleri belirtmemelidir. Bunun nedeni, başka bir uygulama etkinliği başlatmaya çalıştığında cihazın özellik modülünü indirdiğinin garanti edilmemesidir. Ayrıca uygulamanız, bir özelliğin koduna ve kaynaklarına erişmeye çalışmadan önce özelliğin indirildiğini onaylamalıdır. Daha fazla bilgi edinmek için Yüklü modülleri yönetme bölümünü okuyun.
  • Play Özellik Dağıtımı, uygulamanızı bir uygulama paketi kullanarak yayınlamanızı gerektirdiğinden uygulama paketiyle ilgili bilinen sorunları bildiğinizden emin olun.

Özellik modülü manifest referansı

Android Studio kullanarak yeni bir özellik modülü oluşturduğunuzda, IDE, modülün bir özellik modülü gibi davranması için gereken manifest özelliklerinin çoğunu içerir. Ayrıca, bazı özellikler derleme sırasında derleme sistemi tarafından eklendiğinden bunları sizin belirtmeniz veya değiştirmeniz gerekmez. Aşağıdaki tabloda, özellik modülleri için önemli olan manifest özellikleri açıklanmaktadır.

Özellik Açıklama
<manifest
...
Bu, tipik <manifest> blokunuzdur.
xmlns:dist="http://schemas.android.com/apk/distribution" Aşağıda ayrıntılı bir şekilde açıklanan yeni dist: XML ad alanını belirtir.
split="split_name" Android Studio, uygulama paketinizi derlerken sizin için bu özelliği içerir. Bu nedenle, bu özelliği kendiniz eklememeli veya değiştirmemelisiniz.

Uygulamanızın, Play Özellik Yayınlama Kitaplığı'nı kullanarak isteğe bağlı modül isteğinde bulunurken belirlediği modülün adını tanımlar.

Gradle, bu özelliğin değerini nasıl belirler?

Varsayılan olarak, Android Studio'yu kullanarak bir özellik modülü oluşturduğunuzda IDE, modülü Gradle ayarları dosyanızda bir Gradle alt projesi olarak tanımlamak için Modül adı olarak belirttiğiniz modülü kullanır.

Uygulama paketinizi derlerken Gradle, modülün manifest dosyasına bu manifest özelliğini eklemek için alt proje yolunun son öğesini kullanır. Örneğin, MyAppProject/features/ dizininde yeni bir özellik modülü oluşturursanız ve Modül adı olarak "dynamic_feature1"i belirtirseniz IDE, ':features:dynamic_feature1' dosyasını settings.gradle dosyanıza alt proje olarak ekler. Gradle, uygulama paketinizi oluştururken modülün manifest dosyasına <manifest split="dynamic_feature1"> kodunu ekler.

android:isFeatureSplit="true | false"> Android Studio, uygulama paketinizi derlerken sizin için bu özelliği içerir. Bu nedenle, bu özelliği manuel olarak eklememeli veya değiştirmemelisiniz.

Bu modülün bir özellik modülü olduğunu belirtir. Temel modüldeki ve yapılandırma APK'larındaki manifestler bu özelliği içermez veya false olarak ayarlar.

<dist:module Bu yeni XML öğesi, modülün nasıl paketlendiğini ve APK'lar olarak dağıtıldığını belirleyen özellikleri tanımlar.
dist:instant="true | false" Modülün hazır uygulama deneyimi olarak Google Play Instant üzerinden kullanılıp kullanılamayacağını belirtir.

Uygulamanızda bir veya daha fazla hazır sürüm etkin özellik modülü varsa temel modülü de anında etkinleştirmeniz gerekir. Android Studio 3.5 veya sonraki sürümleri kullanırken, hazır uygulama özellikli bir özellik modülü oluşturduğunuzda IDE bunu sizin için yapar.

<dist:on-demand/> ayarını yaparken bu XML öğesini true değerine de ayarlayamazsınız. Bununla birlikte, Play Özellik Yayınlama Kitaplığı'nı kullanarak hazır sürüm özellikli özellik modüllerinizi hazır uygulama deneyimi olarak dilediğiniz zaman indirebilirsiniz. Bir kullanıcı uygulamanızı indirip yüklediğinde, cihaz varsayılan olarak temel APK ile birlikte uygulamanızın hazır sürüm etkin özellik modüllerini indirip yükler.

dist:title="@string/feature_name" Modül için kullanıcıya gösterilecek bir başlığı belirtir. Örneğin, cihaz, indirme onayı istediğinde bu başlığı görüntüleyebilir.

Bu başlığa ilişkin dize kaynağını temel modülün module_root/src/source_set/res/values/strings.xml dosyasına eklemeniz gerekir.

<dist:fusing dist:include="true | false" />
</dist:module>
Modülün, Android 4.4 (API düzeyi 20) ve önceki sürümleri çalıştıran cihazları hedefleyen çoklu APK'lara eklenip eklenmeyeceğini belirtir.

Buna ek olarak, uygulama paketinden APK oluşturmak için bundletool kullandığınızda yalnızca bu özelliği true olarak ayarlayan özellik modülleri, uygulamanızın desteklediği tüm cihaz yapılandırmaları için kod ve kaynaklar içeren monolitik bir APK olan evrensel APK'ya dahil edilir.

<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 bu özel yayınlama seçeneklerinden yalnızca bir türünü yapılandırması gerektiğini unutmayın.
<dist:install-time> Modülün yükleme sırasında kullanılabilir olması gerektiğini belirtir. Bu, başka bir özel yayınlama seçeneği türünün belirtilmediği özellik modülleri için varsayılan davranıştır.

Yükleme anında indirme hakkında daha fazla bilgi için Yükleme sırasında yayınlamayı yapılandırma bölümünü okuyun.

Bu düğüm ayrıca modülü belirli gereksinimleri karşılayan cihazlarla sınırlayan koşulları (ör. cihaz özellikleri, kullanıcının ülkesi veya minimum API düzeyi) belirtebilir. Daha fazla bilgi için Koşullu yayınlamayı yapılandırma bölümüne bakın.

<dist:removable dist:value="true | false" />

Politika ayarlanmazsa veya false değerine ayarlanırsa Bundletool, paketten bölünmüş APK'lar oluştururken yükleme zamanı modüllerini temel modülle birleştirir. Birleştirme sonucunda daha az bölünmüş APK olacağı için bu ayar, uygulamanızın performansını iyileştirebilir.

removable, true olarak ayarlandığında yükleme zamanı modülleri temel modülle birleştirilmez. İleride modülleri kaldırmak istiyorsanız true olarak ayarlayın. Ancak kaldırılabilir çok fazla modülü yapılandırmak uygulamanızın yükleme süresini uzatabilir.

Varsayılan olarak false değerine ayarlanır. Bu değeri yalnızca bir özellik modülü için birleştirmeyi devre dışı bırakmak isterseniz manifest dosyasında ayarlamanız gerekir.

Not: Bu özellik yalnızca Android Gradle eklentisi 4.2 veya Bundletool v1.0 komut satırından kullanıldığında kullanılabilir.

</dist:install-time>  
<dist:on-demand/> Modülün isteğe bağlı indirme olarak sunulması gerektiğini belirtir. Yani modül, yükleme sırasında kullanılamaz ancak uygulamanız daha sonra indirmek isteyebilir.

İsteğe bağlı indirmeler hakkında daha fazla bilgi edinmek için İsteğe bağlı yayınlamayı yapılandırma bölümünü okuyun.

</dist:delivery>
<application
android:hasCode="true | false">
...
</application>
Özellik modülü DEX dosyası oluşturmazsa (yani daha sonra DEX dosya biçiminde derlenen hiçbir kod içermiyorsa) aşağıdakileri yapmanız gerekir (aksi halde çalışma zamanı hataları alabilirsiniz):
  1. Özellik modülünün manifest dosyasında android:hasCode öğesini "false" olarak ayarlayın.
  2. Temel modülünüzün manifest dosyasına aşağıdaki kodu ekleyin:
    <application
      android:hasCode="true"
      tools:replace="android:hasCode">
      ...
    </application>
    

Ek kaynaklar

Özellik modüllerini kullanma hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları deneyin.

Blog yayınları

Videolar

Hizmet şartları ve veri güvenliği

Play Özellik Dağıtımı Kitaplığı'na erişerek veya bu kitaplığı kullanarak Play Core Yazılım Geliştirme Kiti Hizmet Şartları'nı kabul etmiş olursunuz. Kitaplığa erişmeden önce lütfen geçerli tüm şartları ve politikaları okuyup anlayın.

Veri Güvenliği

Play Core kitaplıkları, uygulamanızın Google Play Store'daki çalışma zamanı arayüzüdür. Dolayısıyla, uygulamanızda Play Core'u kullandığınızda Play Store, Google Play Hizmet Şartları'na tabi olan verilerin işlenmesi de dahil olmak üzere kendi süreçlerini yürütür. Aşağıdaki bilgilerde, Play Core kitaplıklarının uygulamanızdaki belirli istekleri işlemek için verileri nasıl işlediği açıklanmaktadır.

Ek diller API'si

Kullanım sırasında toplanan veriler Yüklenen 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 üçüncü taraflara 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 sonrasında, 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 üçüncü taraflara aktarılmaz.
Veri silme Sabit bir saklama süresinin ardından veriler silinir.

Mümkün olduğunca şeffaf olmayı hedeflesek de uygulamanızın kullanıcı verilerini toplama, paylaşma ve güvenlik uygulamalarıyla ilgili olarak Google Play'in Veri Güvenliği bölümü formuna nasıl yanıt vereceğinize karar vermek tamamen sizin sorumluluğunuzdadır.