Aracılığıyla paylaş


App Center Distribute – Android Uygulama içi güncelleştirmeleri

Önemli

Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.

Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.

App Center Distribute, app Center aracılığıyla dağıttığınızda kullanıcılarınızın uygulamanın yeni bir sürümünü yüklemesine olanak verir. Uygulamanın yeni bir sürümü kullanıma sunulduğunda SDK, kullanıcılara yeni sürümü indirmeleri veya ertelemeleri için bir güncelleştirme iletişim kutusu sunar. Sdk, güncelleştirmeyi seçtikten sonra uygulamanızı güncelleştirmeye başlar.

Uyarı

Google Play, çalışma zamanında kullanılmasa bile uygulama içi güncelleştirme kodunu kötü amaçlı davranış olarak kabul eder. Uygulamanızı Google Play'e göndermeden önce , bu bölümde belirtildiği gibi SDK'yı Dağıt'ın bir değişkenini kullanın veya uygulama içi güncelleştirme kodu içeren Distribute SDK'sını tamamen kaldırın. Bunun yapılmaması, uygulamanın Uyumsuzluk ve Google Play'den kaldırılmasına neden olabilir.

Not

Otomatik kullanıcı arabirimi testleri çalıştırıyorsanız, uygulama içi güncelleştirmeler app Center arka uçta kimlik doğrulaması yapmaya çalışacakları için otomatik ui testlerinizi engeller. Ui testleriniz için App Center Distribute'ı etkinleştirmemenizi öneririz.

Uygulamanıza uygulama içi güncelleştirmeler ekleme

Uygulamanızda SDK'yı henüz ayarlamadıysanız ve başlatmadıysanız Başlarken bölümünü izleyin.

1. App Center Distribute modülünü ekleme

App Center SDK modüler bir yaklaşımla tasarlanmıştır; bir geliştiricinin yalnızca ilgilendiği hizmetlerin modüllerini tümleştirmesi gerekir.

  1. Projenin uygulama düzeyi build.gradle dosyasını (app/build.gradle) açın ve sonra aşağıdaki satırları apply pluginekleyin.

    dependencies {
       def appCenterSdkVersion = '5.0.4'
       implementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}"
    }
    

    Not

    Android Gradle eklentinizin sürümü 3.0.0'dan düşükse , uygulamayıderleme ile değiştirmeniz gerekir.

  2. build.gradle dosyanızı kaydedin ve Android Studio'da bir Gradle eşitlemesi tetiklediğinden emin olun.

  3. DownloadManager güncelleştirmeleri indirmek için kullanılır. App Center SDK'sı güvenliği geliştirmek için TLS 1.2'yi zorunlu kıldı.

2. App Center Dağıtımını Başlat

App Center'ı kullanmak için kullanmak istediğiniz modülleri kabul edin. Varsayılan olarak hiçbir modül başlatılmaz ve SDK'yı başlatırken bunların her birini açıkça çağırmanız gerekir.

App Center Distribute hizmetini başlatmak için Yönteminize AppCenter.start() Distribute sınıfını ekleyin.

AppCenter.start(getApplication(), "{Your App Secret}", Distribute.class);
AppCenter.start(application, "{Your App Secret}", Distribute::class.java)

Yukarıdaki kod örneğinde uygulama gizli dizinizle değiştirdiğinizden {Your App Secret} emin olun. Yöntemine sınıf start() başvurusu Distribute eklediğinizde Android Studio gerekli içeri aktarma deyimini otomatik olarak önerir, ancak sınıf adlarının tanınmadığını belirten bir hata görürseniz, etkinlik sınıfınızdaki içeri aktarma deyimlerine aşağıdaki satırları ekleyin:

import com.microsoft.appcenter.AppCenter;
import com.microsoft.appcenter.distribute.Distribute;
import com.microsoft.appcenter.AppCenter
import com.microsoft.appcenter.distribute.Distribute

Not

Android 10 veya üzeri sürümlerde arka planda başlatma etkinliği kısıtlamaları vardır. Etkinlikleri arka planda başlatma kısıtlamaları hakkındaki makaleye bakın.

Not

