Di chuyển vị trí cài đặt trên thiết bị Android 5 Lollipop chưa root


12

Tôi có một chiếc Moto G (thế hệ thứ 2) với Android 5.0 trên đó. Thẻ SD nội bộ khoảng 8Gb và tôi có thẻ SD bên ngoài với dung lượng trống 16Gb.

Di chuyển ứng dụng sang SDCARD từ menu của ứng dụng sẽ chuyển ứng dụng sang sdcard0 là thẻ SD bên trong.

Lệnh shell Adb:

pm get-install-location

đưa cho tôi:

0[auto]

Tôi đã cố gắng thiết lập vị trí cài đặt thông qua:

pm set-install-location 2

Nhưng tôi đang gặp lỗi này:

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

Đó là tôi tin rằng phàn nàn về quyền root.

Và bởi vì đó là một bản dựng sản xuất đang cố gắng:

adb root

đưa cho tôi:

 adbd cannot run as root in production builds

Có cách nào để thiết lập các ứng dụng cài đặt dữ liệu của chúng vào thẻ SD bên ngoài không?

Tái bút: Tôi không muốn cài đặt rom tùy chỉnh hoặc cài đặt phần mềm bên thứ ba để root điện thoại.

Chỉnh sửa: Tôi đã nhận thấy rằng dữ liệu ứng dụng được lưu trữ trong thư mục /storage/sdcard0/Android, vì vậy tôi đã nghĩ đến việc chuyển thư mục này sang /storage/sdcard1/và tạo một liên kết tượng trưng theo cách này:

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

điều này sẽ làm công việc?

Cảm ơn bạn.

Câu trả lời:


10

Về cơ bản nói: Bạn không thể. Ít nhất không phải không có rễ .
Những lý do chính khiến Android không cho phép bạn cài đặt ứng dụng vào thẻ SD bên ngoài là:

  1. Bảo mật : Đó là lý do chính cho hạn chế đó. Các hệ thống tệp cơ bản như NTFS hoặc FAT (bất kỳ phiên bản nào của nó) không cho phép quản lý quyền giống như Unix.
    Điều này có nghĩa là: bất kỳ ứng dụng nào cũng có thể ghi vào bất kỳ tệp nào trên bộ lưu trữ đó.
    Nghĩ đến các ứng dụng độc hại, họ sẽ có thể thay thế các ứng dụng phù hợp bằng các ứng dụng giả / bị nhiễm, gạch điện thoại của bạn và khiến nó không sử dụng được.

  2. Lưu trữ dễ bay hơi : Thẻ SD bên ngoài của bạn không an toàn để được cắm vào thiết bị của bạn mọi lúc. Bạn có thể đẩy nó ra bất cứ lúc nào điều gì làm cho thẻ SD của bạn không phải là ứng cử viên tốt cho việc lưu trữ vĩnh viễn. Xem xét các ứng dụng chạy ra khỏi thẻ SD của bạn và bạn đẩy nó ra. Những ứng dụng đó sẽ bị sập và tất cả các ứng dụng khác được lưu trên thẻ SD của bạn cũng biến mất. Bạn không thể sử dụng chúng tại thời điểm đó và dữ liệu của các ứng dụng đó cũng bị ảnh hưởng bởi lý do số 1.


Tôi có nền tảng linux vì vậy tôi đã xem xét phương pháp này: Tôi nhận thấy rằng tùy chọn menu của ứng dụng "Chuyển tới SDCARD" đã tạo một thư mục có tên Android trên sdcard0 (nội bộ) với dữ liệu ứng dụng trên đó; sẽ tạo một liên kết tượng trưng (trong sdcard0) được gọi là Android đến một thư mục có tên là Android trong sdcard1 có hoạt động không?
pr.nizar

Vấn đề là: các cửa hàng Android chỉ ứng dụng dữ liệu và obb trong /sdcard/sdcard0/Android. Các ứng dụng được lưu trữ trong một thư mục ẩn có tên là .android_securenơi thậm chí không rootcó quyền truy cập (Tôi đã kiểm tra nó trên thiết bị của mình, thậm chí bạn không thể cdvào thư mục đó).
GiantTree

