Play Feature Delivery'ye genel bakış

Google Play'in uygulama yayınlama modeli, her kullanıcının cihaz yapılandırması için optimize edilmiş APK'lar oluşturmak ve yayınlamak amacıyla Android App Bundle'ı kullanır. Böylece kullanıcılar, uygulamanızı çalıştırmak için ihtiyaç duydukları kod ve kaynakları indirir.

Play Feature Delivery, uygulamanızın belirli özelliklerinin koşullu olarak sunulmasına veya isteğe bağlı olarak indirilmesine olanak tanıyan uygulama paketlerinin gelişmiş özelliklerini kullanır. Bunu yapmak için öncelikle 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, modülün build.gradle dosyasına aşağıdaki Gradle eklentisini 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 eklentisinin kullanabildiği özelliklerin ç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 dahil etmeniz ve dahil etmemeniz gereken özellikler açıklanmaktadır.

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

Her özellik modülü temel modüle bağlı olduğundan belirli yapılandırmaları da devralır. Dolayısıyla, özellik modülünün build.gradle dosyasında aşağıdakileri çıkarmanı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 küçültmeyi etkinleştirebilirsiniz. Bu nedenle, bu özelliği özellik modüllerinden çı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 kurma

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

// 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, temel modülü özellik modülünün bağımlılığı olarak içerir (aşağıda gösterildiği gibi):

// In the feature module’s build.gradle file:
...
dependencies {
    ...
    // Declares a dependency on the base module, ':app'.
    implementation project(':app')
}

Ek ProGuard kuralları belirtme

Uygulama projeniz için kod küçültme özelliğini yalnızca temel modülün derleme yapılandırması etkinleştirebilir ancak aşağıdaki gibi proguardFiles mülkünü kullanarak her özellik modülüyle ö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 kural grubu belirtebilir ancak bu kurallar uygulama projesindeki tüm modüller için geçerlidir.

Uygulamanızı dağıtma

Uygulamanızı özellik modülleri desteğiyle geliştirirken, menü çubuğundan Çalıştır > Çalıştır'ı seçerek (veya araç çubuğundaki Çalıştır düğmesini tıklayarak) uygulamanızı her zamanki gibi bağlı bir cihaza dağıtabilirsiniz.

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

  1. Menü çubuğundan Çalıştır > Yapılandırmaları Düzenle'yi seçin.
  2. Yapılandırmaları Çalıştır/Hata Ayıkla iletişim kutusunun sol panelinden istediğiniz Android Uygulaması yapılandırmasını seçin.
  3. Genel sekmesindeki Yayınlanacak dinamik özellikler bölümünde, 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.

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

Özel yayınlama 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ştirebilme olanağıdır. Örneğin, uygulamanızın ilk indirme boyutunu küçültmek için bazı özellikleri isteğe bağlı olarak gerektiğinde indirilmek üzere veya yalnızca fotoğraf çekme veya artırılmış gerçeklik özelliklerini destekleme gibi belirli işlevleri destekleyen cihazlar tarafından indirilecek şekilde yapılandırabilirsiniz.

Uygulamanızı uygulama paketi olarak yüklediğinizde varsayılan olarak son derece optimize edilmiş indirmeler elde edersiniz. Ancak daha gelişmiş ve özelleştirilebilir özellik yayınlama seçenekleri için özellik modülleri kullanılarak uygulamanızın özelliklerinin ek olarak yapılandırılması ve modülerleştirilmesi gerekir. Yani özellik modülleri, gerektiğinde indirilecek şekilde yapılandırabileceğiniz modüler özellikler oluşturmak için yapı taşları sağlar.

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

  • Hesap oturumu açma ve hesap oluşturma
  • Pazar yerine göz atma
  • Bir ürünü satışa sunma
  • Ödemeleri işleme

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