Android 10 (Go sürümü) üzerinde çalışan uygulamalar SYSTEM_ALERT_WINDOW izni alamaz. Go cihazlarında SYSTEM_ALERT_WINDOW hakkındaki makaleye bakın.

Not

Android 11'de başlayarak, ACTION_MANAGE_OVERLAY_PERMISSION amaçlar kullanıcıyı her zaman üst düzey Ayarlar ekranına getirir ve burada kullanıcı uygulamalar için izinleri verebilir veya iptal SYSTEM_ALERT_WINDOW edebilir. Android 11'de izin güncelleştirmeleri hakkındaki makaleye bakın.

Google Play derlemenizi hazırlama

Google Play, çalışma zamanında kullanılmasa bile uygulama içi güncelleştirme kodunu kötü amaçlı davranış olarak kabul eder. Uygulamanızı Google Play'e göndermeden önce, bu bölümde belirtildiği gibi SDK'yı Dağıt'ın bir değişkenini kullanın veya uygulama içi güncelleştirme kodu içeren Distribute SDK'sını tamamen kaldırın. Bunun yapılmaması, uygulamanın Uyumsuzluk ve Google Play'den kaldırılmasına neden olabilir. Bunu kolaylaştırmak için App Center Distribute SDK'sının saplanmış API'ler içeren sürümünü sağlarız, bu nedenle sizin için tek değişiklik bağımlılık değişimidir.

  1. Projenin uygulama düzeyi build.gradle dosyasını (app/build.gradle açın.

  2. Ürün tatları ekleyerek derleme değişkenlerini yapılandırın:

    android {
        flavorDimensions "distribute"
        productFlavors {
            appCenter {
                dimension "distribute"
            }
            googlePlay {
                dimension "distribute"
            }
        }
    }
    
  3. Ürün çeşidine göre farklı bağımlılıkları kullanmak için bağımlılık bloğunu değiştirin:

    dependencies {
        def appCenterSdkVersion = "5.0.4"
        appCenterImplementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}"
        googlePlayImplementation "com.microsoft.appcenter:appcenter-distribute-play:${appCenterSdkVersion}"
    }
    
  4. build.gradle dosyanızı kaydedin ve Android Studio'da bir Gradle eşitlemesi tetiklediğinden emin olun.

  5. Derleme değişkenini Derleme > Seçme Değişkenini Seç açılan menüsünde veya araç penceresi çubuğundaki Derleme Varyantları'nda değiştirebilirsiniz.

Derleme varyantlarını yapılandırma hakkında daha fazla bilgiyi Android belgelerinde okuyabilirsiniz.

Özel dağıtım grubunu kullanma

Varsayılan olarak, Distribute bir genel dağıtım grubu kullanır. Özel bir dağıtım grubu kullanmak istiyorsanız, bunu API aracılığıyla setUpdateTrack açıkça ayarlamanız gerekir.

Distribute.setUpdateTrack(UpdateTrack.PRIVATE);
Distribute.setUpdateTrack(UpdateTrack.PRIVATE)

Not

UpdateTrack.PUBLIC varsayılan değerdir. Bu yöntem yalnızca yöntem çağrısından AppCenter.start önce çağrılabilir. Uygulama işlemi yeniden başlatıldığında güncelleştirme izlemesinde yapılan değişiklikler kalıcı olmaz ve bu nedenle yöntem her zaman çağrıdan önce AppCenter.start çağrılmazsa varsayılan olarak genel olur.

Uygulama ön plandayken (ve AppCenter.startsonrasındaDistribute.setUpdateTrack(UpdateTrack.PRIVATE);) kullanıcının kimliğini doğrulamak için bir tarayıcı penceresi açılır. Sonraki tüm güncelleştirme denetimleri, özel parçada en son sürümü alır.

Bir kullanıcı özel yoldaysa, başarılı kimlik doğrulamasından sonra üyesi olduğu tüm özel dağıtım gruplarından en son sürümü alacakları anlamına gelir. Bir kullanıcı genel yoldaysa, herhangi bir genel dağıtım grubundan en son sürümü edinebilecekleri anlamına gelir.

Güncelleştirme için Otomatik Denetimi Devre Dışı Bırak

