Uygulama yükleme konumu

API Düzeyi 8’den başlayarak uygulamanızın harici depolama alanı (örneğin, cihazın SD kartı). Bu, beyan edebileceğiniz isteğe bağlı bir özelliktir. android:installLocation manifest özelliğiyle uygulamanız için geçerlidir. CANNOT TRANSLATE beyan etmezseniz uygulamanız dahili depolama alanına yüklenecektir ve harici depolamaya taşınamaz.

Sistemin uygulamanızı harici depolama alanına yüklemesine izin vermek için android:installLocation özelliğini <manifest> öğesinde dahil etmek için "preferExternal" değerine sahip olmalıdır veya "auto". Örnek:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

"preferExternal" olduğunu belirtirseniz uygulamanızın ancak sistem, uygulamanızın tek bir cihazda yükleneceğini garanti etmez karşılaştırabilirsiniz. Harici depolama birimi doluysa sistem bunu dahili depolamaya depolama alanına sahip olursunuz. Kullanıcı ayrıca uygulamanızı iki konum arasında taşıyabilir.

"auto" olduğunu beyan ederseniz, uygulamanızın ancak yükleme konumu tercihiniz yok. Sistem, uygulamanızı nereye yükleyeceğinize çeşitli faktörlere göre karar verirsiniz. Kullanıcı ayrıca bir uygulamadır.

Uygulamanız harici depolama alanına yüklendiğinde:

  • Bu kadar uzun süre uygulama performansını etkilemez Harici depolama birimi cihaza takıldığından.
  • .apk dosyası harici depolamaya kaydedilir, ancak tüm gizli kullanıcı verileri veritabanları, optimize edilmiş .dex dosyaları ve ayıklanan yerel kod dahili cihaz belleği.
  • Uygulamanızın depolandığı benzersiz container rastgele bir şifresi yalnızca cihazı orijinal olarak yükleyen cihaz tarafından çözülebilen, oluşturulmuş bir anahtar içerir. Dolayısıyla, yalnızca tek bir cihazda çalıştığından emin olun.
  • Kullanıcı, sistem ayarları aracılığıyla uygulamanızı dahili depolamaya taşıyabilir.

Uyarı: Kullanıcı, dosya paylaşmak için USB yığın depolamasını etkinleştirdiğinde harici depolama biriminin bağlantısı kesildiğinde veya sistem ayarları üzerinden SD kartın bağlantısını kestiğinde ve harici depolama biriminde çalışan tüm uygulamalar hemen kapatılır.

Geriye dönük uyumluluk

Uygulamanız yalnızca harici depolama cihazına yüklenebilir. . Önceden oluşturulmuş mevcut uygulamalar her zaman dahili depolama alanına yüklenir ve harici depolama alanına taşınamaz depolama alanı (API Düzeyi 8 olan cihazlarda bile kullanılabilir). Ancak, uygulamanız bir API Düzeyi 8'in altında ise bu özelliği API Düzeyi 8 olan cihazlarda desteklemeyi seçebilirsiniz ve 8'den düşük API Düzeyi kullanan cihazlarla uyumlu olmaya devam eder.

Harici depolama alanına yüklemeye izin vermek ve API'den daha düşük sürümlerle uyumlu kalmak için 8. Seviye:

  1. android:installLocation özelliğini "auto" değeriyle ekleyin. veya "preferExternal" <manifest> içinde öğesine dokunun.
  2. android:minSdkVersion özelliğinizi olduğu gibi bırakın (daha küçük bir değer) "8") ve uygulama kodunuzun yalnızca bununla uyumlu API'leri kullandığından emin olun. seviyesinde olmalıdır.
  3. Uygulamanızı derlemek için derleme hedefinizi API Düzeyi 8 olarak değiştirin. Bu Eski Android kitaplıkları android:installLocation kodunu anlamadığı için gereklidir özelliğini kullanabilir ve mevcut olduğunda uygulamanızı derlemez.

Uygulamanız, API Düzeyi 8'den düşük olan bir cihaza yüklendiğinde android:installLocation özelliği yok sayılır ve uygulama, dahili depolama alanına sahip olursunuz.

Dikkat: Bu tür XML işaretlemeleri Google tarafından eski platformlarda sunulan, API Düzeyi 8'de kullanıma sunulan programlama API'lerini kullanmamaya minSdkVersion değeri "8"in altındaysa, kodunuzda geriye dönük uyumluluk sağlar.

Harici depolama alanına YÜKLEMEMESİ gereken uygulamalar

