본문 바로가기

AppDev/Android

(14)
[ Android ] 안드로이드 기본정보 확인 ※ 안드로이드의 경우 모델별로 모델일련번호 시리얼 번호를 구하는 방법이 조금씩 달라확인할 때마다 본 문서를 업데이트 하는 방식으로 진행하려 한다.모델 명, 모델 번호, 시리얼 번호, 안드로이드 버전, 안드로이드 SDK를 확인하는 명령어이다. 1. Mac# 모델 명 확인# case [ Pixel 6 ], [ Galaxy S10+ ], [ Galaxy Note8 ], [ Galaxy A31 ]adb shell dumpsys settings | grep device_name | grep -v "wifi_p2p_device_name" | tail -1 | awk -F "value:" '{ print $2 }' | awk -F "default:" '{ print $1}' | sed 's/^[[:space:]]*/..
[ Android ] 안드로이드 루팅 1. 휴대전화 정보 확인2. 휴대전화 개발자 모드 활성화 및 설정 변경 ※ 만약 OEM 잠금 해제 항목이 보이지 않을 경우 다음 과정을 수행한다.3. 휴대폰 순정 펌웨어 다운로드 4. 휴대폰 순정 펌웨어 설치 및 루팅 펌웨어 생성가. 오딘 & 삼성 USB 드라이버 다운로드나. Magist 다운로드다. 루팅 펌웨어 생성 라. 안드로이드 다운로드 모드 진입 1). 휴대폰 종료2). 다운로드 모드 진입■ 홈버튼 있는 단말기 : 전원 + 홈버튼 + 볼륨하■ 홈버튼 없고 빅스비 있는 단말기 : 전원 + 빅스비 + 볼륨하■ 홈버튼/빅스비 둘 다 없는 단말기 : 전원 + 볼륨상 + 볼륨하※ 기종에따라 다운로드 모드 진입전 해줘야 하는 작업이 조금씩 다를 수 있다.Galaxy A23 의 경우 전원버튼을 클릭하여 실행 ..
[ Android ] 안드로이드 APK 디컴파일 오픈소스로 제공되는 안드로이드 디컴파일 도구를 소개한다.해당 글에서 아래 툴들의 용도는 다음과 같다.□ apktool : apk 파일의 리소스 파일 추출□ dex2jar : dex 파일 jar 파일로 변환□ jd-cli : jar 파일을 java 파일로 변환□ jadx : 리소스 파일 및 java 파일 추출개인적으로 apk 소스 분석을 위한 디컴파일용 툴은 jadx 하나로 해결된다.(나머지 툴들은 리패키징 등 다른 용도로 사용)apk파일 다운로드 : https://m.apkpure.com/kr/search○ apktool 디컴파일1. Mac/bin/bash# apktool 설치 폴더 생성mkdir -p ~/App/Tools/AST/SAST/# apktool 다운로드curl -L -o ~/App/Tools..
[ Android ] 안드로이드 무선 디버깅 1. Mac/bin/bash# 기기가 연결 되었는지 확인adb devices# 기기 명 저장export DEVICE_TARGET=$(adb devices | grep -v offline | tail -n +2 | awk '{ print $1 }' | head -1)# 기기 Wifi IP 저장export DEVICE_IP=$(adb -s $DEVICE_TARGET shell ifconfig | grep 192 | awk -F ":" '{ print $2 }' | awk '{ print $1 }')# 기기 연결adb connect $DEVICE_IP:5555
[ Android ] 안드로이드 APK 파일 추출 1. Mac# 기기가 연결 되었는지 확인adb devices# 기기 명 저장export DEVICE_TARGET=$(adb devices | grep -v offline | tail -n +2 | awk '{ print $1 }' | head -1)# e.g. export PACKAGE_NAME=com.sample.todoexport PACKAGE_NAME=[ Your Package Name ]# 명령어 실행 폴더에 $PACKAGE_NAME.apk 이름으로 apk 파일 저장adb -s $DEVICE_TARGET pull $(adb -s $DEVICE_TARGET shell pm list packages -f | grep "$PACKAGE_NAME$" | awk -F ":" '{ print $2 }' | ..
[ Android ] 기종 별 사이즈 대응 안드로이드는 수많은 기종이 있고 기종마다 지원되는 해상도가 다르다.예를들어 Pixel 폰 해상도에서 marginTop 을 250dp 주었을때는 다음과 같다. activity_main.xmlandroid:layout_marginTop="250dp"똑같이 marginTop을 "250dp" 주었지만 Pixcel 폰은 가운데에 위치한 반면 Nexus S 폰은 상대적으로 아래 위치하고 있다.따라서 기종마다 사용자가 느끼는 경험이 달라지고 기종에 따라 UI가 짤리는 현상도 일어난다. 이러한 기종별 사이즈를 대응하는 방법 중 dimens를 활용하는 방법이 있다.안드로이드의 리소스 폴더에 values-h720dp 를 생성한다.해당 리소스 폴더에 들어가는 리소스 파일은 높이가 720dp ..
[ Android ] 로그캣 필터 쿼리 1. [ AndroidManifest.xml ] 파일의 패키지명의 로그 만 확인 package:mine 2. 정규 표현식 조회 # System과 정확히 일치하는 태그명만 조회 tag~:^System$ 3. 로그 레벨 이상 조회 # 로그 레벨은 verbose, debug, info, warn, assert 가 존재 level:info 4. 특정 태그 제외 조회 -tag:SemNscXgbMsL1 5. 필터 쿼리 조합 tag:System level:info 6. 여러 태그 및 내용 조회 (tag:System | tag:NearbySharing) Create
[ Android ] 안드로이드 버튼 동시 클릭 방지 안드로이드에서 버튼 두개를 동시 클릭을 방지하는 방법은 여러가지 존재한다. 이 방법중 가장 간단한 방법이 있다. activity_main.xml 클릭 이벤트가 존재하는 뷰의 상위 레이아웃에 [ splitMotionEvents ] 속성 값을 [ false ] 를 주는 방법이다. android:splitMotionEvents="false" android:splitMotionEvents="true" : 뷰 그룹이 자식 뷰에게 동시에 발생하는 멀티터치 이벤트를 각각 분리해서 전달 사용자가 두 손가락으로 화면의 다른 두 지점을 동시에 탭할 경우, 이벤트가 각각의 지점에 대응하는 뷰로 분리되어 전달 android:splitMotionEvents="false" : 뷰 그룹이 멀티터치 이벤트를 분리하지 않고 하나의 이..