Teslimat seçeneği Davranış Örnek kullanım alanı Başlarken
Yükleme zamanında teslimat Yukarıda açıklanan yayın seçeneklerinden hiçbirini yapılandırmayan özellik modülleri, varsayılan olarak uygulama yüklenirken indirilir. Bu, ileri seviye yayınlama seçeneklerini kademeli olarak kullanabileceğiniz anlamına geldiğinden önemli bir davranıştır. Örneğin, uygulamanızın özelliklerini modülerleştirerek avantaj elde edebilir ve isteğe bağlı indirmeleri Play Özellik Dağıtımı Kitaplığı'nı kullanarak tamamen uyguladıktan sonra isteğe bağlı dağıtımı etkinleştirebilirsiniz.

Ayrıca uygulamanız, daha sonra özellikleri kaldırma isteğinde bulunabilir. Bu nedenle, uygulama yükleme sırasında belirli özelliklere ihtiyaç duymanıza rağmen daha sonra yükleme boyutunu küçültmek için ilgili özelliğin cihazdan kaldırılmasını talep edebilirsiniz.

Uygulamada, pazar yerinde ürün satın alma ve satma hakkında etkileşimli bir kılavuz gibi belirli eğitim etkinlikleri varsa bu özelliği varsayılan olarak uygulama yükleme işlemine dahil edebilirsiniz.

Bununla birlikte uygulama, kullanıcı eğitimi tamamladıktan sonra uygulamanın yüklü boyutunu küçültmek için özelliğin silinmesini isteyebilir.

Gelişmiş yayınlama seçeneği yapılandırmayan özellik modüllerini kullanarak uygulamanızı modüler hale getirin.

Kullanıcının artık ihtiyaç duymayabileceği 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 bölümünü okuyun.

İsteğe bağlı yayınlama Uygulamanızın gerektiğinde özellik modülleri isteyip indirmesine olanak tanır. Pazar yeri uygulamasını kullananların yalnızca% 20'si satılık ürün yayınlıyorsa kullanıcıların çoğu için ilk indirme boyutunu azaltmanın iyi bir yolu, ürün açıklaması da dahil olmak üzere fotoğraf çekme ve satılık ürün ekleme işlevini isteğe bağlı indirme olarak sunmaktır. Yani, uygulamanın satış işleviyle ilgili özellik modülünü, yalnızca bir kullanıcı pazar yerine satışa yönelik öğe yerleştirme konusunda 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üklü boyutunu azaltabilir.

Özellik modülü oluşturun ve isteğe bağlı teslimatı yapılandırın. Ardından 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ınlama Modülerleştirilmiş bir özelliğin uygulama yükleme sırasında indirilip indirilmeyeceğini belirlemek için donanım özellikleri, yerel ayar ve minimum API düzeyi gibi belirli kullanıcı cihazı koşullarını belirtmenize olanak tanır. Pazar yeri uygulamasının dünya çapında erişimi varsa 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öntemi türlerini işlemek için ayrı özellik modülleri oluşturabilir ve bunları kayıtlı yerel ayarlarına göre kullanıcının cihazına koşullu olarak yükleyebilirsiniz. Özellik modülü oluşturun ve koşullu yayınlamayı yapılandırın.
Anında teslimat Google Play Instant, kullanıcıların uygulamanızı cihazlarına yüklemeden uygulamanızla etkileşim kurmasına olanak tanır. Bunun yerine, Google Play Store'daki "Hemen Dene" düğmesini veya oluşturduğunuz bir URL'yi kullanarak uygulamanızı deneyimleyebilirler. Bu içerik yayınlama biçimi, uygulamanızla etkileşimi artırmanızı kolaylaştırır.

Hazır uygulama yayınlama özelliğiyle, kullanıcılarınızın uygulamanızın belirli özelliklerini yükleme yapmadan anında deneyimlemesine olanak tanımak için Google Play Instant'ı kullanabilirsiniz.

