Memindahkan lokasi instalasi pada perangkat Android 5 Lollipop yang tidak di-root

12

Saya memiliki Moto G (generasi ke-2) dengan Android 5.02 di atasnya. Kartu SD internal sekitar 8Gb dan saya memiliki kartu SD eksternal dengan ruang bebas 16Gb.

Memindahkan aplikasi ke SDCARD dari menu aplikasi memindahkannya ke sdcard0 yang merupakan kartu SD internal.

Perintah shell adb:

pm get-install-location

memberi saya:

0[auto]

Saya mencoba mengatur lokasi instalasi melalui:

pm set-install-location 2

Tapi saya mendapatkan kesalahan ini:

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

Itu saya yakin mengeluh tentang izin root.

Dan karena ini adalah produksi yang mencoba:

adb root

memberi saya:

 adbd cannot run as root in production builds

Apakah ada cara untuk mengatur aplikasi menginstal data mereka ke kartu SD eksternal?

PS: Saya tidak ingin menginstal rom khusus atau menginstal perangkat lunak pihak ketiga untuk melakukan root pada ponsel.

Sunting: Saya perhatikan bahwa data aplikasi disimpan di folder /storage/sdcard0/Android, jadi saya berpikir untuk memindahkan folder ini ke /storage/sdcard1/dan membuat symlink dengan cara ini sebagai gantinya:

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

apakah ini akan berhasil?

Terima kasih.

pr.nizar
sumber

Jawaban:

10

Pada dasarnya berbicara: Anda tidak bisa. Setidaknya bukan tanpa rooting .
Alasan utama Android tidak memungkinkan Anda untuk menginstal aplikasi ke kartu SD eksternal Anda adalah:

  1. Keamanan : Itulah alasan utama pembatasan itu. Sistem file dasar seperti NTFS atau FAT (versi apa pun) tidak mengizinkan manajemen izin seperti Unix.
    Ini berarti: aplikasi apa pun dapat menulis ke file apa pun di penyimpanan itu.
    Berpikir tentang aplikasi jahat, mereka akan dapat mengganti aplikasi yang tepat dengan yang palsu / terinfeksi, merusak ponsel Anda dan menjadikannya tidak dapat digunakan.

  2. Penyimpanan yang mudah menguap : Kartu SD eksternal Anda tidak aman untuk dimasukkan ke dalam perangkat Anda sepanjang waktu. Anda dapat mengeluarkannya kapan saja yang membuat kartu SD Anda bukan kandidat yang bagus untuk penyimpanan permanen. Pertimbangkan aplikasi yang menjalankan kartu SD Anda dan Anda mengeluarkannya. Aplikasi-aplikasi itu hanya akan macet dan semua aplikasi lain yang tersimpan di kartu SD Anda juga hilang. Anda tidak dapat menggunakannya saat itu dan data aplikasi tersebut juga dipengaruhi oleh alasan # 1.

GiantTree
sumber
Saya memiliki latar belakang linux jadi saya mempertimbangkan pendekatan ini: Saya perhatikan bahwa pilihan menu aplikasi "Pindahkan ke SDCARD" membuat folder bernama Android pada sdcard0 (internal) dengan data aplikasi di dalamnya; akan membuat symlink (dalam sdcard0) yang disebut Android ke folder yang disebut Android dalam sdcard1 berfungsi?
pr.nizar
Masalahnya adalah: hanya menyimpan Android aplikasi data dan obb di /sdcard/sdcard0/Android. Aplikasi disimpan dalam folder tersembunyi yang disebut di .android_securemana bahkan tidak rootmemiliki akses (Saya mengujinya di perangkat saya, Anda bahkan tidak bisa cdke folder itu).
GiantTree
Sebenarnya itulah yang saya butuhkan! Masalah utama yang membuat saya berpikir tentang ini adalah data terutama dengan game berat .. Aplikasi utama tidak sebesar itu dibandingkan dengan data yang mereka tambahkan nanti. Jadi Anda pikir itu mungkin berhasil?
pr.nizar
Jika hanya data atau obb maka pasti berfungsi. Setidaknya pada versi Android yang tidak menjadikannya sdcard_rwmilik rootgrup atau fitur pengguna sdcard_rwsama sekali. Tetapi dengan sedikit perubahan izin Anda harus bisa menyelesaikannya.
GiantTree
Berlari ls -l /storage/sdcard0memberi saya ini lrwxrwxrwx root root 2015-04-20 15:59 sdcard0 -> /storage/emulated/legacydan berlari ls -l /storage/sdcard0/memberi saya ini drwxrwx--x root sdcard_r 2014-12-20 18:16 Android.. Apakah itu kabar baik atau buruk? Karena saya bukan root, saya yakin saya tidak bisa mengatur izin.
pr.nizar
6

Pada dasarnya kamu bisa! ;)

  • Pertama, lakukan root pada ponsel Anda!
  • Kedua, Buat partisi sekunder di kartu SD Anda (Ext.4)> = 2GB dan tetapkan sebagai primer.
  • Ketiga, unduh dan instal aplikasi Link2sd dari playstore. Buka aplikasi, dan saya akan meminta Anda untuk membuat titik mount ke partisi ke-2 Anda. Pilih Ya. Mulai ulang.

Setelah reboot, SETIAP aplikasi yang Anda instal akan secara otomatis masuk ke kartu SD.

Jika Anda tidak tahu cara membuat pencarian partisi untuk panduan di Google ada banyak dari mereka

Kanellis
sumber
Sebenarnya itulah yang saya coba hindari: menginstal perangkat lunak pihak ketiga. :-)
pr.nizar
4

Itu adalah perjalanan yang cukup untuk mencari jawaban yang tidak melibatkan rooting tetapi saya akhirnya:

  1. Membuka kunci bootloader saya

  2. Booting di TWRP tanpa menginstalnya:

    fastboot boot recovery.img
    
  3. Menginstal SuperSU Chainfire dengan TWRP.

  4. Dari Terminal Emulator atau adb shell:

    su
    pm set-install-location 2
    
  5. Dari menu aplikasi Settings > Applicationshanya dengan mendorong Move to SDCARDgerakannya * - data dan obb - ke SDCARD eksternal.

  6. Menghapus SuperSU ......

Membatalkan root penuh

Nah ... saya tidak melakukan itu! 3 :)

pr.nizar
sumber
0

Pergi ke alamat ini http://developer.android.com/tools/help/shell.html#shellcommands

Android 5 dan di atasnya tidak mendukung ini pm get-install-location

Coba cadangkan apk Anda dan ikuti langkah-langkah di bawah ini

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

Contoh

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

-r berarti menginstal ulang apk dengan data yang ada dan -s berarti sdcard

Akash Sarkar
sumber
" Android 5 dan di atasnya tidak mendukung pm get-install-location ini " - bagaimana Anda tahu? Coba ini: android.googlesource.com/platform/frameworks/base/+/… . Ini untuk Android 5.1.1. Saya memiliki dukungan untuk argumen ini di Android 5.0.2, 5.1.1 dan 6.0.1!
Firelord
Maaf, tetapi -suntuk menentukan perangkat mana yang harus dioperasikan adb (" -s <serialNumber>").
Krzysztof Bociurko
-1

Pertama instal Adbd insecure ( unduhan apk dari xda-developer ).

Setelah diinstal pada perangkat Anda, buka dan tandai kotak: "Aktifkan adbd tidak aman".

Sekarang Anda dapat mengubah lokasi untuk menginstal aplikasi Anda.

Jherome
sumber