Hazır özellikli uygulama paketi oluşturma

Android App Bundle'ın bir parçası olarak ekleyerek Google Play Instant deneyimi oluşturabilirsiniz. Böyle bir paket, hazır uygulama özellikli uygulama paketi olarak bilinir. Bu belgede, hazır özellikli uygulama paketleri için geliştirme ortamınızı nasıl kuracağınız ve hazır sürüm etkin uygulama paketi yapılandırma, derleme, test etme ve yayınlama gösterilmektedir.

Kullanımdan kaldırılan özellik eklentisini (com.android.feature) kullanan bir hazır uygulama projeniz varsa hazır uygulamanızı Android App Bundle'ı destekleyecek şekilde nasıl taşıyacağınızı öğrenin.

Geliştirme ortamını ayarlama

Uygulama paketi içinde hazır uygulama deneyimi sağlamak için Google Play Instant Development SDK'sına erişiminiz olmalıdır. SDK'yı aşağıdaki yöntemlerden birini kullanarak yükleyebilirsiniz:

  • Android Studio 3.6 veya sonraki bir sürümü yükleyin. Android Studio'yu açtıktan sonra SDK Yöneticisi'ndeki SDK Araçları sekmesinden Google Play Instant Geliştirme SDK'sını indirin.
  • Komut satırından yükleyin:

    cd path/to/android/sdk/tools/bin && \
      ./sdkmanager 'extras;google;instantapps'
    

Ayrıca, hazır uygulama deneyiminizi yerel olarak test etmek isterseniz fiziksel veya sanal bir cihaza erişin.

Gerekli yürütme koşulları hakkında bilgi

Google Play Instant, daha fazla güvenlik için hazır uygulama özellikli uygulama paketlerini özel bir SELinux korumalı alanında çalıştırır. Bu korumalı alan, bir izin alt kümesine ve diğer uygulamalarla sınırlı sayıda etkileşime izin verir. Aşağıdaki bölümlerde bu korumalı alanın özellikleri daha ayrıntılı olarak açıklanmaktadır.

Desteklenen izinler ve işlemler

Hazır sürüm etkin uygulama paketleri yalnızca aşağıdaki listede bulunan izinleri kullanabilir:

Desteklenmeyen yaygın izinleri işleme

Aşağıda uygulamanızdan kaldırmanız gereken yaygın ve desteklenmeyen izinlerin bir listesi ve her biri için önerilen taşıma yolu verilmiştir:

  • ACCESS_WIFI_STATE: ACCESS_WIFI_STATE ile benzer bilgiler sağlaması gereken ACCESS_NETWORK_STATE parametresini kullanın.
  • BILLING: Bu, kullanımdan kaldırılmış bir izindir. Artık com.android.vending.BILLING izni gerektirmeyen Google Play Faturalandırma Kitaplığı'nı kullanın.
  • READ/WRITE_EXTERNAL_STORAGE: Hazır uygulamaların harici depolama alanına erişimi yoktur. Bunun yerine dahili depolama alanını kullanın.
  • com.google.android.c2dm.permission.RECEIVE ve permission.C2D_MESSAGE: C2DM kullanımdan kaldırılmıştır. Firebase Cloud Messaging'e (FCM) geçiş yapın. FCM'nin çalışması için herhangi bir ek izin gerekmez.

Ayrıca, hazır sürüm etkin uygulama paketleri aşağıdakileri yapamaz:

Yüklü uygulamalara erişim

Hazır uygulama deneyimi geliştirirken, aşağıdaki koşullardan biri geçerli olmadığı sürece uygulamanın cihazdaki yüklü uygulamalarla etkileşimde bulunamayacağını unutmayın:

  • Yüklü bir uygulamadaki bir veya daha fazla etkinlik, android:visibleToInstantApps öğesini true olarak ayarlamış: Bu öğe, Android 8.0 (API düzeyi 26) veya sonraki sürümleri çalıştıran uygulamalar tarafından kullanılabilir.
  • Yüklü bir uygulamada CATEGORY_BROWSABLE içeren bir amaç filtresi bulunur.
  • Hazır uygulama deneyimi ACTION_SEND, ACTION_SENDTO veya ACTION_SEND_MULTIPLE işlemini kullanarak amaç gönderiyor.

Projenizi hazır deneyimler için yapılandırma

Google Play Instant ile uyumlu olmak için, hazır sürüm özellikli uygulama paketinizin çeşitli yönlerini dikkatlice yapılandırmanız gerekir. Bu hususlar aşağıdaki bölümlerde açıklanmıştır.

Proje bağımlılıklarını tanımlama

Uygulamanızda Google Play Instant API'lerini kullanmak için uygulama modülünüzün build.gradle yapılandırma dosyasına aşağıdaki beyanı ekleyin:

Modern

implementation "com.google.android.gms:play-services-instantapps:17.0.0"

Kotlin

implementation("com.google.android.gms:play-services-instantapps:17.0.0")

Doğru sürüm kodlarını tanımlayın

Uygulamanızın hazır uygulama deneyiminin sürüm kodu, yüklenebilir uygulamanın sürüm kodundan kısa olmalıdır. Kullanıcıların Google Play Instant deneyiminden uygulamayı indirip cihazlarına yüklemeleri beklenir. Android çerçevesi bu geçişi bir uygulama güncellemesi olarak kabul eder.

Kullanıcıların beklediği sürüm şemasını izlediğinizden emin olmak için aşağıdaki stratejilerden birini uygulayın:

  • Google Play Instant deneyimi için sürüm kodlarını 1'de yeniden başlatın.
  • Hazır uygulama deneyiminizin sürüm numarasının artması için yeterli alan bulunduğundan emin olmak amacıyla yüklenebilir APK'nın sürüm kodunu 1.000 gibi yüksek bir sayıyla artırın.

Hazır uygulamanızı ve yüklenebilir uygulamanızı iki ayrı Android Studio projesinde geliştirmeniz sorun yaratmaz. Ancak bunu yaparsanız, uygulamanızı Google Play'de yayınlamak için aşağıdakileri yapmanız gerekir:

  1. Her iki Android Studio projesinde de aynı paket adını kullanın.
  2. Google Play Console'da her iki varyantı da aynı uygulamaya yükleyin.

Uygulamanızın sürümünü ayarlama hakkında daha fazla bilgi için Uygulamanıza sürüm oluşturma konusuna bakın.

Hedef korumalı alan sürümünü güncelleme

Hazır uygulamanızın AndroidManifest.xml dosyası, Google Play Instant'ın desteklediği korumalı alan ortamını hedefleyecek şekilde güncellenmelidir. Bu güncellemeyi, aşağıdaki kod snippet'inde gösterildiği gibi uygulamanızın <manifest> öğesine android:targetSandboxVersion özelliğini ekleyerek tamamlayabilirsiniz:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Daha fazla bilgi için targetSandboxVersion özelliğiyle ilgili belgelere göz atın.

Hazır sürüm etkin uygulama modüllerini bildirme

Aşağıdaki yöntemlerden birini kullanarak uygulama paketinizin hazır uygulama deneyimlerini desteklediğini belirtebilirsiniz:

  • Yalnızca temel modül içeren bir uygulama paketiniz varsa uygulama paketini aşağıdaki şekilde anında etkinleştirebilirsiniz:

    1. Menü çubuğundan Görünüm > Araç Pencereleri > Proje'yi seçerek Proje panelini açın.
    2. Genellikle "uygulama" adlı temel modülünüzü sağ tıklayın ve Yeniden düzenle > Hazır Uygulama Desteğini Etkinleştir'i seçin.
    3. Görüntülenen iletişim kutusunda, açılır menüden temel modülünüzü seçin.
    4. Tamam'ı tıklayın.

    Android Studio, modülün manifest dosyasına aşağıdaki bildirimi ekler:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • Birden fazla modül içeren bir uygulama paketiniz varsa Hazır uygulama özellikli bir özellik modülü oluşturabilirsiniz. Bu işlem ayrıca uygulamanızın temel modülünü anında etkinleştirerek uygulamanızda birden fazla hazır giriş noktasını destekleme seçeneği sunar.

Oturum açma desteği ekleme

Hazır uygulama deneyiminiz kullanıcıların oturum açmasına izin veriyorsa hazır özellikli uygulama paketinizin Android'de Şifreler için Smart Lock'u desteklemesi gerekir. "Anında oyna" oyun oluşturuyorsanız bunun yerine Google Play Oyun Hizmetleri ile oturum açmayı kullanmanız gerekir.

Yürütme ortamını destekleme