Varsayılan olarak, SDK yeni sürümleri otomatik olarak denetler:

  • Uygulama başlatıldığında.
  • Arka plana geçtikten sonra uygulama ön plana çıktığında.
  • Daha önce devre dışı bırakılmışsa Dağıt modülünü etkinleştirirken.

Yeni sürümleri el ile denetlemek istiyorsanız, güncelleştirme için otomatik denetimi devre dışı bırakabilirsiniz. Bunu yapmak için SDK başlamadan önce aşağıdaki yöntemi çağırın:

Distribute.disableAutomaticCheckForUpdate();
Distribute.disableAutomaticCheckForUpdate()

Not

Bu yöntem, yöntem çağrısından AppCenter.start önce çağrılmalıdır.

Ardından, aşağıdaki bölümde açıklanan API'yi kullanabilirsiniz checkForUpdate .

El ile Güncelleştirme Denetimi

Distribute.checkForUpdate();
Distribute.checkForUpdate()

Bu, App Center'a bir istek gönderir ve yeni bir sürüm olması durumunda bir güncelleştirme iletişim kutusu görüntüler.

Not

Otomatik güncelleştirmeler etkinleştirildiğinde bile el ile güncelleştirme araması denetimi çalışır. Başka bir denetim zaten yapılıyorsa el ile güncelleştirme denetimi yoksayılır. Kullanıcı güncelleştirmeleri ertelediyse el ile güncelleştirme denetimi işlenmez (en son sürüm zorunlu bir güncelleştirme olmadığı sürece).

Uygulama içi güncelleştirme iletişim kutusunu özelleştirme veya yerelleştirme

1. Metni özelleştirme veya yerelleştirme

Güncelleştirme iletişim kutusunda görüntülenen metni değiştirmek veya yerelleştirmek istiyorsanız kendi kaynak dizelerinizi kolayca sağlayabilirsiniz. Bu kaynak dosyasındaki dize dosyalarına bakın. Aynı dize adını/anahtarını kullanın ve kendi uygulama kaynak dosyalarınızdaki iletişim kutusuna yansıtılacak yerelleştirilmiş değeri belirtin.

2. Güncelleştirme iletişim kutusunu özelleştirme

Arabirimini uygulayarak DistributeListener varsayılan güncelleştirme iletişim kutusunun görünümünü özelleştirebilirsiniz. Aşağıdaki örnekte gösterildiği gibi çağırmadan AppCenter.start önce dinleyiciyi kaydetmeniz gerekir:

Distribute.setListener(new MyDistributeListener());
AppCenter.start(...);
Distribute.setListener(MyDistributeListener())
AppCenter.start(...)

SDK iletişim kutusunu özel bir uygulamayla değiştiren dinleyici uygulamasının bir örneği aşağıda verilmiştir:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.net.Uri;

import com.microsoft.appcenter.distribute.Distribute;
import com.microsoft.appcenter.distribute.DistributeListener;
import com.microsoft.appcenter.distribute.ReleaseDetails;
import com.microsoft.appcenter.distribute.UpdateAction;

public class MyDistributeListener implements DistributeListener {

    @Override
    public boolean onReleaseAvailable(Activity activity, ReleaseDetails releaseDetails) {

        // Look at releaseDetails public methods to get version information, release notes text or release notes URL
        String versionName = releaseDetails.getShortVersion();
        int versionCode = releaseDetails.getVersion();
        String releaseNotes = releaseDetails.getReleaseNotes();
        Uri releaseNotesUrl = releaseDetails.getReleaseNotesUrl();

        // Build our own dialog title and message
        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
        dialogBuilder.setTitle("Version " + versionName + " available!"); // you should use a string resource instead, this is just a simple example
        dialogBuilder.setMessage(releaseNotes);

        // Mimic default SDK buttons
        dialogBuilder.setPositiveButton(com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_download, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

                // This method is used to tell the SDK what button was clicked
                Distribute.notifyUpdateAction(UpdateAction.UPDATE);
            }
        });

        // We can postpone the release only if the update isn't mandatory
        if (!releaseDetails.isMandatoryUpdate()) {
            dialogBuilder.setNegativeButton(com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_postpone, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                    // This method is used to tell the SDK what button was clicked
                    Distribute.notifyUpdateAction(UpdateAction.POSTPONE);
                }
            });
        }
        dialogBuilder.setCancelable(false); // if it's cancelable you should map cancel to postpone, but only for optional updates
        dialogBuilder.create().show();

        // Return true if you're using your own dialog, false otherwise
        return true;
    }
    
    @Override
    public void onNoReleaseAvailable(Activity activity) {
        Toast.makeText(activity, activity.getString(R.string.no_updates_available), Toast.LENGTH_LONG).show();
    }
}
import android.app.Activity
import android.app.AlertDialog
import com.microsoft.appcenter.distribute.Distribute
import com.microsoft.appcenter.distribute.DistributeListener
import com.microsoft.appcenter.distribute.ReleaseDetails
import com.microsoft.appcenter.distribute.UpdateAction