Oyunun ilk birkaç seviyesini hafif bir özellik modülünde barındıran bir oyunu düşünün. Bu modülü anında etkinleştirerek kullanıcıların uygulama yüklemeden, URL bağlantısı veya "Şimdi Dene" düğmesi üzerinden oyunu anında deneyimleyebilmesini sağlayabilirsiniz. Özellik modülü oluşturun ve anında teslimatı yapılandırın. Ardından 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 uygulamanızın özelliklerini modüler hale getirmenin yalnızca ilk adım olduğunu unutmayın. Google Play Instant'ı desteklemek için uygulamanızın temel modülünün ve belirli bir hazır modül etkinleştirilmiş özelliğinin indirme boyutu katı boyut kısıtlamalarına uymalıdır. Daha fazla bilgi için Uygulama veya oyun boyutunu küçülterek anında deneyimler etkinleştirme başlıklı makaleyi okuyun.

Bir kaynak için URI oluşturma

Özellik modülünde depolanan bir kaynağa URI kullanarak erişmek isterseniz Uri.Builder() kullanarak özellik modülü kaynak URI'si oluşturmak için şu adımları uygulayabilirsiniz:

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 bir 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şturulması sağlanır.

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

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

Yukarıdaki kod snippet'indeki resId, özellik modülünüzde "my_video" adlı ham bir dosya kaynağına atıfta bulunuyorsa yukarıdaki Uri.Builder() kodu aşağıdakileri döndürür:

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

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 özellik modülü APK'nızı incelemek ve paket adını belirlemek üzere APK Analiz Aracı'nı kullanabilirsiniz:

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

Şekil 2. 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 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 isteğe bağlı yayınlama aracılığıyla tek bir cihaza 50 veya daha fazla özellik modülü yüklemek performans sorunlarına neden olabilir. Çıkarı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 çıkarılabilir olarak yapılandırdığınız modüllerin sayısını 10 veya daha az olacak şekilde sınırlandırın. Aksi takdirde, uygulamanızın indirme ve yükleme süresi artabilir.
  • İsteğe bağlı olarak özellik indirme ve yükleme özelliği yalnızca Android 5.0 (API düzeyi 21) ve sonraki sürümleri çalıştıran cihazlarda desteklenir. Özelliğinizi Android'in önceki sürümlerinde de kullanılabilir hale getirmek için özellik modülü oluştururken Kaynaştırma'yı etkinleştirin.
  • Uygulamanızın, isteğe bağlı olarak sunulan indirilen özellik modüllerine erişebilmesi için SplitCompat'i etkinleştirin.
  • Özellik modülleri, manifest dosyalarında android:exported true olarak ayarlanmış etkinlikler belirtmemelidir. Bunun nedeni, başka bir uygulama etkinliği başlatmaya çalıştığında cihazın özellik modülünü indirmiş olmasının 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 başlıklı makaleyi inceleyin.
  • Play Özellik Dağıtımı, uygulamanızı bir uygulama paketi kullanarak yayınlamanızı gerektirdiğinden, uygulama paketiyle ilgili bilinen sorunlardan haberdar olduğunuzdan emin olun.

Özellik modülü manifesti referansı

Android Studio'yu kullanarak yeni bir özellik modülü oluştururken IDE, modülün özellik modülü gibi davranması için ihtiyaç duyduğu manifest özelliklerinin çoğunu içerir. Ayrıca, bazı özellikler derleme zamanında derleme sistemi tarafından eklenir. Bu nedenle, bunları kendiniz 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 daha ayrıntılı olarak açıklanan yeni bir dist: XML ad alanını belirtir.
split="split_name" Android Studio, uygulama paketinizi oluştururken sizin için bu özelliği içerir. Bu nedenle, bu özelliği kendiniz eklememeli veya değiştirmemelisiniz.

Uygulamanızın Play Özellik Dağıtımı Kitaplığı'nı kullanarak isteğe bağlı bir modül istediğinde belirttiği modülün adını tanımlar.

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

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

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

android:isFeatureSplit="true | false"> Android Studio, uygulama paketinizi derlediğinde bu özelliği sizin için ekler. 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ül ve yapılandırma APK'larındaki manifest'ler bu özelliği atlar veya false olarak ayarlar.

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

