ProgramingTip

HierarchyViewer가 Samsung Galaxy TAB 7.0에서 작동하지 않는 이유는 무엇입니까?

bestdevel 2020. 10. 31. 09:56
반응형

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 애플리케이션에서 사용할 수있는 간단한 클래스입니다.

이 라이브러리가 필요한 경우 다음 지침을 수행하십시오.

  • 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=ddmhierarchyviewer.bat.

참고 URL : https://stackoverflow.com/questions/10647300/why-is-hierarchyviewer-not-working-for-samsung-galaxy-tab-7-0

반응형