Kullanıcı, dosyaları bilgisayarıyla paylaşmak için USB yığın belleğini etkinleştirdiğinde (veya başka bir şekilde) harici depolama biriminin bağlantısını keser veya kaldırır), harici depolamada yüklü ve şu anda çalışmakta olan reklamlar sonlandırıldı. Sistem, verimli bir şekilde uygulamanın farkında olmadan, yığın depolama devre dışı bırakılana ve harici depolama birimi yerine yeniden takılması gerekir. Uygulamayı sonlandırmanın ve kullanıcının kullanamamasını sağlamanın yanı sıra bazı uygulama türlerini daha ciddi bir şekilde bozabilir. Başvurunuzu ve beklendiği gibi davranırsa uygulamanızın belirtilen durumunda oluşabilecek sonuçlar:

Hizmetler
Koşu performansınız Service sonlandırılır ve harici depolama birimi tekrar bağlandığında yeniden başlatılmaz. Uygulamalar kaydedicisi olacaktır. ACTION_EXTERNAL_APPLICATIONS_AVAILABLE. (Yayın amacı, çalışmayan tüm uygulamaları bildirir) Uygulamalar harici depolama cihazına yüklendiğinde sistem tarafından tekrar kullanılabilir hale gelir. Bu mesajı aldıktan sonra uygulamanız, hizmetinize bağlanmayı deneyebilir.
Alarm Hizmetleri
AlarmManager ile kayıtlı alarmlarınız iptal edilecek. Şunu yapmalısınız: Harici depolama birimi tekrar takıldığında tüm alarmları manuel olarak yeniden kaydetme.
Giriş Yöntemi Motorları
IME'niz varsayılan IME ile değiştirilir. Harici depolama birimi tekrar bağlandığında kullanıcı sistem ayarlarını açabilir kullanarak IME'nizi yeniden etkinleştirin.
Animasyonlu Duvar Kağıtları
Koşu Animasyonlu Duvar Kağıdınız varsayılan Animasyonlu Duvar Kağıdı ile değiştirilir. Harici depolama birimi tekrar bağlandığında kullanıcı Animasyonlu Duvar Kağıdı'nı tekrar seçin.
Uygulama Widget'ları
Uygulama Widget'ınız kaldırılacak sağlayabilirsiniz. Harici depolama birimi tekrar bağlandığında Uygulama Widget'ınız ayarlanmaz kullanıcının seçim yapması için, sistem ana ekran uygulamasını sıfırlayana kadar (genellikle yeniden başlatma) gerekir.
Hesap Yöneticileri
AccountManager ile oluşturulan hesaplarınız şu tarihe kadar kaybolacak: AccountManager ve harici depolama biriminin yeniden bağlanmasını sağlayın.
Senkronizasyon Adaptörleri
AbstractThreadedSyncAdapter cihazınız ve tüm senkronizasyon işlevleri çalışmayacaktır.
Cihaz Yöneticileri
DeviceAdminReceiver cihazınız ve tüm yönetici özellikleri Bu durum, cihaz işlevselliği üzerinde öngörülemeyen sonuçlar doğurabilir ve Bu da, harici depolama cihazı yeniden takıldığında devam eder.
"Başlatma tamamlandı" ifadesini dinleyen Yayın Alıcıları
Sistem ACTION_BOOT_COMPLETED yayınını sunar . Uygulamanız bu yayını hiçbir zaman alamaz.

Uygulamanız yukarıda listelenen özelliklerden herhangi birini kullanıyorsa izin vermemeniz gerekir. harici depolamaya yüklenecektir. Varsayılan olarak sistem harici depolamaya yüklenecektir; bu nedenle mevcut ayarlarınızla ilgili izin verir. Ancak, uygulamanızın android:installLocation öğesini "internalOnly" değeriyle tanımlayarak bu durumu açıkça belirtmeniz gerekir. Bu proje varsayılan davranışı değiştirdiğinizde, uygulamanızın yalnızca bu uygulama için yer alır ve size ve diğer geliştiricilere, bu kararın uygulamaya daha önce emin olun.

Harici depolama alanına yüklenmesi gereken uygulamalar

Basit bir şekilde açıklamak gerekirse, önceki bölümde listelenen özellikleri kullanmayan tüm öğeler harici depolamaya yüklendiğinde güvenlidir. Büyük oyunlar daha çok uygulamalar için genellikle bunu yapmanıza gerek yok çünkü oyunlar çoğu zaman etkin olmadığında ek hizmetler sağlaması gerekir. Harici depolama alanının kullanılamaz hale gelmesi ve bir oyunun işlemi sonlandırıldığında, depolama alanı tekrar kullanılabilir hale geldiğinde görünür bir etkisi olmayacaktır. Kullanıcı oyunu yeniden başlatır (oyunun normal oyun sırasında Etkinlik yaşam döngüsü) kaldırın.

Uygulamanız APK dosyası için birkaç megabayt gerektiriyorsa uygulamanın harici depolamaya yüklenmesinin mümkün olup olmadığını dikkatlice düşünün. kullanıcılar dahili depolama alanında yer kaplayabilir.

Daha fazla ilgili bilgi için aşağıdaki kaynakları inceleyebilirsiniz: <manifest>