Uygulamanız bir veya daha fazla hazır modül içeriyorsa temel modülü de hazır modül olarak etkinleştirmeniz gerekir. Android Studio 3.5 veya sonraki sürümleri kullanırken anında etkinleştirilen bir özellik modülü oluşturduğunuzda IDE bunu sizin için yapar.

Bu XML öğesini true olarak ayarlarken <dist:on-demand/> değerini de ayarlayamazsınız. Ancak Play Özellik Dağıtımı Kitaplığı'nı kullanarak anında etkinleştirilen özellik modüllerinizi anlık deneyimler olarak isteğe bağlı olarak indirebilirsiniz. Kullanıcılar uygulamanızı indirip yüklediğinde cihaz, varsayılan olarak temel APK ile birlikte uygulamanızın anında etkinleştirilen özellik modüllerini de indirip yükler.

dist:title="@string/feature_name" Modülün kullanıcılara yönelik başlığını belirtir. Örneğin, cihaz indirme onayı istediğinde bu başlığı gösterebilir.

Bu başlığın 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.

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

<dist:delivery> Aşağıda gösterildiği gibi modül yayınlamayı özelleştiren seçenekleri kapsar. Her özellik modülünün bu özel yayınlama seçeneklerinden yalnızca bir türü 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ü belirtmeyen özellik modülleri için varsayılan davranıştır.

Yükleme sırasında indirme hakkında daha fazla bilgi edinmek için Yükleme sırasında yayınlamayı yapılandırma başlıklı makaleyi okuyun.

Bu düğüm, modülü cihaz özellikleri, kullanıcının ülkesi veya minimum API düzeyi gibi belirli gereksinimleri karşılayan cihazlarla sınırlandıran koşullar da belirtebilir. Daha fazla bilgi edinmek için Koşullu yayınlamayı yapılandırma başlıklı makaleyi inceleyin.

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

Bu ayar devre dışı bırakıldığında veya false olarak ayarlandığında, 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ğından bu ayar, uygulamanızın performansını iyileştirebilir.

removable, true olarak ayarlandığında: yükleme sırasındaki modüller temel modülle birleştirilmez. Gelecekte modülleri kaldırmak isterseniz true değerine ayarlayın. Ancak çok fazla modülü çıkarılabilir olarak yapılandırmak, uygulamanızın yükleme süresini artırabilir.

Varsayılan olarak false değerine ayarlanır. Bu değeri yalnızca ö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 komut satırından Bundletool v1.0 kullanılırken kullanılabilir.

</dist:install-time>  
<dist:on-demand/> Modülün isteğe bağlı indirme olarak kullanılabileceğini belirtir. Yani modül yükleme sırasında kullanılamaz ancak uygulamanız 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ırma başlıklı makaleyi okuyun.

</dist:delivery>
<application
android:hasCode="true | false">
...
</application>
Özellik modülü hiç DEX dosyası oluşturmuyorsa (yani daha sonra DEX dosyası biçiminde derlenen bir kod içermiyorsa) aşağıdakileri yapmanız gerekir (aksi takdirde çalışma zamanı hataları alabilirsiniz):
  1. Özellik modülünün manifest dosyasında android:hasCode değerini "false" olarak ayarlayın.
  2. Temel modülünüzün manifest dosyasına aşağıdakileri 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 Yayınlama 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 ile çalışma zamanı arayüzüdür. Bu nedenle, uygulamanızda Play Core'u kullandığınızda Play Store kendi işlemlerini yürütür. Bu işlemler arasında, verileri Google Play Hizmet Şartları'na uygun şekilde işleme de yer alır. Aşağıdaki bilgilerde, Play Core kitaplıklarının uygulamanızdan gelen 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ü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 üçüncü taraflara aktarılmaz.
Veri silme Sabit bir saklama süresinin ardından veriler silinir.

Play Özellik Dağıtımı

Kullanımla ilgili 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 işlemlerinden sonra 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 yalnızca sizin sorumluluğunuzdadır.