루팅되지 않은 Android 5 Lollipop 기기에서 설치 위치 이동


12

Android 5.02가있는 Moto G (2 세대)가 있습니다. 내부 SD 카드는 약 8Gb이며 여유 공간이 16Gb 인 외부 SD 카드가 있습니다.

응용 프로그램 메뉴에서 응용 프로그램을 SDCARD로 이동하면 내부 SD 카드 인 sdcard0으로 이동합니다.

ADB 쉘 명령 :

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 카드에 데이터를 설치하도록 설정할 방법이 있습니까?

추신 : 전화를 뿌리기 위해 사용자 지정 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의 영향을받습니다.


나는 리눅스 배경을 가지고 있으므로이 접근법을 고려했다 : 나는 응용 프로그램의 메뉴 옵션 "SDCARD로 이동"이 응용 프로그램 데이터가있는 sdcard0 (내부 폴더)에 Android라는 폴더를 생성했음을 알았습니다. sdcard1에서 Android라는 폴더에 Android라는 symlink (sdcard0에서)를 작성합니까?
pr.nizar

문제는 Android가 애플리케이션 데이터 만 저장 하고에 obb하는 것 입니다 /sdcard/sdcard0/Android. 응용 프로그램은 액세스 할 수 .android_secure없는 곳 이라는 숨겨진 폴더에 저장 root됩니다 (장치에서 테스트 했으므로 cd해당 폴더로 이동할 수도 없습니다 ).
GiantTree

실제로 그것이 바로 내가 필요로하는 것입니다! 이 문제를 생각하게하는 주요 문제는 특히 게임이 많은 경우의 데이터입니다 . 주요 응용 프로그램은 나중에 추가하는 데이터에 비해 그리 크지 않습니다. 그래서 당신은 그것이 효과가 있다고 생각합니까?
pr.nizar

그것은 단지의 경우 데이터 또는 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. 루트가 아니므로 권한을 설정할 수 없다고 생각합니다.
pr.nizar

6

기본적으로 할 수 있습니다! ;)

  • 먼저 전화를 뿌리십시오!
  • 둘째, SD 카드 (Ext.4)> = 2GB에 보조 파티션을 생성하여 기본 파티션으로 설정하십시오.
  • 셋째, Playstore에서 Link2sd 앱을 다운로드하여 설치하십시오. 앱을 열고 두 번째 파티션에 대한 마운트 지점을 만들도록 요청합니다. 예를 선택하십시오. 재부팅하십시오.

재부팅 후 설치하는 모든 앱은 자동으로 SD 카드로 이동합니다.

Google에서 가이드에 대한 파티션 검색을 만드는 방법을 모른다면 많은 가이드가 있습니다.


그것은 실제로 피하려고하는 것입니다 : 타사 소프트웨어 설치. :-)
pr.nizar

4

그것은 응원을 포함하지 않는 답변을 찾는 여행이었습니다. 그러나 나는 결국 끝났습니다.

  1. 부트 로더 잠금 해제

  2. 설치하지 않고 TWRP에서 부팅 :

    fastboot boot recovery.img
    
  3. TWRP와 함께 Chainfire의 SuperSU 설치 .

  4. 에서 터미널 에뮬레이터 또는 ADB 의 쉘 :

    su
    pm set-install-location 2
    
  5. 응용 프로그램 메뉴에서 Settings > Applications푸시 만하면 Move to SDCARD해당 데이터 (* 및 데이터)가 외부 SDCARD로 이동합니다.

  6. SuperSU 제거 중 ......

완전 뿌리

아냐 ... 안했어! 삼:)


0

이 주소로 이동 하십시오 http://developer.android.com/tools/help/shell.html#shellcommands

안드로이드 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-location을 지원하지 않습니다 "-어떻게 알 수 있습니까? 이 시도 : android.googlesource.com/platform/frameworks/base/+/... . Android 5.1.1 용입니다. 내 Android 5.0.2, 5.1.1 및 6.0.1에서이 인수를 지원합니다!
Firelord

죄송하지만 adb가 작동 할 장치 ( " ") -s지정 하기위한 것 -s <serialNumber>입니다.
Krzysztof Bociurko

-1

먼저 Adbd 안전하지 않은 설치 ( apk download from xda-developers ).

장치에 설치 한 후 장치를 열고 "안전하지 않은 adbd 활성화"상자를 표시하십시오.

이제 앱을 설치할 위치를 변경할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.