class MyDistributeListener : DistributeListener {

    override fun onReleaseAvailable(activity: Activity, releaseDetails: ReleaseDetails): Boolean {

        // Look at releaseDetails public methods to get version information, release notes text or release notes URL
        val versionName = releaseDetails.shortVersion
        val versionCode = releaseDetails.version
        val releaseNotes = releaseDetails.releaseNotes
        val releaseNotesUrl = releaseDetails.releaseNotesUrl

        // Build our own dialog title and message
        val dialogBuilder = AlertDialog.Builder(activity)
        dialogBuilder.setTitle("Version $versionName available!") // you should use a string resource instead, this is just a simple example
        dialogBuilder.setMessage(releaseNotes)

        // Mimic default SDK buttons
        dialogBuilder.setPositiveButton(
            com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_download
        ) { dialog, which ->
            // This method is used to tell the SDK what button was clicked
            Distribute.notifyUpdateAction(UpdateAction.UPDATE)
        }

        // We can postpone the release only if the update isn't mandatory
        if (!releaseDetails.isMandatoryUpdate) {
            dialogBuilder.setNegativeButton(
                com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_postpone
            ) { dialog, which ->
                // This method is used to tell the SDK what button was clicked
                Distribute.notifyUpdateAction(UpdateAction.POSTPONE)
            }
        }
        dialogBuilder.setCancelable(false) // if it's cancelable you should map cancel to postpone, but only for optional updates
        dialogBuilder.create().show()

        // Return true if you're using your own dialog, false otherwise
        return true
    }

    override fun onNoReleaseAvailable(activity: Activity) {
        Toast.makeText(activity, activity.getString(R.string.no_updates_available), Toast.LENGTH_LONG).show()
    }
}

Örnekte gösterildiği gibi, veya dinleyiciniz döndürüyorsa trueöğesini çağırmanız Distribute.notifyUpdateAction(UpdateAction.UPDATE);Distribute.notifyUpdateAction(UpdateAction.POSTPONE); gerekir.

çağrısı notifyUpdateActionyapmazsanız, geri arama her etkinlik değişikliğinde yinelenir.

Kullanıcı eylemi SDK'ya bildirilmeden önce etkinlik değişirse dinleyici aynı sürümle yeniden çağrılabilir.

Bu davranış aşağıdaki senaryoları kapsayacak şekilde gereklidir:

  • Uygulamanız arka plana gönderilir ( HOME tuşuna basma gibi) sonra farklı bir etkinlikte sürdürülür.
  • Etkinliğiniz, uygulamadan çıkmadan (bazı bildirimlere tıklamak gibi) başka bir etkinlik kapsamındadır.
  • Diğer benzer senaryolar.

Bu durumda, iletişim kutusunu barındıran etkinlik kullanıcı etkileşimi olmadan değiştirilebilir. Bu nedenle SDK, özel iletişim kutusunu geri yükleyebilmeniz için dinleyiciyi yeniden çağırır.

SDK'nın güncelleştirmeleri denetlediği ve şu anda kullanılandan daha yeni kullanılabilir güncelleştirmeler bulmadığı durumlarda, onNoReleaseAvailable arabirim geri çağırması DistributeListener çağrılır. Bu, bu tür senaryolarda özel kod yürütmenize olanak tanır. Yukarıdaki örnekte, güncelleştirme bulunamadığında bildirim iletisinin nasıl görüntüleneceği gösterilmektedir.

