문제

이제 우리는 할 수 있습니다 원격 쉘에서 SQLITE3 데이터베이스를 검사합니다, ADB 쉘의 공동 차가를 검사 할 수 있습니까? 디버깅 할 때 명령 줄에서 공유 차가를 검사하고 조작하는 것이 훨씬 편리하기 때문입니다.

또는 다른 방법으로, 어떤 파일 공유 차가 저장 되고이 파일을보고 수정하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

좋아요, 위의 질문을 제기 한 직후 파일을 찾았습니다. (나는 사랑하는 동료들이 나를 게으른 프로그래머로 간주하기를 원하지 않기 때문에, 그것은 나 자신의 답변을 훨씬 더 부지럽게하는 것을 공개적으로 자극하는 것 같습니다.)

아래의 XML 파일입니다 /data/data/your.app.package.name/shared_prefs, 파일 이름은 your.app.package.name_preferences.xml입니다. 내용이 단지 키 값 맵이라는 것을 알 때 환경 설정을 수정하는 것은 정말 쉽습니다.

다른 팁

앱이있는 경우 디버그 가능 당신은 할 수 있습니다 :

$ adb shell
$ run-as <app-package-id>
$ cat /data/data/<app-package-id>/shared_prefs/prefs.xml

기본 설정은 다른 파일에 저장 될 수 있으므로 디렉토리를 확인하려면 더 잘 확인하십시오.

$ ls /data/data/<app-package-id>/shared_prefs/

이 편리한 원 라이너를 사용하여 앱에 대한 공유 환경 설정을 당기고, 편집하고, 푸시 공유 환경 설정을 사용하고 있습니다.

APP_ID=com.myapp; adb pull /data/data/${APP_ID}/shared_prefs/${APP_ID}_preferences.xml /tmp/${APP_ID}_preferences.xml && vim /tmp/${APP_ID}_preferences.xml && adb push /tmp/${APP_ID}_preferences.xml /data/data/${APP_ID}/shared_prefs/

방금 설정했습니다 APP_ID 응용 프로그램 ID에.

이것은 당신이 얻은대로 공유 환경 설정에 기본 파일 이름을 사용한다고 가정합니다. PreferenceManager.getDefaultSharedPreferences(context). 또한 ADB는 루트 모드에서 실행해야합니다. adb root

도우미 배쉬 기능

function adb-pull-prefs {
    # ${1} - app package
    # ${2} - prefs name
    adb exec-out run-as ${1} cat /data/data/${1}/shared_prefs/${2}.xml
}

다른 사람이 나와 같은 위의 모든 제안을 사용하여 "허가 거부"오류가 발생하는 경우 사용해야 할 수도 있습니다. exec-out 이와 같이:

adb exec-out run-as <package.name> cat /data/data/<package.name>/shared_prefs/<package.name>_preferences.xml

장치에서 먼저 공유 환경 설정 파일을 당기십시오. 루트 허구가 필요합니다.

adb pull /data/data/org.test/shared_prefs/MyKeys.xml MyKeys.xml

이제 mykeys.xml은 시스템의 현재 디렉토리에 저장됩니다.

값을 수정하십시오

vim MyKeys.xml

파일을 편집 한 후 변경 사항을 저장하고 장치로 푸시합니다.

adb push MyKeys.xml /data/data/org.test/shared_prefs/MyKeys.xml

변경 사항을 확인합니다

adb shell
cat /data/data/org.test/shared_prefs/MyKeys.xml
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top