{"id":22868467,"url":"https://github.com/xpdojo/android","last_synced_at":"2026-05-15T12:04:49.042Z","repository":{"id":138406085,"uuid":"535049687","full_name":"xpdojo/android","owner":"xpdojo","description":"Android is a mobile operating system based on a modified version of the Linux kernel and other open-source software, designed primarily for touchscreen mobile devices such as smartphones and tablets.","archived":false,"fork":false,"pushed_at":"2023-02-19T10:27:13.000Z","size":186,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-02T20:24:31.569Z","etag":null,"topics":["android","kotlin"],"latest_commit_sha":null,"homepage":"https://developer.android.com/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xpdojo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-10T16:10:30.000Z","updated_at":"2023-02-19T11:00:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"f2a7fdf4-f8b8-440f-9d40-f89656823e8c","html_url":"https://github.com/xpdojo/android","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xpdojo/android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpdojo%2Fandroid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpdojo%2Fandroid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpdojo%2Fandroid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpdojo%2Fandroid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xpdojo","download_url":"https://codeload.github.com/xpdojo/android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xpdojo%2Fandroid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33066134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","kotlin"],"created_at":"2024-12-13T12:35:12.771Z","updated_at":"2026-05-15T12:04:49.004Z","avatar_url":"https://github.com/xpdojo.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Android\n\n- [Android](#android)\n  - [환경 변수](#환경-변수)\n  - [AVD Manager(Android Virtual Device Manager)](#avd-managerandroid-virtual-device-manager)\n    - [Virtual Device](#virtual-device)\n    - [Physical Device](#physical-device)\n  - [디자인](#디자인)\n  - [Command-line tools](#command-line-tools)\n    - [Android SDK Command-Line Tools](#android-sdk-command-line-tools)\n    - [Android SDK Build Tools](#android-sdk-build-tools)\n    - [Android SDK Platform Tools](#android-sdk-platform-tools)\n    - [Android Emulator](#android-emulator)\n\n## 환경 변수\n\n- [Docs](https://developer.android.com/studio/command-line/variables#envar)\n\n| 환경 변수               | 설명                                                                                                                                                                                            | 경로                                                                                                        |\n| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |\n| `ANDROID_HOME`          | SDK 설치 디렉터리의 경로를 설정합니다.                                                                                                                                                          | Ubuntu(`$HOME/Android/Sdk`), macOS(`$HOME/Library/Android/sdk`), Windows(`$HOME\\AppData\\Local\\Android\\Sdk`) |\n| `ANDROID_USER_HOME`     | Android SDK에 포함된 도구의 사용자 환경설정 디렉터리 경로를 설정합니다.                                                                                                                         | `$HOME/.android`                                                                                            |\n| `REPO_OS_OVERRIDE`      | [sdkmanager](https://developer.android.com/studio/command-line/sdkmanager)를 사용하여 현재 시스템과 다른 운영체제용 패키지를 다운로드할 경우 이 변수를 windows, macosx 또는 linux로 설정합니다. | -                                                                                                           |\n| `ANDROID_EMULATOR_HOME` | 사용자별 에뮬레이터 구성 디렉터리의 경로를 설정합니다.                                                                                                                                          | `$ANDROID_USER_HOME/avd`                                                                                    |\n\n```ini\n; $ANDROID_USER_HOME/avd/\u003cAVD_Name\u003e.avd/config.ini\nhw.audioInput = no\nhw.audioOutput = no\n\nhw.GPS = no\n```\n\n## AVD Manager(Android Virtual Device Manager)\n\n### Virtual Device\n\n\u003e 가상 디바이스를 생성한다.\n\n![Enable virtualization](images/bios-virtualization.png)\n\n- BIOS 설정에서 가상화 기능을 활성화 해야 한다.\n  - ASUS BIOS + Intel CPU에서는 `Advanced` \u003e `CPU Configuration` \u003e `Intel Virtualization Technology`를 `Enabled`로 설정한다.\n  - ASUS BIOS + AMD CPU에서는 `Advanced` \u003e `CPU Configuration` \u003e `SVM Mode`를 `Enabled`로 설정한다.\n- 부팅 시 [CPU를 너무 많이 사용](https://stackoverflow.com/questions/37063267/high-cpu-usage-with-android-emulator-qemu-system-i386-exe)한다.\n\n```sh\ntop -c\n# 36654 markrul+  20   0 4083608   2.1g   1.9g S 484.7   6.6  13:26.83 /home/markruler/Android/Sdk/emulator/qemu/linux-x86_64/qemu-system-x86_64 -netdelay none -netspeed full -avd Pixel_4_API_31_-_Android_12 -qt-hide-window -grpc-use-token -idle-grpc-timeout 300\n```\n\n- Virtual Device는 생성하면 여러 프로젝트에 걸쳐서 사용할 수 있다.\n\n### Physical Device\n\n\u003e 자신이 사용하고 있는 안드로이드 기기로 직접 확인할 수 있다. (Galaxy Note 9 기준)\n\n- `Settings \u003e About phone \u003e Software information \u003e Build number`를\n  [7번 클릭](https://developer.android.com/studio/debug/dev-options)하여 Developer optikons를 활성화한다.\n- `Settings \u003e Developer optikons \u003e USB Debugging`을 활성화한다.\n- USB 케이블로 모바일 기기를 연결한다.\n- Android Studio에서 `Tools \u003e Device Manager \u003e Physical`를 선택한다.\n- 모바일 기기 잠금 화면을 풀고 `Allow USB debugging`\n- Virtual Device처럼 Run 하면 애플리케이션을 실행할 수 있다.\n- 기기 미러링 방법\n  - Samsung 스마트폰을 사용한다면 [Link to Windows](https://play.google.com/store/apps/details?id=com.microsoft.appmanager) 앱을 사용해\n    PC 화면으로 확인할 수 있다.\n  - Android Studio에서 `Settings \u003e Experimental \u003e Device Monitoring`에서\n    [Enable mirroring of physical Android devices](https://developer.android.com/studio/preview/features?hl=en#device-mirroring-giraffe)를 활성화하면\n    Android Studio의 에뮬레이터로 확인할 수 있다.\n    - [Electric Eel Canary](https://developer.android.com/studio/releases#device-mirroring) 채널에서 실험용 기능으로 제공됩니다.\n\n## 디자인\n\n- Empty Project를 생성하면 기본적으로 `/app/src/main/res/layout/activity_main.xml` 파일에서\n  화면 정보를 확인할 수 있다.\n- [Design for Android](https://developer.android.com/design)\n- Android Studio에서 `Design` 탭을 선택하면 화면을 디자인할 수 있다.\n  - `Code` 탭을 눌러서 XML 코드를 확인할 수도 있다.\n\n## Command-line tools\n\n- [Docs: 명령줄 도구](https://developer.android.com/studio/command-line)\n\nAndroid SDK는 앱 개발에 필요한 여러 패키지로 구성됩니다.\nAndroid 스튜디오의 [SDK Manager](https://developer.android.com/studio/intro/update#sdk-manager)\n또는 [`sdkmanager`](https://developer.android.com/studio/command-line/sdkmanager)\n명령줄 도구를 사용하여 각 패키지를 설치하고 업데이트할 수 있습니다.\n모든 패키지는 Android SDK 디렉터리에 다운로드되며, 이 디렉터리는 다음 방법을 통해 찾을 수 있습니다.\n\n- Android 스튜디오에서 **File \u003e Project Structure**를 클릭합니다.\n- 왼쪽 창에서 **SDK Location**을 선택합니다. 경로가 **Android SDK location** 아래 표시됩니다.\n\n위치: `android_sdk/cmdline-tools/version/bin/`\n\n### Android SDK Command-Line Tools\n\n- `apkanalyzer`\n  - 빌드 프로세스가 완료된 후 APK의 구성에 관한 유용한 정보를 제공합니다.\n- `avdmanager`\n  - 명령줄에서 Android Virtual Device(AVD)를 만들고 관리할 수 있습니다.\n- `lint`\n  - 코드를 스캔하여 코드의 구조적 품질 문제를 식별하고 수정할 수 있도록 지원합니다.\n- `retrace`\n  - R8로 컴파일된 애플리케이션의 경우 retrace는 원본 소스 코드에 다시 매핑되는 난독화된 스택 트레이스를 디코딩합니다.\n- `sdkmanager`\n  - Android SDK용 패키지를 보고 설치하고 업데이트하고 제거할 수 있습니다.\n  - [Docs: sdkmanager](https://developer.android.com/studio/command-line/sdkmanager)\n\n### Android SDK Build Tools\n\n- `aapt2`\n  - Android Asset Packaging Tool\n  - Android 리소스를 Android 플랫폼에 최적화된 바이너리 형식으로 파싱하고 색인을 생성하며 컴파일한 후 컴파일된 리소스를 단일 출력으로 패키징합니다.\n  - [Docs: AAPT2](https://developer.android.com/studio/command-line/aapt2)\n- `apksigner`\n  - APK에 서명하고 APK 서명이 주어진 APK에서 지원하는 모든 플랫폼 버전에서 성공적으로 인증되는지 확인합니다.\n- `zipalign`\n  - 압축되지 않은 모든 데이터가 파일 시작 부분을 기준으로 특정 정렬이 적용된 상태로 시작되도록 하여 APK 파일을 최적화합니다.\n\n### Android SDK Platform Tools\n\n- `adb`\n  - Android Debug Bridge\n  - adb(Android 디버그 브리지)는 에뮬레이터 인스턴스 또는 Android 지원 기기의 상태를 관리할 수 있는 다목적 도구입니다. adb를 사용하여 기기에 APK를 설치할 수도 있습니다.\n  - [Docs: adb](https://developer.android.com/studio/command-line/adb)\n\n```sh\nadb devices -l\n# List of devices attached\n# 28ea57e85a3f7ece       device product:crownlteks model:SM_N960N device:crownlteks transport_id:3\n```\n\n- `etc1tool`\n  - PNG 이미지를 ETC1 압축 표준으로 인코딩하고 압축된 ETC1 이미지를 PNG로 다시 디코딩할 수 있는 명령줄 유틸리티입니다.\n- `fastboot`\n  - 기기를 플랫폼 및 기타 시스템 이미지로 플래시합니다. 플래시 안내는 Nexus 및 Pixel 기기용 공장 출고 시 이미지를 참고하세요.\n- `logcat`\n  - 앱 및 시스템 로그를 보기 위해 adb에서 호출합니다.\n\n### Android Emulator\n\n- `emulator`\n  - 실제 Android 런타임 환경에서 애플리케이션의 디버그 및 테스트에 사용할 수 있는 QEMU 기반 기기 에뮬레이션 도구입니다.\n  - [Docs: emulator](https://developer.android.com/studio/run/emulator-commandline)\n- `mksdcard`\n  - 외부 메모리 카드(예: SD 카드)의 존재를 시뮬레이션하기 위해 에뮬레이터와 함께 사용할 디스크 이미지를 만들 수 있습니다.\n  - [Docs: mksdcard](https://developer.android.com/studio/command-line/mksdcard)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxpdojo%2Fandroid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxpdojo%2Fandroid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxpdojo%2Fandroid/lists"}