Rootlu olmayan Android 5 Lollipop cihazında kurulum konumunu taşıma


12

Üzerinde Android 5.02 bulunan bir Moto G (2. nesil) var. Dahili SD kart yaklaşık 8GB ve 16GB boş alana sahip harici bir SD kartım var.

Uygulamayı uygulamanın menüsünden SDCARD'a taşımak dahili SD kart olan sdcard0'a taşır.

Adb shell komutu:

pm get-install-location

bana verir:

0[auto]

Kurulum konumunu aşağıdaki yollarla ayarlamaya çalıştım:

pm set-install-location 2

Ama bu hatayı alıyorum:

Error: java.lang.SecurityException: Package android does not belong to 2000

Kök izinleri hakkında şikayetçi olduğuna inanıyorum.

Ve bu bir üretim yapısı denediğinden:

adb root

bana verir:

 adbd cannot run as root in production builds

Uygulamaların verilerini harici SD karta yükleyecek şekilde ayarlanmasının bir yolu var mı?

Not: Telefonu rootlamak için özel bir rom veya üçüncü taraf yazılımı yüklemek istemiyorum.

Düzenleme: Ben uygulama verileri klasörde saklandığını fark ettim /storage/sdcard0/Android, bu yüzden bu klasörü taşımak /storage/sdcard1/ve bunun yerine bir symlink oluşturmayı düşündüm :

ln -s /storage/sdcard1/Android /storage/sdcard0/Android

bu işi yapacak mı?

Teşekkür ederim.

Yanıtlar:


10

Temel olarak konuşursak: Yapamazsınız. En azından kök salmadan .
Android'in harici SD kartınıza bir uygulama yüklemenize izin vermemesinin ana nedenleri:

  1. Güvenlik : Bu kısıtlamanın ana nedeni budur. NTFS veya FAT gibi temel dosya sistemleri (herhangi bir sürümü) Unix benzeri izin yönetimine izin vermez.
    Bu şu anlama gelir: herhangi bir uygulama o depolama alanındaki herhangi bir dosyaya yazabilir .
    Kötü amaçlı uygulamaları düşünerek, uygun uygulamaları sahte / virüslü uygulamalarla değiştirebilir, telefonunuzu tutabilir ve kullanılamaz hale getirebilirler.

  2. Geçici depolama : Harici SD kartınızın cihazınıza sürekli takılması güvenli değildir. SD kartınızı kalıcı bir depolama için çok iyi bir aday yapmayan şeyleri istediğiniz zaman çıkarabilirsiniz. SD kartınızdan biten uygulamaları düşünün ve kartınızı çıkarın. Bu uygulamalar çökecek ve SD kartınıza kaydedilen diğer tüm uygulamalar da yok olacak. Bunları o anda kullanamazsınız ve bu uygulamanın verileri de neden # 1'den etkilenir.


Ben linux bir arka plan var bu yüzden bu yaklaşımı düşündüm: Uygulamanın menü seçeneği "SDCARD'a Taşı" sdcard0 (dahili bir) üzerinde uygulama verileri ile Android adlı bir klasör oluşturdu fark ettim; sdcard1 çalışma Android adlı bir klasöre Android adlı bir symlink (sdcard0 içinde) oluşturma?
pr.nizar

Konudur: Android depolar yalnızca uygulama verileri ve obb içinde /sdcard/sdcard0/Android. Uygulamalar , erişimi .android_securebile olmayan gizli bir klasörde saklanır root(cihazımda test ettim, cdo klasöre bile yapamazsınız ).
GiantTree

Aslında tam da ihtiyacım olan şey bu! Bunu düşünmeme sebep olan temel sorun, özellikle ağır oyunlardaki veriler . Ana uygulamalar daha sonra ekledikleri verilere göre o kadar büyük değil. Sence işe yarayabilir mi?
pr.nizar

Sadece veri veya obb ise kesinlikle işe yarıyor. En azından kullanıcı grubuna sdcard_rwait olmayan rootveya özellikli olmayan Android sürümlerinde sdcard_rw. Ancak biraz izin değişikliği ile bunu halledebilmelisiniz.
GiantTree

Koşmak ls -l /storage/sdcard0bana bunu verdi lrwxrwxrwx root root 2015-04-20 15:59 sdcard0 -> /storage/emulated/legacyve koşmak ls -l /storage/sdcard0/bunu bana verdi drwxrwx--x root sdcard_r 2014-12-20 18:16 Android.. Bu iyi mi kötü mü? Kök olmadığım için izin ayarlayamadığımı düşünüyorum.
pr.nizar

6

Temelde yapabilirsiniz! ;)

  • İlk olarak, telefonunuzu köklendirin!
  • İkinci olarak, SD kartınızda ikincil bir bölüm oluşturun (Dahili 4)> = 2 GB ve birincil olarak ayarlayın.
  • Üçüncü olarak, PlayStore'dan Link2sd uygulamasını indirin ve yükleyin. Uygulamayı açın ve sizden 2. bölümünüz için bir bağlama noktası oluşturmanızı isteyeceğim. Evet'i seçin. Yeniden Başlatma.

Yeniden başlattıktan sonra, yüklediğiniz HER uygulama otomatik olarak SD karta gider.

Google'da bir rehber için bölüm araması oluşturmayı bilmiyorsanız, bunlardan birçoğu vardır


Aslında bundan kaçınmaya çalışıyorum: üçüncü taraf yazılımı yüklemek. :-)
pr.nizar

4

Bu köklenme içermeyen bir cevap aramak için oldukça büyük bir yolculuktu ama sonuçta:

  1. Önyükleyicimin kilidini açma

  2. Yüklemeden TWRP'de önyükleme :

    fastboot boot recovery.img
    
  3. Yükleme Chainfire en SuperSu TWRP ile.

  4. Gönderen Terminal emülatörü veya ADB 'nin kabuk:

    su
    pm set-install-location 2
    
  5. Bir uygulamanın menüsünden Settings > Applicationsyalnızca itme Move to SDCARDsırasında * - verileri ve obb - harici SDCARD'a taşır.

  6. SuperSU kaldırılıyor ......

Tam kökten sökme

Hayır ... Bunu ben yapmadım! 3 :)


0

Bu adrese gidin http://developer.android.com/tools/help/shell.html#shellcommands

Android 5 ve üstü bunu desteklemiyor pm get-install-location

Apk'nizi yedeklemeye çalışın ve aşağıdaki adımları izleyin

adb shell pm install -r -s <path of your apk>

Misal

adb shell pm install -r -s /storage/sdcard1/base.apk

-r, mevcut verilerle apk'yi yeniden yüklemek ve -s sdcard anlamına gelir


" Android 5 ve üstü bu pm get-install-location'ı desteklemiyor " - nereden biliyorsun? Bunu deneyin: android.googlesource.com/platform/frameworks/base/+/… . Android 5.1.1 içindir. Bu argümanı Android 5.0.2, 5.1.1 ve 6.0.1'de destekliyorum!
Firelord

Maalesef -siçin ameliyat ADB gereken cihaz belirten (" -s <serialNumber>").
Krzysztof Bociurko

-1

İlk olarak Adbd güvensizliği yükleyin ( xda-geliştiricilerden apk indir ).

Cihazınıza yüklendikten sonra açın ve "Güvenli olmayan erişimi etkinleştir" kutusunu işaretleyin.

Artık uygulamalarınızı yükleyeceğiniz konumu değiştirebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.