Hazır uygulama deneyimlerinin çalıştırıldığı SELinux korumalı alanıyla uyumlu olmak için hazır özellikli uygulama paketinizi oluştururken aşağıdakileri göz önünde bulundurun:

  • Uygulama işleminizin çekirdek tarafından atanan UID değeri olan myUid() değerini paylaşmayın.
  • Uygulamanız Android 8.1 (API düzeyi 27) veya önceki sürümleri hedefliyorsa bir Network Security Config dosyası oluşturup cleartextTrafficPermitted değerini false olarak ayarlayın. Hazır sürüm deneyimleri HTTP trafiğini desteklemez. Android 9 veya sonraki sürümleri hedefleyen uygulamalarda, düz metin trafiği varsayılan olarak devre dışıdır.
  • Hazır uygulama deneyiminiz, aşağıdaki durumlardan birinde gerçekleşen hazır uygulama deneyimi önbelleği temizlenene kadar kullanıcının cihazına indirilmiş olarak kalır:

    • Cihazın kullanılabilir belleği azaldığı için hazır uygulama deneyimi önbelleği çöp olarak toplanır.
    • Kullanıcı cihazını yeniden başlatır.

    Her iki işlem de gerçekleşirse kullanıcının hazır uygulama deneyiminizi etkileşimde bulunabilmesi için yeniden indirmesi gerekir.

  • Sistemin depolama alanı çok azalıyorsa hazır uygulama deneyiminizin kullanıcı verileri dahili depolamadan kaldırılmış olabilir. Bu nedenle, kullanıcının ilerleme durumunun korunması için kullanıcı verilerinin düzenli aralıklarla uygulamanızın sunucusuyla senkronize edilmesi önerilir.

Hazır uygulama deneyimi iş akışları için mantık ekleyin

Uygulama paketinizi hazır uygulama deneyimlerini destekleyecek şekilde yapılandırdıktan sonra, aşağıdaki bölümlerde gösterilen mantığı ekleyin.

Uygulamanın hazır uygulama deneyimi çalıştırıp çalıştırmadığını kontrol etme

Uygulamanızın mantığının bir kısmı, kullanıcının anlık deneyiminizle etkileşimde bulunup bulunmadığına bağlıysa isInstantApp() yöntemini çağırın. Mevcut işlem anlık bir deneyimse bu yöntem true değerini döndürür.

Yükleme istemi görüntüle

Uygulama veya oyununuzun deneme sürümünü oluşturuyorsanız Google Play Instant, kullanıcılarınızı cihazlarına tam deneyimi yüklemeye davet ederek anında deneyiminizde bir istem görüntülemenize olanak tanır. Bu istemi görüntülemek için aşağıdaki kod snippet'inde gösterildiği gibi InstantApps.showInstallPrompt() yöntemini kullanın:

Kotlin

class MyInstantExperienceActivity : AppCompatActivity {
    // ...
    private fun showInstallPrompt() {
        val postInstall = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name)

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
                postInstall, request-code, /* referrer= */ null)
    }
}

Java

public class MyInstantExperienceActivity extends AppCompatActivity {
    // ...
    private void showInstallPrompt() {
        Intent postInstall = new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name);

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(MyInstantExperienceActivity.this,
                postInstall, request-code, /* referrer= */ null);
    }
}

Yüklü deneyime veri aktarın

Kullanıcı hazır uygulama deneyiminizden keyif alırsa uygulamanızı yüklemeye karar verebilir. İyi bir kullanıcı deneyimi sağlamak için kullanıcı verilerinin hazır uygulama deneyiminizden uygulamanızın tam sürümüne aktarılması önemlidir.

Kullanıcı, Android 8.0 (API düzeyi 26) veya sonraki sürümleri çalıştıran bir cihaz kullanıyorsa ve uygulamanız 2 targetSandboxVersion değerini belirtiyorsa kullanıcının verileri otomatik olarak uygulamanızın tam sürümüne aktarılır. Aksi takdirde, verileri manuel olarak aktarmanız gerekir. Bunu yapmak için aşağıdaki API'lerden birini kullanın:

  • Android 8.0 (API düzeyi 26) ve sonraki sürümleri çalıştıran cihazları kullananlar Cookie API - sample uygulama
  • Kullanıcılar, Android 7.1 (API düzeyi 25) ve önceki sürümleri çalıştıran cihazlarda deneyiminizle etkileşimde bulunabiliyorsa Storage API için destek ekleyin (örnek uygulama)

Uygulama paketini oluşturun

Hazır uygulama özellikli uygulama paketinizi oluşturmak için Android Studio'yu veya komut satırı arayüzünü kullanabilirsiniz.

Android Studio

Android Studio'da Derleme > Derleme Paketler / APK'lar > Derleme Paketleri'ni seçerek uygulama paketinizi oluşturabilirsiniz. Projenizi derleme hakkında daha fazla bilgi için Projenizi oluşturma bölümüne bakın.

Komut satırı arayüzü

Ayrıca, Gradle'ı kullanarak uygulama paketini komut satırından da oluşturabilirsiniz.

64 bit mimarileri destekleme

Google Play'de yayınlanan uygulamaların 64 bit mimarileri desteklemesi gerekir. Uygulamanızın 64 bit sürümünü eklemek performans iyileştirmeleri sağlar ve yalnızca 64 bit donanıma sahip cihazlar için sizi hazırlar. 64 bit desteği hakkında daha fazla bilgi edinin.

