파이썬 adb 패키지 사용 방법
adb는 Android Debug Bridge라는 도구로, 안드로이드 기기와 PC 간의 통신을 위해 사용됩니다. 파이썬에서 adb를 사용하려면 파이썬용 adb 패키지를 설치해야 합니다. 예를 들어 'pure-python-adb' 패키지를 사용할 수 있습니다.
파이썬용 adb 패키지 설치
- 파이썬용 adb 패키지 설치
!pip install pure-python-adb # 패키지 설치
- 파이썬 코드에서 adb 패키지 import
- adb 서버 실행
- adb 명령 실행
from adb.client import Client as AdbClient
client = AdbClient(host="127.0.0.1", port=5037)
client.connect()
devices = client.devices()
for device in devices:
print(device)
파이썬 adb 패키지 환경 설정 방법
- PC에 adb를 설치해야 합니다. adb는 Android SDK에 포함되어 있으며, Android Studio를 설치하면 자동으로 설치됩니다. 또는, SDK Platform-Tools를 다운로드 받아 설치할 수 있습니다.
https://developer.android.com/studio
- PC에서 adb를 사용하려면, 개발자 옵션을 활성화해야 합니다. 이를 위해서는 안드로이드 기기에서 '설정' > '정보' > '빌드 번호'를 7번 클릭하면 개발자 옵션을 활성화할 수 있습니다.
- PC와 안드로이드 기기를 USB로 연결합니다. 그리고 PC에서 adb를 실행하여 기기를 인식합니다. (cmd shell 에서 아래 입력)
adb devices
참고: 일부 기기는 adb를 사용하기 전에 USB 디버깅을 허용해야 할 수도 있으니, 기기에서 '설정' > '개발자 옵션' > 'USB 디버깅'을 활성화 해주시길 바랍니다. 또한, adb를 사용하려면 PC에서 기기를 인식할 수 있도록 adb 드라이버를 설치해야 할 수도 있습니다. 기기 제조사마다 다르니, 기기 제조사 웹사이트를 참조해보시길 바랍니다. 추가로 python-adb 패키지를 사용하면서 ADB 서버가 기기와 연결되어 있지 않을 경우 에러가 발생할 수 있으니, 이러한 에러가 발생하면 adb를 실행하여 기기와 연결을 확인하시길 바랍니다.
* 일부 기기에 따라 빌드 번호를 7번 터치 -> 개발자 USB 디버깅 활성화
* 반드시 모바일 핫스팟 및 테더링에서 모바일 핫스팟 활성화 및 USB 테더링 활성화 (모바일 기기는 wifi는 꺼둬야됨.)
이외 노트북도 마찬가지로 wifi는 꺼두고, 핸드폰 기기로 모바일 핫스팟 연동
3. 추가적인 에러 사항
아래와 같은 에러 메세지가 뜨고, adb server 가 아직 활성화 되지 않으면 아래 cmd 창에서 adb 설치된 폴더로 cd 로 들어가서 확인해야됩니다.
could not read ok from ADB Server * could not start server *
이 오류 메시지는 장치의 ADB(Android Debug Bridge) 서버에 문제가 있음을 나타냅니다. 이 문제는 컴퓨터의 ADB 드라이버 문제, USB 연결 문제 또는 장치 자체의 문제와 같은 여러 가지 문제로 인해 발생할 수 있습니다.
이 문제를 해결하려면 다음 단계를 시도해 보시길 바랍니다 :
ADB 서버 다시 시작: 명령 프롬프트를 열고 Android SDK 내의 platform-tools 폴더로 이동한 다음 "adb kill-server"와 "adb start-server"를 입력합니다. 장치를 다시 시작하는 중입니다. 시스템에서 ADB 드라이버를 제거하고 다시 설치하는 중입니다 장치에서 USB 디버깅이 활성화되어 있는지 확인합니다. 위의 단계 중 어느 것도 작동하지 않으면 문제의 원인이 특정 설정에 고유할 수 있으므로 온라인에서 더 구체적인 해결 방법을 검색해 보시길 바랍니다.
3.1 해당 해당 디렉토리에서 shell 입력
adb kill-server
3.2 이후 해당 디렉토리에서 아래 shell 입력
adb start-server
3.3그리고 아래 shell 을 입력하여 device 확인
adb devices
*경우에 따라 usb 테더링 제한이 있을 수 있음.
adb shell settings get global tether_dun_required
위의 명령어를 입력하였을 때 반환되는 값이 'null'이나 '1'이면 테더링이 제한되어 막혀있는 상태.
adb shell settings put global tether_dun_required 0
이런 경우 위의 코드를 입력하면 테더링 제한이 풀림. 다시 이전의 명령어를 입력해 반환 값이 '0'이 되었는지 확인하면 완료.
파이썬 adb PC IP 무한 변경
#!pip install pure-python-adb 설치
import socket
import requests
import re
from ppadb.client import Client as AdbClient
import time
import os
client = AdbClient(host="127.0.0.1", port=5037)
devices = client.devices()
d = devices[0]
print(d.serial) #시리얼 번호
req = requests.get("http://ipconfig.kr")
print("외부 IP: ", re.search(r'IP Address : (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1])
# usb 테더링 제어
os.system("svc data disable")
time.sleep(5.0)
os.system("svc data enable")
time.sleep(5.0)
#에어플레인 모드 ON
d.shell("svc data disable")
d.shell("adb shell settings put global airplane_mode_on 1")
d.shell("adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true")
d.shell('adb shell cmd connectivity airplane-mode enable')
time.sleep(5.0)
#에어플레인 모드 OFF
d.shell("svc data enable")
d.shell("adb shell settings put global airplane_mode_on 0")
d.shell("adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false")
d.shell('adb shell cmd connectivity airplane-mode disable')
time.sleep(5.0)
#os.system("adb shell svc data disable")
#os.system("adb shell svc data enable")
#os.system("adb shell ipconfig /release")
#os.system("adb shell ipconfig /renew")
req = requests.get("http://ipconfig.kr")
print("외부 IP: ", re.search(r'IP Address : (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1])
파이썬 adb 명령어 크롬 네이버 실행
#!pip install pure-python-adb 설치
import socket
import requests
import re
from ppadb.client import Client as AdbClient
import time
import os
client = AdbClient(host="127.0.0.1", port=5037)
devices = client.devices()
d = devices[0]
print(d.serial) #시리얼 번호
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("pwnbit.kr", 443))
print("내부 IP: ", sock.getsockname()[0])
req = requests.get("http://ipconfig.kr")
print("외부 IP: ", re.search(r'IP Address : (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1])
d.shell("input keyevent 64") #크롬 실행
time.sleep(2.0)
xyposition = '423 136'
d.shell(f'input tap {xyposition}') #주소창 탭 추가
time.sleep(2.0)
url = 'www.naver.com'
d.shell(f'input text {url}') #네이버 URL 주소 입력
time.sleep(2.0)
d.shell("input keyevent 66") #엔터
time.sleep(2.0)
# usb 테더링 제어
#os.system("svc data disable")
#time.sleep(5.0)
#os.system("svc data enable")
#time.sleep(5.0)
댓글