ADB 쉘의 공유 예약을 검사하는 방법은 무엇입니까?
-
12-09-2019 - |
문제
이제 우리는 할 수 있습니다 원격 쉘에서 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