Çalışma zamanında App Center Dağıtımı'nı etkinleştirme veya devre dışı bırakma

App Center Dağıtımı'nı çalışma zamanında etkinleştirebilir ve devre dışı bırakabilirsiniz. Devre dışı bırakırsanız SDK, uygulama içi güncelleştirme işlevi sağlamaz ancak Hizmeti App Center portalında dağıtma özelliğini kullanmaya devam edebilirsiniz.

Distribute.setEnabled(false);
Distribute.setEnabled(false)

App Center Distribute'ı yeniden etkinleştirmek için aynı API'yi kullanın ancak parametre olarak geçirin true .

Distribute.setEnabled(true);
Distribute.setEnabled(true)

Durum, uygulama başlatmaları arasında cihazın depolama alanında kalıcı hale getirilir.

Bu API zaman uyumsuzdur. App Center Zaman Uyumsuz API'ler kılavuzumuzda bu konuda daha fazla bilgi edinebilirsiniz.

Not

Bu yöntem yalnızca başlatıldıktan sonra Distribute kullanılmalıdır.

App Center Dağıtımı'nın etkin olup olmadığını denetleyin

App Center Dağıtımı'nın etkinleştirilip etkinleştirilmediğini de de de kontrol edebilirsiniz:

Distribute.isEnabled();
Distribute.isEnabled()

Bu API zaman uyumsuzdur. App Center Zaman Uyumsuz API'ler kılavuzumuzda bu konuda daha fazla bilgi edinebilirsiniz.

Not

Bu yöntem yalnızca başlatıldıktan sonra Distribute kullanılmalıdır; her zaman başlamadan önce döndürülecektir false .

Hata ayıklama derlemeleri için uygulama içi güncelleştirmeleri etkinleştirme

App Center varsayılan olarak yalnızca sürüm derlemeleri için uygulama içi güncelleştirmeleri etkinleştirir.

Hata ayıklama derlemelerinde uygulama içi güncelleştirmeleri etkinleştirmek için önce AppCenter.startaşağıdaki yöntemi çağırın:

Distribute.setEnabledForDebuggableBuild(true);
Distribute.setEnabledForDebuggableBuild(true)

Not

Bu yöntem yalnızca hata ayıklama derlemelerini etkiler ve yayın derlemelerini etkilemez. Hata ayıklama derlemesi bayrağının android:debuggable olarak ayarlandığı true anlamına gelir (genellikle önceden tanımlanmış hata ayıklama derlemesi varyantları tarafından otomatik olarak ayarlanır). Aksi takdirde, bu bir yayın derlemesidir.

Uygulama içi güncelleştirmeler nasıl çalışır?

Not

Uygulama içi güncelleştirmelerin çalışması için bağlantıdan bir uygulama derlemesi indirilmelidir. IDE'den veya el ile yüklenirse çalışmaz.

Uygulama içi güncelleştirmeler özelliği aşağıdaki gibi çalışır:

  1. Bu özellik yalnızca App Center Distribute hizmeti kullanılarak dağıtılan RELEASE derlemeleriyle (varsayılan olarak) çalışır.

  2. SDK'yı tümleştirdikten, uygulamanızın yayın sürümünü derleyip App Center'a yükledikten sonra, bu dağıtım grubundaki kullanıcılara yeni sürüm için e-posta yoluyla bildirim gönderilir.

  3. Her kullanıcı bağlantıyı kendi e-postasında açtığında, uygulama kendi cihazına yüklenir. Yüklemek için e-posta bağlantısını kullanmaları önemlidir; dışarıdan yüklemeyi desteklemiyoruz. Bağlantıdan bir uygulama indirildiğinde SDK, güncelleştirmeleri daha sonra denetlemek için tanımlama bilgilerinden önemli bilgileri kaydeder, aksi takdirde SDK bu anahtar bilgilerine sahip değildir.

  4. Uygulama izlemeyi özel olarak ayarlarsa, kullanıcının kimliğini doğrulamak ve uygulama içi güncelleştirmeleri etkinleştirmek için bir tarayıcı açılır. Genel izne geri dönüp daha sonra tekrar özel sürüme geçtiğinde bile kimlik doğrulama bilgileri geçerli kaldığı sürece tarayıcı yeniden açılmaz. Tarayıcı kimlik doğrulaması başarılı olursa, kullanıcı otomatik olarak uygulamaya yeniden yönlendirilir. Parça genel ise (varsayılan değerdir), bir sonraki adım doğrudan gerçekleşir.

  5. Uygulamanın yeni sürümünde, aşağıdaki durumlarda kullanıcıların uygulamanızı güncelleştirmesini isteyen uygulama içi güncelleştirme iletişim kutusu gösterilir:

    • veya değerinin daha yüksek bir versionCode değeri
    • değerinin versionCode eşit ancak farklı bir değerinin değeridir versionName.