Thật ra đó chính xác là những gì tôi cần! Vấn đề chính khiến tôi nghĩ đến điều này là dữ liệu đặc biệt là với các game nặng .. Các ứng dụng chính không lớn so với dữ liệu họ thêm vào sau này. Vì vậy, bạn nghĩ rằng nó có thể làm việc?
pr.nizar

Nếu nó chỉ là dữ liệu hoặc obb thì nó chắc chắn hoạt động. Ít nhất là trên các phiên bản Android không sdcard_rwthuộc về rootnhóm hoặc tính năng của người dùng sdcard_rw. Nhưng với một chút thay đổi quyền, bạn sẽ có thể sắp xếp nó ra.
GiantTree

Chạy ls -l /storage/sdcard0cho tôi cái này lrwxrwxrwx root root 2015-04-20 15:59 sdcard0 -> /storage/emulated/legacyvà chạy ls -l /storage/sdcard0/cho tôi cái này drwxrwx--x root sdcard_r 2014-12-20 18:16 Android.. Đó là tin tốt hay xấu? Vì tôi không root nên tôi tin rằng tôi không thể đặt quyền.
pr.nizar

6

Về cơ bản bạn có thể! ;)

  • Đầu tiên, Root điện thoại của bạn!
  • Thứ hai, Tạo phân vùng thứ cấp trong thẻ SD của bạn (Ext.4)> = 2GB và đặt nó làm chính.
  • Thứ ba, tải xuống và cài đặt ứng dụng Link2sd từ playstore. Mở ứng dụng và tôi sẽ yêu cầu bạn tạo một điểm gắn kết vào phân vùng thứ 2 của bạn. Chọn Có. Khởi động lại.

Sau khi khởi động lại, MỌI ứng dụng bạn cài đặt sẽ tự động chuyển sang thẻ SD.

Nếu bạn không biết cách tạo tìm kiếm phân vùng cho hướng dẫn trong Google, có rất nhiều trong số họ


Đó thực sự là những gì tôi đang cố gắng tránh: cài đặt phần mềm của bên thứ ba. :-)
pr.nizar

4

Đó là một hành trình tìm kiếm một câu trả lời không liên quan đến root nhưng tôi đã kết thúc:

  1. Mở khóa bộ nạp khởi động của tôi

  2. Khởi động trên TWRP mà không cần cài đặt nó:

    fastboot boot recovery.img
    
  3. Cài đặt SuperSU của Chainfire với TWRP.

  4. Từ Trình mô phỏng đầu cuối hoặc trình bao của adb :

    su
    pm set-install-location 2
    
  5. Từ menu của ứng dụng Settings > Applicationschỉ bằng cách Move to SDCARDdi chuyển nó * - dữ liệu và obb của nó - sang SDCARD bên ngoài.

  6. Xóa SuperSU ......

Toàn bộ

Không ... tôi đã không làm điều đó! 3 :)


0

Truy cập địa chỉ này http://developer.android.com/tools/help/shell.html#shellcommands

Android 5 trở lên không hỗ trợ điều này pm get-install-location

Cố gắng sao lưu apk của bạn và làm theo các bước dưới đây

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

Thí dụ

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

-r có nghĩa là cài đặt lại apk với dữ liệu hiện có và -s có nghĩa là sdcard


" Android 5 trở lên không hỗ trợ vị trí này get-install-location " - làm sao bạn biết? Hãy thử điều này: android.googlesource.com/pl platform / frameworks / base / + / . Nó dành cho Android 5.1.1. Tôi có hỗ trợ cho lập luận này trong Android 5.0.2, 5.1.1 và 6.0.1!
Firelord

Xin lỗi, nhưng -slà để chỉ định thiết bị nào adb sẽ hoạt động trên (" -s <serialNumber>").
Krzysztof Bociurko

-1

Đầu tiên cài đặt Adbd không an toàn ( tải xuống apk từ xda-developers ).

Sau khi cài đặt trên thiết bị của bạn, hãy mở nó và đánh dấu vào ô: "Bật adbd không an toàn".

Bây giờ bạn có thể thay đổi vị trí để cài đặt ứng dụng của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.