Переміщення місця установки на не вкоріненому пристрої Android 5 Lollipop


12

У мене Moto G (2-е покоління) з Android 5.02 на ньому. Внутрішня SD-карта становить близько 8 Гбіт, і у мене є зовнішня SD-карта з вільним простором 16 Гб.

Переміщення програми на SDCARD з меню програми переміщує її на sdcard0, яка є внутрішньою SD-карткою.

Команда командної оболонки:

pm get-install-location

дає мені:

0[auto]

Я спробував встановити місце установки через:

pm set-install-location 2

Але я отримую цю помилку:

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

Тобто я вважаю, що скаржаться на кореневі дозволи.

А тому, що це виробнича спроба:

adb root

дає мені:

 adbd cannot run as root in production builds

Чи є спосіб встановити програми встановлювати свої дані на зовнішню SD-карту?

PS: Я не хочу встановлювати користувальницький rom або встановлювати програмне забезпечення сторонніх розробників, щоб викорінювати телефон.

Редагувати: Я помітив, що дані програм зберігаються у папці /storage/sdcard0/Android, тому я подумав перенести цю папку /storage/sdcard1/та створити символьне посилання таким чином:

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

це зробить роботу?

Дякую.

Відповіді:


10

В основному кажучи: Ви не можете. Принаймні не без вкорінення .
Основні причини Android не дозволяє встановлювати додаток на зовнішню SD карту:

  1. Безпека : це головна причина цього обмеження. Базові файлові системи, такі як NTFS або FAT (будь-яка його версія), не дозволяють Unix-подібне управління дозволами.
    Це означає: будь-яка програма зможе записати в будь-який файл на цьому сховищі.
    Думаючи про шкідливі програми, вони зможуть замінити належні додатки на підроблені / заражені, прискоривши ваш телефон і зробивши його непридатним.

  2. Летке зберігання : Вашу зовнішню SD-карту не можна постійно вставляти у пристрій. Ви можете його викинути будь-коли, що робить вашу SD-карту не дуже хорошим кандидатом на постійне зберігання. Подумайте про те, що додатки закінчуються на вашій SD-карті, і ви виймете її. Ці програми просто вийдуть з ладу, і всі інші додатки, збережені на вашій SD-картці, також втрачаються. Ви не можете їх використовувати в той час, і на дані цього додатку також впливає причина 1.


У мене є Linux-фон, тому я розглядав такий підхід: я помітив, що опція меню програми «Переміститись на SDCARD» створила папку під назвою Android на sdcard0 (внутрішню) з даними про неї; чи створить симпосилання (в sdcard0) під назвою Android до папки під назвою Android в sdcard1?
пр.нізар

Питання: Android зберігає тільки прикладні дані і ФЖДА в /sdcard/sdcard0/Android. Програми зберігаються у прихованій папці під назвою, до .android_secureякої навіть rootнемає доступу (я тестував її на своєму пристрої, ви навіть не можете cdдо неї).
GiantTree

Насправді саме це мені і потрібно! Основна проблема, з якою я думаю про це, - це дані, особливо для важких ігор. Основні програми не такі великі порівняно з даними, які вони додають пізніше. Отже, ви думаєте, що це може спрацювати?
пр.нізар

Якщо це лише дані або obb, то це, безумовно, працює. Принаймні, для версій Android, які взагалі не sdcard_rwналежать до rootгрупи або не користуються користувачем sdcard_rw. Але з невеликими змінами дозволу ви зможете розібратися в цьому.
GiantTree

Біг ls -l /storage/sdcard0дав мені це, lrwxrwxrwx root root 2015-04-20 15:59 sdcard0 -> /storage/emulated/legacyа біг ls -l /storage/sdcard0/дав мені це drwxrwx--x root sdcard_r 2014-12-20 18:16 Android. Це хороша чи погана новина? Оскільки я не root, я вважаю, що не можу встановити дозволи.
пр.нізар

6

В основному можна! ;)

  • По-перше, корінь свій телефон!
  • По-друге, Створіть вторинний розділ на SD-карті (Ext.4)> = 2 ГБ і встановіть його як основний.
  • По-третє, завантажте та встановіть додаток Link2sd з playstore. Відкрийте додаток, і я попрошу створити точку монтування для вашого 2-го розділу. Виберіть Так. Перезавантажте.

Після перезавантаження кожен встановлений додаток автоматично перейде на SD-карту.

Якщо ви не знаєте, як створити пошук розділів для посібника в Google, їх є багато


Це власне те, чого я намагаюся уникати: встановлення стороннього програмного забезпечення. :-)
пр.нізар

4

Це була ціла мандрівка, шукаючи відповідь, яка не включала вкорінення, але я закінчився:

  1. Розблокування мого завантажувача

  2. Завантаження на TWRP без встановлення:

    fastboot boot recovery.img
    
  3. Встановлення SuperSU Chainfire з TWRP.

  4. Від емулятора терміналу або оболонки adb :

    su
    pm set-install-location 2
    
  5. З меню програми Settings > Applicationsлише натисканням Move to SDCARDпереміщується * - його дані та obb - до зовнішньої SDCARD.

  6. Видалення SuperSU ......

Повне викорінення

Ні, я цього не робив! 3 :)


0

Перейдіть за цією адресою http://developer.android.com/tools/help/shell.html#shellcommands

Android 5 і вище не підтримує це pm get-install-location

Спробуйте створити резервну копію apk та виконайте наведені нижче дії

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

Приклад

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

-r означає перевстановити apk з наявними даними та -s означає sdcard


" Android 5 і новіші версії не підтримують цю вечірню установку get-install " - як ви це знаєте? Спробуйте це: android.googlesource.com/platform/frameworks/base / + / ... . Це для Android 5.1.1. Я підтримую цей аргумент у своїх Android 5.0.2, 5.1.1 та 6.0.1!
Firelord


-1

Спочатку встановіть Adbd небезпечно ( завантажте apk від xda-developers ).

Після встановлення на вашому пристрої відкрийте його та позначте поле: "Увімкнути незахищений adbd".

Тепер ви можете змінити місце для встановлення своїх додатків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.