İpucu

Aynı APK'yı ikinci kez yüklerseniz, sürümler aynı olduğundan iletişim kutusu GÖRÜNTÜLENMEZ .

Uygulama içi güncelleştirmeleri test Nasıl yaparım??

Uygulama içi güncelleştirmeleri test etmek için uygulama içi güncelleştirmeleri test etmek için sürüm derlemelerini (App Center SDK'sının Dağıtma modülünü kullanan) App Center Portalı'na yüklemeniz ve her seferinde sürüm numaralarını artırmanız gerekir.

  1. Henüz yapmadıysanız uygulamanızı App Center Portalı'nda oluşturun.
  2. Uygulama içi güncelleştirme özelliğini test etme amaçlı olduğunu fark edebilmeniz için yeni bir dağıtım grubu oluşturun ve bunu adlandırın.
  3. Kendinizi (veya uygulama içi güncelleştirme özelliği testinize dahil etmek istediğiniz tüm kişileri) ekleyin. Bunun için App Center'da bu uygulama için kullanılmayan yeni veya çöpe atmış bir e-posta adresi kullanın. Bu, deneyiminizin gerçek testçilerinizin deneyimine yakın olmasını sağlar.
  4. Uygulamanızın App Center Distribute'ı içeren ve yukarıda açıklandığı gibi kurulum mantığını içeren yeni bir derleme oluşturun. Grup özelse setUpdateTrack API'sini kullanmaya başlamadan önce özel uygulama içi güncelleştirme izlemesini ayarlamayı unutmayın.
  5. Portalda Yeni sürümü dağıt düğmesine tıklayın ve uygulama derlemenizi karşıya yükleyin.
  6. Karşıya yükleme tamamlandıktan sonra İleri'ye tıklayın ve bu uygulama dağıtımının Hedefi olarak oluşturduğunuz Dağıtım grubunu seçin.
  7. Dağıtım'ı gözden geçirin ve derlemeyi uygulama içi test grubunuz için dağıtın.
  8. Bu gruptaki Kişiler, uygulamanın test edicisi olmak için bir davet alır. Daveti kabul ettikten sonra uygulamayı mobil cihazlarından App Center Portalı'ndan indirebilirler. Uygulama içi güncelleştirmeler yüklendikten sonra, uygulama içi güncelleştirmeleri test etmeye hazırsınız demektir.
  9. Uygulamanızın versionCode tümleştirmesini sağlayın.
  10. Uygulamanızın yayın sürümünü derleyin ve önceki adımda yaptığınız gibi uygulamanızın yeni bir derlemesini karşıya yükleyin ve bunu daha önce oluşturduğunuz Dağıtım Grubuna dağıtın. Uygulama bir sonraki başlatılışında Dağıtım Grubu üyelerinden yeni bir sürüm istenir.

İpucu

Dağıtım Grupları vb. hakkında daha ayrıntılı bilgi için App Center Distribute'ın nasıl kullanıldığına ilişkin bilgilere göz atın. Herhangi bir kod eklemeden uygulamanızın yeni bir sürümünü dağıtmak için App Center Distribute'ı kullanmak mümkün olsa da uygulamanızın koduna App Center Distribute eklemek, test edenleriniz ve kullanıcılarınız uygulama içi güncelleştirme deneyimini edindikçe daha sorunsuz bir deneyime neden olur.