usb 가 점용 되 었 을 때, 이러한 방법 으로 adb 무선 디 버 깅 을 진행 할 수 있 습 니 다.
와 이 파이, 그물 구멍 사용 가능.
1. 루트 권한 을 가 져 오기
만약 핸드폰 에 명령 행 도구 가 없다 면 먼저 핸드폰 끝 에 터미널 시 뮬 레이 터 를 설치 한 다음 에 터미널 에 입력 하 십시오.
$su
#stop adbd
#setprop service.adb.tcp.port 5555
#start adbd
그리고 컴퓨터 쪽 cmd 에 adb 명령 을 입력 하 십시오:
adb connect
이때 휴대 전 화 는 이미 컴퓨터 와 연결 되 었 습 니 다. adb devices 로 휴대 전화 가 연결 되 어 있 는 지 확인 하 세 요.
없 으 면 adb kill - server 후 다시 연결
eclipse 의 DDMS 창 으로 핸드폰 을 직접 디 버 깅 할 수 있 습 니 다.
adb 셸 에 들 어가 야 한다 면 명령 행 에 adb 셸 을 직접 입력 하 십시오.
네트워크 디 버 깅 을 닫 는 것 도 간단 합 니 다. 핸드폰 명령 에 명령 을 입력 하 십시오.
$su
#stop adbd
#setprop service.adb.tcp.port 0
#start adbd
2. Android 휴대폰 WiFi 디 버 깅, logcat 보기
프로젝트 개발 과정 에서 이런 장면 을 만 났 다. 특수 안 드 로 이 드 장치 에 USB 포트 가 하나 밖 에 없어 서 USB 디스크 를 마 운 트 한 후 USB 에 연결 하여 실시 간 으로 디 버 깅 할 수 없습니다.이 럴 때 장치 가 와 이 파 이 를 열 수 있다 면 와 이 파이 로 디 버 깅 할 수 있 습 니 다. 네트워크 디 버 깅 을 시작 하려 면 다음 명령 을 실행 하면 됩 니 다.
$su
#stop adbd
#setprop service.adb.tcp.port 5555
#start adbd
위 에서 완료 하면 adb 명령 을 사용 할 수 있 습 니 다:
adb connect 192.168.1.xx//Android ip ;
상기 장치 연결 컴퓨터 에서 cmd 를 실행 할 때 "stop adbd", / / adbd 닫 기 이 단계 에 문제 가 생 길 수 있 습 니 다. 실행 한 후에 USB 가 끊 겨 서 다음 열 림 명령 을 실행 할 수 없습니다. 그럼 어 떡 하지? 직접 apk 를 만 들 고 핸드폰 에 설치 해서 실행 할 생각 에 아래 의 apk 가 생 겼 습 니 다.
1 public void excuteStartShell() {
2 String[] commands = new String[] {
3 "setprop service.adb.tcp.port 5555",// , , 5554,5555
4 "stop adbd",// adbd
5 "start adbd",// adbd
6 };
7 try {
8 List temp = RootTools.sendShell(commands, 10, 3000);
9 for (int i = 0; i < temp.size(); i++) {
10 Log.i(TAG, "__This is result from root:__" + temp.get(i));
11 }
12 } catch (Exception e) {
13 e.printStackTrace();
14 }
15 }
16
17 public void excuteStopShell() {
18 String[] commands = new String[] {
19 "setprop service.adb.tcp.port -1",// , , 5554,5555
20 "stop adbd",// adbd
21 "start adbd",// adbd
22 };
23 try {
24 List temp = RootTools.sendShell(commands, 10, 3000);
25 for (int i = 0; i < temp.size(); i++) {
26 Log.i(TAG, "__This is result from root:__" + temp.get(i));
27 }
28 } catch (Exception e) {
29 e.printStackTrace();
30 }
31 }
3. 인터넷 을 통 해 adb 사용
adb 의 설명 문서 에서 언급:
“An ADB transport models a connection between the ADB server and one device or emulator. There are currently two kinds of transports: - USB transports, for physical devices through USB - Local transports, for emulators running on the host, connected to the server through TCP”
대 의 는 물리 적 장치 에 서 는 adb 가 USB 를 통 해 장치 에 연결 되 고 시 뮬 레이 터 에 서 는 adb 가 TCP 프로 토 콜 을 통 해 장치 에 연결 된다 는 것 이다.
실제로 물리 장치 에서 도 adb 가 TCP 프로 토 콜 을 통 해 장 치 를 연결 할 수 있 습 니 다 (물론 전제 조건 은 장치 에 네트워크 가 있어 야 합 니 다).
먼저 아래 의 소스 코드 를 보 세 요. system / core / adb / adb. c, 921 줄 에서 나 왔 습 니 다.
1 /* for the device, start the usb transport if the
2 ** android usb device exists and "service.adb.tcp"
3 ** is not set, otherwise start the network transport.
4 */
5 property_get("service.adb.tcp.port", value, "0");
6 if (sscanf(value, "%d", &port) == 1 && port > 0) {
7 // listen on TCP port specified by service.adb.tcp.port property
8 local_init(port);
9 } else if (access("/dev/android_adb", F_OK) == 0) {
10 // listen on USB
11 usb_init();
12 } else {
13 // listen on default port
14 local_init(ADB_LOCAL_TRANSPORT_PORT);
15 }
상기 코드 를 분석 하면 adbd 가 시 작 될 때 먼저 service. adb. tcp. port 가 설정 되 어 있 는 지 확인 할 수 있 습 니 다.
설정 하면 TCP 를 연결 방식 으로 사용 합 니 다.
설정 되 어 있 지 않 으 면 adb 의 USB 장치 (dev / android adb) 가 있 는 지 확인 하고 있 으 면 USB 를 연결 방식 으로 합 니 다.
USB 장치 가 없 으 면 TCP 를 연결 방식 으로 한다.
따라서 adbd 를 시작 하기 전에 service. adb. tcp. port 를 설정 하면 adbd 가 TCP 모드 를 선택 할 수 있 습 니 다.
인터넷 을 통 해 adb 를 연결 할 수 있 습 니 다.
init. rc 파일 을 수정 해 야 합 니 다. 수정 하지 않 으 려 면 시스템 이 시 작 된 후에 콘 솔 에서 다음 명령 을 수행 할 수도 있 습 니 다.
#stop adbd
#set service.adb.tcp.port 5555
#start adbd
이렇게 하면 호스트 에서 다음 명령 을 통 해 장 치 를 연결 할 수 있 습 니 다.
adb connetc :5555
4. adb 는 USB 와 TCP 디 버 깅 을 동시에 지원 합 니 다.
최근 에 otg 기능 을 디 버 깅 하려 면 usb 가 점용 되 어 무선 adb 로 만 디 버 깅 할 수 있 습 니 다.
무선 브러시 가 불편 합 니 다. 인터넷 에서 다운로드 하 는 무선 adb 는 루트 가 자주 필요 하고 무선 adb 를 사용 할 수 없 으 며 push apk 가 귀 찮 습 니 다.
수 정 된 코드 를 첨부 하고 USB 와 tcp 디 버 깅 을 지원 하 며 매번 브러시 후 push apk 를 사용 하지 않 습 니 다.
수정 점 두 개:
echo"service.adb.tcp.port=5555" adb
system/build.prop service.adb.tcp.port=5555
1 property_get("service.adb.tcp.port",value, "0");
2 if(sscanf(value, "%d", &port) == 1 && port > 0) {
3 // listen on TCP port specified byservice.adb.tcp.port property
4 local_init(port);
5 } else if(access("/dev/android_adb", F_OK) == 0) {
6 // listen on USB
7 usb_init();
8 } else {
9 // listen on default port
10 local_init(ADB_LOCAL_TRANSPORT_PORT);
11 }
수정 후
1 property_get("service.adb.tcp.port", value, "0");
2 if (sscanf(value, "%d",&port) == 1 && port > 0) {
3 // listen on TCP port specified byservice.adb.tcp.port property
4 local_init(port);
5 }
6
7 if (access("/dev/android_adb",F_OK) == 0) {
8 // listen on USB
9 usb_init();
10 } else {
11 // listen on default port
12 local_init(ADB_LOCAL_TRANSPORT_PORT);
13 }
두 개 를 함께 수정 해 야 한다. 그렇지 않 으 면 첫 번 째 USB 를 수정 하면 사용 할 수 없다.
다음으로 전송:https://www.cnblogs.com/sjjg/p/6899338.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.