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:
android:installLocation
özelliğini "auto
" değeriyle ekleyin. veya "preferExternal
"<manifest>
içinde öğesine dokunun.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.- 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>