Android Studio를 사용하여 공유 환경 설정 파일을 보려면 어떻게해야합니까?
공유 환경 설정을 사용하여 내 앱의 특정 값을 저장하고 있습니다. 정보가 실제로 내 휴대 전화에 저장된 파일을보고 싶습니다. Eclipse에서 여러 가지 방법을 찾았지만 Android Studio에서 디버깅 중입니다. 내 전화가 루팅되었습니다. 이러한 유형의 파일을 읽으려면 루트 액세스 권한을 갖는 것이 중요하다는 것을 읽었습니다. 방법이 없으면 내 프로그램을 통해 정보에 액세스하는 방법을 찾은 다음 log cat에 출력합니다. 하지만 훨씬 간단하기 때문에 전화로 직접 파일을 볼 수 있기를 바랍니다. 감사.
Android Studio에서 Android Device Monitor를 시작하고 파일 탐색기로 이동 한 다음 "/ data / data / <패키지 이름> / shared_prefs /"를 찾습니다. 거기에서 XML을 찾을 수 있으며 검사를 위해 복사 할 수도 있습니다.
루팅되지 않은 기기가있는 경우 Android Studio에서 직접 할 수 없습니다. 그러나 adb shell
애플리케이션이 디버그 버전 이면 파일에 액세스 할 수 있습니다 .
adb shell
run-as your.app.id
chmod 777 shared_prefs/your.app.id_preferences.xml
exit # return to default user
cp /data/data/your.app.id/shared_prefs/your.app.id_preferences.xml /sdcard
그런 다음 adb를 사용하여 / sdcard 디렉토리에서 파일을 가져올 수 있습니다.
Stetho
응용 프로그램이 디버그 모드에있는 동안 http://facebook.github.io/stetho/ 를 사용 하여 공유 기본 설정에 액세스 할 수 있습니다 . 루트 없음
풍모:
- 공유 기본 설정보기 및 편집
- sqLite db보기 및 편집
- 보기 계층 구조보기
- http 네트워크 요청 모니터링
- 장치 화면에서 스트림보기
- 그리고 더....
기본 설정 :
- build.gradle 추가
compile 'com.facebook.stetho:stetho:1.5.0'
- 응용 프로그램의 onCreate () 추가
Stetho.initializeWithDefaults(this);
- PC의 Chrome에서 chrome : // inspect / 로 이동합니다.
업데이트 : 플리퍼
Flipper 는 페이스 북의 새로운 대안입니다. 더 많은 기능이 있지만 당분간 작성은 Mac에서만 사용할 수 있으며 구성하기가 약간 더 어렵고 데이터베이스 디버깅이 부족하며 매우 향상된 레이아웃 검사기를 연결합니다.
@Jeffrey 제안을 사용할 수도 있습니다.
- 장치 파일 탐색기 열기 (화면 오른쪽 아래)
- data / data / com.yourAppName / shared_prefs로 이동합니다.
Android Studio 3.x의 일부인 Device File Explorer는 기본 설정 파일, 캐시 항목 또는 데이터베이스를 탐색하는 데 정말 좋습니다.
- 공유 기본 설정 / data / data // shared_prefs 디렉토리
이렇게 생겼어요
장치 파일 탐색기를 열려면 :
보기> 도구 창> 장치 파일 탐색기를 클릭하거나 도구 창 표시 줄에서 장치 파일 탐색기 버튼을 클릭합니다.
디버깅 목적으로 특수 활동을 간단히 만들 수 있습니다.
@SuppressWarnings("unchecked")
public void loadPreferences() {
// create a textview with id (tv_pref) in Layout.
TextView prefTextView;
prefTextView = (TextView) findViewById(R.id.tv_pref);
Map<String, ?> prefs = PreferenceManager.getDefaultSharedPreferences(
context).getAll();
for (String key : prefs.keySet()) {
Object pref = prefs.get(key);
String printVal = "";
if (pref instanceof Boolean) {
printVal = key + " : " + (Boolean) pref;
}
if (pref instanceof Float) {
printVal = key + " : " + (Float) pref;
}
if (pref instanceof Integer) {
printVal = key + " : " + (Integer) pref;
}
if (pref instanceof Long) {
printVal = key + " : " + (Long) pref;
}
if (pref instanceof String) {
printVal = key + " : " + (String) pref;
}
if (pref instanceof Set<?>) {
printVal = key + " : " + (Set<String>) pref;
}
// Every new preference goes to a new line
prefTextView.append(printVal + "\n\n");
}
}
// call loadPreferences() in the onCreate of your Activity.
Android Studio-> Device File Explorer (오른쪽 하단 모서리)-> 데이터-> 데이터-> {package.id}-> shared-prefs
참고 : 모바일 장치를 Android 스튜디오에 연결해야하며 선택한 애플리케이션이 디버그 모드에 있어야합니다.
이것은 오래된 게시물이지만 SharedPreferences.xml
Android Studio를 사용하여 보는 것에 관한 질문이므로 여기에 그래픽 답변을 넣어야합니다 . 그래서 여기에 있습니다.
도구-> Android Device Monitor로 이동합니다. 클릭하여 장치 모니터를 엽니 다.
그런 다음 장치 모니터에서 파일 탐색기 탭을 선택해야합니다. 데이터 폴더를 찾아 그 안에 다른 데이터 폴더를 찾으십시오. 여기에는 응용 프로그램 패키지의 이름이있는 폴더가 포함되며 원하는 SharedPreferences.xml
.
선택 SharedPreferences.xml
파일을 다음 당겨 위의 이미지의 오른쪽 상단에 표시된 버튼을 사용하여 컴퓨터에 파일을 저장합니다.
장치 에뮬레이터를 사용했습니다.
또 다른 간단한 방법은 휴대폰에서 루트 탐색기 앱을 사용하는 것입니다.
로 이동 한 다음 /data/data/package name/shared preferences folder/name of your preferences.xml
, 사용할 수있는 ES 파일 탐색기를 받는 사람, 가서 root
, 장치의하지 sd card
.
단일 또는 다중 공유 기본 설정 파일
여러 Shared Preference
파일 이있는 경우 모든 파일을 표시하는 좋은 방법이 있지만 파일 이름 하나만 전달할 수도 있습니다.
loadSharedPrefs("pref_name");
loadSharedPrefs("shared_pref1", "shared_pref2", "shared_pref3");
필요에 따라 다음 중 하나를 선택하십시오.
단일 유형 값
public void loadSharedPrefs(String ... prefs) {
// Logging messages left in to view Shared Preferences. I filter out all logs except for ERROR; hence why I am printing error messages.
Log.i("Loading Shared Prefs", "-----------------------------------");
Log.i("----------------", "---------------------------------------");
for (String pref_name: prefs) {
SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
for (String key : preference.getAll().keySet()) {
Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
preference.getString(key, "error!"));
}
Log.i("----------------", "---------------------------------------");
}
Log.i("Finished Shared Prefs", "----------------------------------");
}
다중 유형 값
public void loadSharedPrefs(String ... prefs) {
// Define default return values. These should not display, but are needed
final String STRING_ERROR = "error!";
final Integer INT_ERROR = -1;
// ...
final Set<String> SET_ERROR = new HashSet<>(1);
// Add an item to the set
SET_ERROR.add("Set Error!");
// Loop through the Shared Prefs
Log.i("Loading Shared Prefs", "-----------------------------------");
Log.i("------------------", "-------------------------------------");
for (String pref_name: prefs) {
SharedPreferences preference = getSharedPreferences(pref_name, MODE_PRIVATE);
Map<String, ?> prefMap = preference.getAll();
Object prefObj;
Object prefValue = null;
for (String key : prefMap.keySet()) {
prefObj = prefMap.get(key);
if (prefObj instanceof String) prefValue = preference.getString(key, STRING_ERROR);
if (prefObj instanceof Integer) prefValue = preference.getInt(key, INT_ERROR);
// ...
if (prefObj instanceof Set) prefValue = preference.getStringSet(key, SET_ERROR);
Log.i(String.format("Shared Preference : %s - %s", pref_name, key),
String.valueOf(prefValue));
}
Log.i("------------------", "-------------------------------------");
}
Log.i("Loaded Shared Prefs", "------------------------------------");
}
}
Logcat 출력
내 Shared Preference
값은 모두 String
이지만 위의 두 가지 방법 중 하나를 사용하는 출력입니다.
I/Loading Shared Prefs﹕ -----------------------------------
I/------------------﹕ -------------------------------------
I/Shared Preference : FAVORITE - 135397﹕ Jurassic World
I/Shared Preference : FAVORITE - 87101﹕ Terminator Genisys
I/Shared Preference : FAVORITE - 177677﹕ Mission: Impossible – Rogue Nation
I/------------------﹕ -------------------------------------
I/Shared Preference : WATCHED - 177677﹕ Mission: Impossible – Rogue Nation
I/Shared Preference : WATCHED - 157336﹕ Interstellar
I/Shared Preference : WATCHED - 135397﹕ Jurassic World
I/Shared Preference : WATCHED - 87101﹕ Terminator Genisys
I/------------------﹕ -------------------------------------
I/Shared Preference : WILL_WATCH - 211672﹕ Minions
I/Shared Preference : WILL_WATCH - 102899﹕ Ant-Man
I/------------------﹕ -------------------------------------
I/Loaded Shared Prefs﹕ ------------------------------------
에서 안드로이드 스튜디오 3 :
- Open Device File Explorer (Lower Right of screen).
- Go to data/data/com.yourAppName/shared_prefs.
or use Android Debug Database
Run the application in Emulator after you insert some data, just close the application.
Now open the DDMS or Android Monitor and select your emulator, on the right side you can see the File Explorer, look for Data folder in it and look for your application package that you have created, in that you can find the shared preference file open it , you can see the XML file, click it and click the pull a file from the device button in the top right corner.
The XML file will be saved in your desired location, then you can open it using any editor like notepad++ and can view the data you have entered.
I always find these commands useful in console:
Find the correct file name
adb shell
ls /data/data/com.your.package/shared_prefs
Get the file to local directory
adb pull /data/data/com.your.package/shared_prefs/the_file_you_want $local_dir
에서 확인하십시오
$local_dir
.
에뮬레이터를 사용하는 경우 다음 sharedPrefs.xml
명령을 사용하여 터미널 에서 파일을 볼 수 있습니다 .
adb root
cat /data/data/<project name>/shared_prefs/<xml file>
그 후 adb unroot
가상 장치를 루팅하지 않으려면 사용할 수 있습니다 .
preference
Android Studio에서 공유를 열려면
오른쪽에서 장치 탐색기 파일 열기-데이터> 데이터>> shared_prefs
자세한 설명은 첨부 된 이미지를 찾으십시오.
장치 파일 탐색기에서 아래 경로를 따르십시오.
/data/data/com.**package_name**.test/shared_prefs/com.**package_name**.test_preferences.xml
'Development Tip' 카테고리의 다른 글
ActionLink htmlAttributes (0) | 2020.10.06 |
---|---|
Eclipse에서 콘솔 창을 여는 방법은 무엇입니까? (0) | 2020.10.06 |
Vuejs : 경로 변경 이벤트 (0) | 2020.10.06 |
모든 개발자는 법적 문제에 대해 무엇을 알아야합니까? (0) | 2020.10.06 |
데이터베이스에서 너무 많은 행이 몇 개 있습니까? (0) | 2020.10.06 |