본문 바로가기

SW 개발/Android22

안드로이드 스마트 폰 화면 미러링 방법: scrcpy 사용법 안드로이드 스마트 폰 화면을 PC로 미러링 하는 방법을 설명하도록 하겠습니다. 스마트 폰 화면을 그대로 PC에 가져오는 것 뿐만 아니라, 사운드 전송, 마우스로 원격 클릭 및 키보드 입력 값을 전달하여 제어도 가능합니다. 안드로이드 개발자 분에게는 PC에서 원격 디버깅에 활용할 수 있으며, 일반적으로는 회사 보안 정책 상 PC에 카카오톡이 설치가 막혀있는 경우 폰의 카카오톡을 PC에서 사용 가능합니다. 안드로이드 화면 미러링 앱은 PlayStore에도 많지만 광고가 포함된 유료 앱도 많아 무료로 사용할 수 있는 오픈 소스 기반을 scrcpy를 설명하고자 합니다. scrcpy 활용 예 안드로이드 화면/오디오을 PC에 띄우는 경우 (비디오 뿐 아니라 오디오도 전송함) 안드로이드 스마트 폰 원격 디버깅 (US.. 2022. 1. 4.
안드로이드 adb 설치 및 설정 방법 Android ADB (Android Debug Bridge)는 PC와 스마트 폰 간에 통신을 할 수 있는 명령어도 도구입니다. 안드로이드 개발자에게는 apk 설치, log 출력의 등의 개발에 많은 활동에서 adb를 거의 매일 사용하고 있습니다. 또한 디버깅 목적뿐 아니라 스마트 폰 화면을 PC로 미러링 할 수 있는 App에서도 adb를 사용합니다. 예를 들어 scrcpy 와 Mirroid 등 같은 스마트 폰 미러링 앱을 사용하기 위해서는 PC에 adb를 미리 설치해야 합니다. (※ Mrriod는 adb.exe가 설치 파일에 포함됨) 본 포스팅은 상용 단말 (=User version) 기준으로 ADB 연결을 설정하는 과정을 설명하고 요약하면 다음과 같습니다. 스마프 폰 제조사 USB 드라이버를 설치 (각.. 2021. 10. 3.
안드로이드 스마트 폰 오디오 미러링 방법: sndcpy 사용법 안드로이드 스마트의 화면을 PC로 미러링하는 방법에 대해서 아래 포스팅에서 설명하였습니다. 오픈 소스인 scrcpy 기반을 만들어진 소프트웨어로 스마트 폰의 오디오는 PC로 송출하지 못합니다. [모바일 SW 개발/Android] - 안드로이드 스마트 폰 화면 미러링 방법: scrcpy 사용법 [모바일 SW 개발/Android] - Android 스마폰을 PC 화면으로 미러링: Mirroid scrcpy의 개발자가 Audio 미러링이 가능한 sndcpy을 개발하였으며, 실제 테스트 해본 결과 잘 동작하여 본 포스팅을 작성하였습니다. sndcpy의 blog는 아래 링크를 확인 부탁드립니다. blog.rom1v.com/2020/06/audio-forwarding-on-android-10/ Audio forwa.. 2021. 9. 30.
Android 스마폰을 PC 화면으로 미러링: Mirroid Mirroid 악성 코드 주의 Mirroid windows용 Version 1.6.0.5 설치 파일 중 하나(MirroidUnistall.exe)에서 악성 코드인 트로이목마가 검출되었습니다. V3와 Window defender로는 검출되지 않고, 알약(다운로드 링크)으로 검출됩니다. 해당 파일의 악성 코드 진성여부와, 악성코드로 감염된 파일로 실수로 배포한 것인지 의도적으로 배포한 것인지는 알 수 없습니다. 악성 코드에 의해서 피해가 없도록 다운로드 시 주의 부탁드립니다. 알약으로 치료는 되지만 혹시 몰라 Windows OS를 다시 설치하였습니다. Mirroid 카페의 (cafe.naver.com/mirroid)에서 바이러스 공지 내용 참고하세요. Mirroid 소개 안드로이드 스마트 폰을 PC 화면으로.. 2021. 2. 1.
Python으로 개발된 Android Apk Decompile Tool: androguard Android apk 분석 tool로 python으로 개발된 androguard를 설명합니다. Android apk 분석 tool은 ① SDK에 포함된 apkanalyzer, aapt가 있고, ② Java로 개발된 apktool을 사용할 수 있으나, 이는 실행 파일과 Jar형태로 배포되어 Python으로 개발된 프로그램에서 import 할 수 없고, system command로 Integration해야 합니다. [모바일 SW 개발/Android] - Android apk Decompile 과 분석 tool: apktool 사용법 [모바일 SW 개발/Android] - Command line 기반 Android Apk 분석 툴: apkanalyzer Androguard의 fork로써 apk_parse가 있.. 2021. 1. 27.
Android apk Decompile 과 분석 tool: apktool 사용법 Android apk 분석 시 사용할 수 있는 Tool은 크게 Anroid SDK에 포함된 apkanalyzer (사용법 링크), aapt2, SDK 에는 포함되지 않은 Android studio에서 사용된다고 하는 apktool이 있습니다. apktool 은 원래 Apk의 Reverse engineering을 위해서 만든 것으로 Apk를 decode 해서 code를 만들고, 이를 다시 apk를 재 빌드하는 것이 가능합니다. Apk에 디코딩을 통해서 resources.asrc, class.dex, AndroidManifest, 리소스 xml, png 등을 추출할 수 있습니다. 이 중에서 AndroidManifest를 분석하고 해당 apk의 package name, version code, permissi.. 2021. 1. 14.
Python BeautifulSoup으로 만든 Apk download 자동화 (Sample code) 이전 포스팅에서 Python 크롤러인 Selenium으로 https://apkpure.com 사이트에서 Android apk를 package name을 기준으로 apk으로 다운로드하는 방법을 설명하였습니다. [모바일 SW 개발/Android] - 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러 Python selenium 모듈을 활용 방법은 chrome driver를 사용하고 있기 때문에 ① Chrome 버전 업데이트되면 driver도 같이 업데이트해야 하고 ② apk 다운로드를 완료를 시점을 정확하게 모르기 때문에 일정 시간 동안 sleep()으로 대기를 해야 합니다. 일반적으로 apk 사이즈가 100MB 이하에는 1~2분 안에 다운로드가 완료하지만, 일부 게임은 2GB가.. 2021. 1. 8.
파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러 Android를 개발하다 보면 목적에 따라서 APK를 다운로드해야 하는 경우가 있습니다. Google Play Store에서는 APK 자체를 다운로드할 수 있는 방법은 없고, APK Mirror 사이트를 통해서 다운로드할 수 있습니다. 일반 사용자인 경우에는 Android로 기반의 내비게이션에 APK를 다운로드하고 SD 카드로 복사하여 설치 가능합니다. 본 포스팅에서는 다운로드하고자 하는 APK 의 package name의 list를 기반으로 Python의 selenium과 chrome webdriver를 사용해서 '자동'으로 apk를 다운로드합니다. 이 방법은 APK 뿐 만 아니라 다른 Web site에서 특정 파일을 다운로드하는데 활용될 수 있습니다. 참고로, 다운로드한 apk를 상업적인 목적이나 추.. 2021. 1. 8.
Android에서 Python 실행 (SL4A와 Termux 활용) Python은 Google Android OS에서 공식적으로 지원하고 언어가 아닙니다. 하지만 Open source의 SL4A라는 Project, Kivy Project와 함께 Termux와 같은 Linux Emulator를 통해서 Python을 설치하고 실행할 수 있습니다. SL4A를 Android Playstore에서 검색하면 QPython 3L, Pydroid3와 같은 App을 다운로드할 수 있습니다. 본 포스팅은 SL4A는 유튜브 동영상으로 설명을 대신하고 Termux에서 Python 사용하는 사례를 설명하고자 합니다. SL4A 기반의 app과 Termux에서 Python을 실행하는 경우에 대한 비교는 아래와 같이 정리할 수 있습니다. SL4A 기반의 Python (e.g. QPython 3L) .. 2020. 8. 29.
Android 에서 리눅스 App 실행: Linux Terminal Emulator (Termux) 활용 안드로이드 스마트 폰에서 Linux Application을 실행하는 방법을 설명하고자 합니다. Android 기반의 스마트 폰은 Linux Kernel위에 HAL, Android Framework을 사용하지만 사용자 레벨에서는 Java나 Kotlin으로 작성된 Application을 사용해야 하고, Linux Application을 그대로 사용할 수 없습니다. 안드로이드의 Libc는 Bionic libc이고, 리눅스의 Libc는 gLibc를 사용하기 때문에 리눅스에 빌드된 실행 파일을 그대로 실행하는 것은 불가능합니다. 이러한 차이점을 해결하기 위해서 안드로이드 스마트 폰에서는 Linux Terminal Emulator를 사용해야 합니다. Android에서 구동 가능한 리눅스 Terminal 중에서 Te.. 2020. 8. 29.
Android apkanalyzer 에러: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema 우분투 20.04 환경에서 Android APK 분석 tool인 apk analyzer를 설치 후 실행 시 발생하는 에러입니다. JAVA HOME 설정이 되지 않아서 발생하는 에러입니다. 에러 메시지 $ apkanalyzer ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation. # open jdk 설치 후 JAVA_HOME 설정 → sudo apt install openjdk-14-jre-headless # version 14.0.1+7-.. 2020. 8. 20.
Command line 기반 Android Apk 분석 툴: apkanalyzer Command line 기반의 Android APK 분석 tool 인 'apkanalyzer' 사용 방법에 대해서 정리하고자 합니다. Command line 분석 Tool은 Android Studio가 설치되지 않은 서버에서 APK를 분석하거나, APK 분석을 자동화할 때 유용하게 사용할 수 있습니다. Apk 분석 툴은 Google에서 배포하는 aapt2 (※ 정확하게는 aapt2는 리소스 컴파일 및 dump tool임)와 apkanalyzer가 있고, Python 기반의 apk-parser가 있습니다. 구글이 배포하는 tool은 최신 Android OS의 수정 사항까지 반영된다는 장점이 있고, APK를 디컴파일하여 분석하는 목적으로는 apk-parser가 좀 더 유용한 것 같습니다. 설치 apkanal.. 2020. 8. 20.
Repo 에러: repo sync unable to read sha1 file of xxx, cannot initialize work tree Android 소스를 repo 로 다운로드하다가 "repo sync unable to read sha1 file of xxx, cannot initialize work tree" 에러가 발생하였다. 네트워크가 느린 환경에서 긴 시간 동안 대용량의 소스 다운로드 하는 과정에서 오류가 발생하는 것으로 추정된다. 에러 메시지: repo sync unable to read sha1 file of xxx, cannot initialize work tree Syncing work tree: 73% (796/1090)error: unable to read sha1 file of xxx 수정 방법: repo sync 에서 에러가 발생하는 git 이 "Launcher3.git" 라고 가정 한다면 아래와 같이 ./repo.. 2020. 7. 3.
[실패 사례] WSL(Windows Subsystem for Linux) 에서 Android 빌드하기 Windows 10에서 Windows Subsystem Linux(WSL) 를 20년 5월 버전에 배포하였다. 윈도우 10에서 리눅스 커널이 그대로 올라가고, 리눅스의 실행 파일(elf)가 실행할 수 있다. USB와 같은 직력화 디바이스 컨트롤은 아직은 불가능하지만, GPU 접근이 가능하고 X-sever를 사용하면 GUI Application 도 실행 가능하다. 이에 WSL 환경에서 Android 소스를 빌드가 가능한지 확인하였다. 결과적으로 WSL에서 Android 소스 다운로드는 가능하나, 빌드는 "case sensitive file system"을 지원하지 않아 불가능하다. 1. WSL 가상 메모리 늘리기 WSL에서는 linux command 로 가상 메모리 설정은 불가능하고, wslconfig를 .. 2020. 7. 3.
repo 실행 시 DeprecationWarning: imp module 대처법 Android source를 다운로드 후 수정 사항의 commit을 repo로 remote reposity에 반영할 때 에러가 발생하였다. Repo 명령어 (repo init, repo sync, repo start 등) 사용 시 Warning은 발생하더라 git init , clone, add, commit은 가능했지만, 결정적으로 repo upload 시 에러 발생하여 remote repository에 반영이 불가능하였다. /home/temp/.repo/repo/main.py:19: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative use.. 2020. 6. 19.
Android 소스 최적화 (100GB에서 65GB로 줄이기) Android source는 Q-OS 기준으로 대략 100GB 정도의 크기이고, /.repo 가 47GB로 거의 50% 용량을 차지하고 있다. Git 전체를 다운로드 받으면 git log를 통해서 history 확인이 가능하지만, 굳이 전체 history를 확인할 필요가 없는 경우 git log 정보는 디스크 낭비이다. 예를 들어, 개발자가 commit을 이미 만든 상태에서 commit 을 반영한 system 이미지를 만드는 경우 git log 전체를 다운로드 할 필요은 없다. 또한 Android source는 Linux와 MacOS의 prebuilt tool chain 까지 포함하고 있어 Linux에서만 빌드하는 경우 Mac OS tool chain은 삭제 가능하다. Repo 와 Git 옵션을 통해서 .. 2020. 6. 12.
Soong 빌드 시스템을 활용한 Android.bp 작성법 Google에서 Android 버전을 올릴 때마다 Android.mk를 Android.bp로 변경하다고 공지하고 있습니다. Android 11 (R-OS)에서는 Androdi.mk와 Android.bp를 같이 사용할 수 있지만 2~3년 후에는 Android.mk는 빌드는 지원하지 않고, Android.bp만 지원할 것으로 예상됩니다. Androdi.bp는 Soong build 시스템을 사용합니다. Androdi.mk 대신 Soong에서 사용하는 Android.bp 파일을 차이점을 이해야 하며, Android Full 빌드를 하는 경우 Andorid.mk를 Android.bp로 변환하는 과정이 있어 Android.bp를 사용하는 경우 빌드 시간이 조금이나마 단축할 수 있습니다. Android.bp파일을 처.. 2020. 6. 9.
Android 11 (R-OS) Emulator에 설치하기 Android 11 은 구글에서 개발자 프리뷰 프로그램을 통해서 Google Pixel 4/4 XL, Pixel 3a/3a XL, Pixel 3/3 XL 및 Pixel 2/2 XL 단말을 대상으로 R-OS Preview 버전으로 업데이트 진행할 수 있습니다. Developer Preview 버전은 2월~5월 배포, Beta 버전은 6월~7월까지 배포, Release candidate는 8월 배포 후 큰 문제가 없으면 공식 R-OS을 9월초에 배포할 것으로 보인다. Google Pixel 하드웨어가 없더라도 개발 및 테스트용 Android Emulator를 사용하여 R-OS Preview 버전 확인할 수 있습니다. Emalator에 R-OS 를 설치하는 방법은 아래와 같습니다. 1. Android 스튜디오.. 2020. 6. 7.
Android 11 기능 소개 2020년 5월 말에 Android 11 (R-OS)의 Developer Preview 4 를 배포하였고, 6/10일 Beta 버전을 배포되었다. Android 11 공식 배포는 9월 초 (첫 번째 월요일)에 배포될 것으로 예상되며, 개발자 프리뷰 4와 Beta 버전을 통해서 Android 11 에서는 주요 개선을 기능을 미리 살펴보았다. 아래 링크한 유튜브 동영상에서는 대화 UI(Bubble chat), Medial Play control , Power Menu를 통한 Google Home Device control , 홈 아이콘 방석 UI 추가 등의 UI를 확인할 수 있다. AOSP 적용된 신규 기능은 이미 삼성/LG 폰에는 이미 적용된 기능이 있어 각 제조사에서 각 신규 기능을 어떻게 적용할지 실제.. 2020. 6. 6.
Ubuntu에서 Android 10 빌드하기 지난 Post 에서 Android 10 (Q-OS) 소스를 다운로드하는 방법과 명령어를 설명하였다. 구글은 Ubuntu 14.04 64bit 환경을 기준으로 설명하고 있어, 최신 Ubuntu 20.04 64bit (8GB RAM)에서도 ASOP 가 빌드 가능한지 확인하고자 한다. 결과적으로 몇가지 에러만 수정하면 Ubuntu 20.04 (8 GB RAM)에서도 Andorid 10 빌드가 가능하다. 요약: Ubuntu 20.04 에서 Android 10 (Q-SO) 빌드가 가능하다. 추가 Lib 설치 및 16G 이상 RAM 확보가 필수 빌드를 원하는 Tag 정보 및 Device Name 정보은 Google 사이트 및 소스에서 확인 후 빌드 Android NDK 와 PDK 사용해서 개발하는 경우 AOSP 빌.. 2020. 6. 4.
Android Studio 4.0 사용하기 Andriod studio 4.0 버전이 5월말부터 Preview 배포가 끝나고 Official release를 시작하였다. 글로 읽는 것 보다는 실제로 Android Studio 4.0을 다운로드 해서 사용해 보는 것을 추천드립니다. 본 게시글은 Gogole Developer 블로그 내용을 요약하였습니다. Android Studio 4.0 Download 기존의 설치된 Andorid Studio 에서 4.0 으로 업그레이드는 메뉴> Help > Check for updates 를 선택하거나 Google 개발자 사이트에서 다운로드 가능하다. Android Studio 4.0설치 시간은 5~10분 정도 소요되고, SDK 업데이트, gradle 까지 업데이트 하려면 대략 20~30분 정도 소요된다. 설치 시.. 2020. 6. 3.
Android 10 (Q-OS) 소스 다운로드 Android 단말의 SW 은 Android App/Framework, AP Chipset 업체 BSP, Modem BSP, 폰 제조사 SW와 같이 4가지로 구성되어 있고 상호 밀접하게 결합되어 있다. (최근 2~3년 동안 구글에서는 각 개발 주체별 SW 종속성을 Treble project를 통해서 최소화하려고 노력하고 있다.) Android Framework/Apps : Google이 개발하는 Android Framework, Native Library, Android Run time, GMS App (e.g. Youtube, Playstore), Linux kernel 일부 퀄컴/MTK/삼성에서 개발하는 AP Chipset BSP: 하드웨어 관련된 추상화 레이어 (HAL/HIDL), 리눅스 커널 일부.. 2020. 5. 31.