HierarchyViewer가 Samsung Galaxy TAB 7.0에서 작동하지 않는 이유는 무엇입니까?
이전에 hierarachyviewer를 사용했지만 Android 에뮬레이터에서 사용했습니다. 에뮬레이터에서 사용할 때 절대적으로 잘 작동합니다. 그러나 Android 2.3.4가 삼성 Galaxy TAB 7.0에서는 작동하지 않습니다.
이것은 내가 얻는 로그입니다.
11:04:22 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:04:22 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:04:24 E/hierarchyviewer: Unable to debug device 30359964881B00EC
11:05:05 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:05:05 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:05:07 E/hierarchyviewer: Unable to debug device 30359964881B00EC
11:09:38 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:09:38 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:09:40 E/hierarchyviewer: Unable to debug device 30359964881B00EC
또한 디버그 모드에서 hierarchyviewer를 사용하지 않고 응용 프로그램을 실행하고 있습니다. 감사합니다.
해결 방법을 찾았습니다 : https://github.com/romainguy/ViewServer
ViewServer는 HierarchyViewer 검사 도구를 사용하기 위해 Android 애플리케이션에서 사용할 수있는 간단한 클래스입니다.
- 이 라이브러리가 필요한지 확인하십시오 ( 최신 버전의 Android에는 필요 없음 )
이 라이브러리가 필요한 경우 다음 지침을 수행하십시오.
- ViewServer 라이브러리 포함 ( 여기에서 쉽게 사용할 수 있음 )
- 응용 프로그램에는 인터넷 권한이 필요합니다.
이 API를 사용하는 권장 방법은 활동이 생성 될 때 등록하고 파괴 할 등록을 취소하는 것입니다.
public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set content view, etc. ViewServer.get(this).addWindow(this); } public void onDestroy() { super.onDestroy(); ViewServer.get(this).removeWindow(this); } public void onResume() { super.onResume(); ViewServer.get(this).setFocusedWindow(this); } }
자세한 내용은 ViewServer.java의 설명서를 참조하십시오.
대신 모니터 도구를 사용하십시오 ( android-sdk/tools/monitor
).
장치에 연결하십시오. 이클립스를 닫으십시오.
장치 탭에서 "UI 자동화를위한 배치보기 계층 구조"버튼을 누릅니다. 화면 이동 버튼 옆에 있습니다.
API 레벨 16 (Android 4.1)이 작동합니다.
HierarachyViewer는 에뮬레이터 및 Google에서 구입 한 특수 개발자 전화에서만 사용할 수 있습니다.
http://groups.google.com/group/android-developers/browse_thread/thread/b0b0af7a316ca768
위 링크에서 인용
HierarchyViewer는 사용자 빌드에서 작동하지 않습니다 (즉, 매장에서 구할 수있는 장치). 이는 보안상의 이유입니다. HiearchyViewer가 사용자 빌드에서 작업 할 수있는 경우 데스크톱 (또는 경우에 따라 전화)의 모든 애플리케이션이 잠재적으로 개인 정보 (예 : 로그인 및 암호)에 액세스 할 수 있습니다.
최대 OS에서 문제가 해결되었습니다.
이 ANDROID_HVPROTO 솔루션은 여기에 설명되어 있습니다.
http://developer.android.com/tools/performance/hierarchy-viewer/setup.html
그런 다음 Android Studio를 닫으십시오.
adb kill-server, adb start-server 실행
나에게 모니터 작업을 시작하십시오!
정답은 :
https://github.com/romainguy/ViewServer/issues/14#issuecomment-75354479
@ozodrukh의 대답은 유용합니다.
거의 모든 일반 생산 전화기는 HierarchyViewer가 이들에 액세스하도록 허용하지 않습니다. 일반적으로 개발자 전화와 에뮬레이터는 이러한 기능을 가진 유일한 장치입니다.
4.1 Android 휴대 전화 에서 비슷한 문제가 발생했습니다 . 코드에서 ViewServer 를 사용하십시오.
Hierarchy 뷰어에서 확인하기 전에 adb 서버를 한 번만 다시 시작하십시오.
공식 문서 : Optimizing Your UI 는 이렇게 말했습니다.
보안을 유지하기 위해 계층 뷰어는 Android 시스템의 개발자 버전을 실행하는 장치에만 연결할 수 있습니다.
Hierarchy Viewer로 레이아웃 프로파일 링 :
환경 변수 설정
ANDROID_HVPROTO=ddm
따라서 [andrid-sdk]/tools
폴더에서 명령 줄에서 다음을 실행합니다.
set ANDROID_HVPROTO=ddm
hierarchyviewer
또는 넣어 set ANDROID_HVPROTO=ddm
에 hierarchyviewer.bat
.
'ProgramingTip' 카테고리의 다른 글
Python에서 길이가 같은 여러 목록을 인터리브 (0) | 2020.10.31 |
---|---|
Dapper.Net에서 일대 다 쿼리를 어떻게 작성합니까? (0) | 2020.10.31 |
Python에서 PDFMiner를 사용하여 PDF 파일에서 텍스트 추출? (0) | 2020.10.31 |
어디에서 URL을 어떻게 정규화 할 수 있습니까? (0) | 2020.10.31 |
NSURL을 사용하여 파일 존재 테스트 (0) | 2020.10.31 |