Hazır uygulama deneyimini test edin

Hazır özellikli uygulama paketinizi yayınlamadan önce işlevselliğini doğrulamak için hazır uygulama deneyimini aşağıdaki konumlardan birinden test edebilirsiniz:

Android Studio

Uygulamanızın hazır uygulama deneyimini Android Studio'yu kullanarak yerel bir makinede test etmek için aşağıdaki adımları tamamlayın:

  1. Test cihazınızda uygulamanızın yüklü bir sürümü varsa kaldırın.
  2. Android Studio'da, Çalıştır/Hata Ayıklama Yapılandırmaları iletişim kutusunun Genel sekmesinde görünen yükleme seçeneklerinden Hazır uygulama olarak dağıt onay kutusunu etkinleştirin.
  3. Menü çubuğunda Çalıştır > Çalıştır'ı seçin veya araç çubuğunda Çalıştır tıklayın, ardından uygulamanızın hazır uygulama deneyimlerini test etmek istediğiniz cihazı seçin. Uygulamanızın hazır uygulama deneyimi, seçtiğiniz test cihazında yüklenir.

Komut satırı arayüzü

Uygulamanızın hazır uygulama deneyimini komut satırını kullanarak bir yerel makinede test etmek için aşağıdaki adımları tamamlayın:

  1. Test cihazınızda uygulamanızın yüklü bir sürümü varsa kaldırın.
  2. Aşağıdaki komutu girerek hazır uygulamanızı başka cihazdan yükleyip test cihazınızda çalıştırın:
ia run output-from-build-command

Dahili test kanalı

Uygulamanızın hazır uygulama deneyimini Play Store'dan veya web sitenizdeki bir banner'dan test etmek için uygulamayı Play Console'daki dahili test kanalına yayınlayın.

Uygulamanızı dahili test kanalına yayınlamak için aşağıdaki adımları tamamlayın:

  1. Uygulama paketinizi Play Console'a yükleme kılavuzundaki adımları uygulayarak uygulama paketinizi yükleyin.
  2. Yüklenen paketi, dahili test kanalında yayınlanacak şekilde hazırlayın. Daha fazla bilgi için Sürümleri hazırlama ve kullanıma sunma ile ilgili destek makalesini inceleyin.
  3. Bir cihazda dahili test kullanıcısı hesabında oturum açın, ardından aşağıdaki yüzeylerden birinden hazır uygulama deneyiminizi başlatın:

    • Uygulamanızın Play mağaza girişindeki Şimdi Dene düğmesi.
    • Uygulamanızın web sitesindeki bir banner'dan bağlantı.

Uygulama paketini üretim kanalına yayınla

Hazır özellikli uygulama paketinizi yayınlamak için aşağıdaki adımları tamamlayın:

  1. Henüz yapmadıysanız uygulama paketinizi bir sürüm anahtarıyla imzalayın ve uygulama paketini Play Console'a yükleyin.
  2. Play Console'da Sürüm yönetimi > Android Hazır Uygulamalar'ı açın, ardından hazır uygulama üretimi kanalına gidin.
  3. Kitaplıktan güncelle'yi, ardından yüklediğiniz hazır sürüm etkin uygulama paketini seçin.

Hazır uygulama deneyiminizin nerede yayınlanacağını seçme

Kullanıcıların uygulamanızı yükleyebileceği ülke ve bölgelerin belirli bir alt kümesinde uygulamanızla ilgili bir hazır uygulama deneyimi oluşturmak mümkündür. Bu özellik, uygulamanızın hazır uygulama deneyimini belirli ülke ve bölgelerde ikamet eden kullanıcılara tanıtmak istediğiniz durumlarda yararlıdır.

Ek kaynaklar

Hazır uygulama deneyimleri ve Android App Bundle oluşturma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

Video: Uygulamayı Anında Paketleme
Android Dev Summit '18 etkinliğiyle ilgili bu oturumu izleyerek Android App Bundle'a nasıl hazır uygulama deneyimi ekleyeceğinizi öğrenin.
Video: Android App Bundle ile daha küçük boyutlu uygulamalar yayınlayın
Uygulama paketlerinin uygulamanızı daha hızlı geliştirmenize ve kullanıcılarınız için daha küçük APK'lar oluşturmanıza nasıl yardımcı olduğunu öğrenin.
Codelab: İlk Android App Bundle'ınız
Android App Bundle oluşturma ve buna özellik eklemeyle ilgili adım adım açıklamalı bir kılavuz.
Android App Bundle Biçimi
bundletool komut satırı programının, bir uygulama paketini uygulamanızın kodundan ve kaynaklarından nasıl düzenlediği hakkında daha fazla bilgi edinin.