일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- #안드로이드 개발자 #안드로이드 신입 #개발자 이직 #안드로이드 면접 #신입 개발자
- retrofi
- 안드로이드 익명클래스
- #리사이클러뷰 어댑터
- 리사이클러뷰 체크박스
- 클린아키텍쳐
- 제플린
- 사용법
- 안드로이드 아키텍쳐
- 키스토어
- MVVM
- retrofit2
- 레트로핏
- #android #안드로이드 #glide #gif #이미지다운로드
- zeplin
- #리사이클러뷰
- #ContentProvider #App DataShare
- #SMS API #안드로이드 SMS #SMS Retriever
- 안드로이드해상도
- 안드로이드
- 안드로이드 메모리릭
- retrofit
- 구글맵안돼요
- 메모리릭
- 빗버킷 #bitbucket #authorization failed #깃
- #안드로이드
- Today
- Total
땀이 삐질삐질 나는 개발 일기
[Android] WifiDebug 스크립트로 한 큐에! 본문
안녕하세요. 개발자 삐질 입니다.
굉장히 오랜만에 아주 간단하지만 유용한 포스팅 하나 하려고 페이지를 열었네요.
기존에 이 기능관련해서 사용하고 계시고 && 맥 기준이에욥!
그동안 저희가 ShellScript를 통해 adb tcpip , adb connect 또는
안드로이드 스튜디오에서 자체적으로 안드로이드 SDK 특정 버전 이상에서 제공하는 자체 wifi debugging을 사용하고 계셨을 텐데요.
저는 안드로이드 스튜디오가 자체 지원함에도 불구하고, ShellScript를 주로 애용해요!.
왜냐면, 안드로이드 스튜디오 자체 지원기능은 너무 자주 끊겨버리더라고요. 또 재연결 하려면 버그가 생겨서 항상 개발자 옵션을 껏켰해야하고 이런 번거로운 문제로 인해 쉘 스크립트를 쓰게 됐습니다. ( 조금 더 안정성이 높아요? )
- 중요한 점은, 끊겨도 우리 터미널에서 기존 입력했던 명령어를 불러와서 바로 재실행하면 1초 만에 재연결이 가능하다는 점이죠!
본론으로 들어가 보겠습니다.
Shell 환경변수에 ADB 경로와, JDK 등 외적인 것들은 등록이 되어있다는 것을 가정할게요!
( 안되어 있으신 분들은 타 블로그를 참고해 주세요!. 너무 설명 잘해주심.. )
1. 원하는 경로에 .sh 파일을 하나 만들 거예요.
sudo nano ${경로}/wdb.sh
처럼 원하는 방법으로 원하는 파일명으로 만들어주세요.
#!/bin/bash
function getWireConnectedDevices() {
device_list=$(adb devices -l | awk 'NR>1 {print $1}')
device_ips=()
for device_serial in $device_list; do
if [[ $device_serial =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+$ ]]; then
continue
fi
device_ip=$(adb -s $device_serial shell ip route | awk '{print $9}')
device_ips+=("$device_ip")
done
echo "${device_ips[@]}"
}
function connectAllDevices() {
device_ips=($(getWireConnectedDevices))
for device in "${device_ips[@]}"; do
adb connect "${device}:7989"
done
echo
}
function cleanExecute() {
adb kill-server
sleep 1
adb start-server
sleep 1
adb_status=$(adb get-state 2>&1)
if [[ $adb_status == *"offline"* ]]; then
echo "장치가 연결되지 않았습니다. USB 연결을 확인해주세요."
exit 1
fi
adb tcpip 7989
sleep 1
connectAllDevices
}
function showWireConnectedDevices() {
device_ips=($(getWireConnectedDevices))
for index in "${!device_ips[@]}"; do
echo "$((index+1)). ${device_ips[index]}"
done
echo "연결을 원하시는 번호를 선택해 주세요."
read -r number
if [[ $number =~ ^[0-9]+$ ]]; then
selected_device_ip="${device_ips[number-1]}"
adb connect "${selected_device_ip}:7989"
else
echo "올바른 번호를 입력하세요."
fi
echo
}
while true; do
echo "1. 최초 연결 또는 신규 디바이스 추가 시"
echo "2. 기존에 연결했었던 디바이스 목록 재연결"
echo "3. 디바이스 목록 보기"
echo "4. 종료"
read -rp "원하는 작업 번호를 입력하세요: " choice
case $choice in
1)
cleanExecute
clear
;;
2)
connectAllDevices
clear
;;
3)
showWireConnectedDevices
clear
;;
4)
echo "프로그램을 종료합니다."
break
;;
*)
echo "올바른 작업 번호를 입력하세요."
;;
esac
done
2. 그리고 위 스크립트 내용을 붙여 넣기 해주세요. ( 제 자작인데... 퍼가셔도 됨!!! 선순환되기를 )
3. 이 파일을 이제 간단히 ifconfig 명령어처럼 단순하게 명령어 만으로 실행할 수 있도록 경로를 등록해 줄 거예요.
4. 터미널에 open ~/.zshrc 또는 가지고 계신 shell의 config파일을 열어주세요.
5. 아무 위치에 방금 만든 ${path}/${파일명}.sh파일의 경로를 붙여 넣습니다.
alias wdb='${path}/${파일명}.sh'
6. 편집기를 종료하고 다시 터미널에 source ~/.zshrc 입력
7. 터미널에 wdb 를 입력하게 되면 이제 아래와 같은 내용이 출력될 거예요.
8. 짠~ 이제 원하시는 대로 작업하시면 됩니다. ~
아! 그런데 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ뼈대만 공유드리는 거라 부족한 기능이거나, 버그는 요령껏 수정해 주세요. 친절하지 못해 죄송합니다. 너무 어려워 필요시엔 카카오톡 단톡방으로 오셔서 질의해주시면 대응해 드릴 수 있습니다.
'개발 Tip' 카테고리의 다른 글
BitBucket Authorization failed ( passwd invalid)일떄 (0) | 2021.05.03 |
---|---|
[Recyclerview Paing] 기본 리사이클러뷰 페이징 처리 Feat.Rx (0) | 2021.04.07 |
초보 카카오톡 오픈 채팅방 URL이 변경되었습니다. (0) | 2021.04.06 |
[안드로이드]요즘 핫한 안드로이드 Mvvm 패턴을 공부하는 것.. (4) | 2020.08.26 |
DI(Dependency Injection)이란? 맛만 이라도 보자! (0) | 2020.06.03 |