{"id":16934245,"url":"https://github.com/codeskyblue/fa","last_synced_at":"2025-08-11T09:06:05.275Z","repository":{"id":57488586,"uuid":"160665647","full_name":"codeskyblue/fa","owner":"codeskyblue","description":"FA(fast adb) helps you win at ADB(Android Debug Bridge).","archived":false,"fork":false,"pushed_at":"2019-01-14T02:38:41.000Z","size":137,"stargazers_count":53,"open_issues_count":1,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-20T09:34:54.551Z","etag":null,"topics":["adb","android","client"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codeskyblue.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}},"created_at":"2018-12-06T11:32:40.000Z","updated_at":"2025-06-11T08:21:23.000Z","dependencies_parsed_at":"2022-08-29T15:01:46.823Z","dependency_job_id":null,"html_url":"https://github.com/codeskyblue/fa","commit_stats":null,"previous_names":["codeskyblue/ya"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/codeskyblue/fa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Ffa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Ffa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Ffa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Ffa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codeskyblue","download_url":"https://codeload.github.com/codeskyblue/fa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codeskyblue%2Ffa/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268464899,"owners_count":24254205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["adb","android","client"],"created_at":"2024-10-13T20:51:38.828Z","updated_at":"2025-08-02T22:09:36.982Z","avatar_url":"https://github.com/codeskyblue.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fa = fast adb\n[![Build Status](https://travis-ci.org/codeskyblue/fa.svg?branch=master)](https://travis-ci.org/codeskyblue/fa)\n[![GoDoc](https://godoc.org/github.com/codeskyblue/fa/adb?status.svg)](https://godoc.org/github.com/codeskyblue/fa/adb)\n\n`fa` is a command line tool that wraps `adb` in order to extend it with extra features and commands that make working with Android easier.\n\nThis project is still in developing, please be careful when use in production.\n\n## Features\n- [x] show device selection when multi device connected\n- [x] screenshot\n- [x] install support http url\n- [x] support launch after install apk\n- [x] support `fa devices --json`\n- [x] support `fa shell`\n- [x] colorful logcat and filter with package name\n- [ ] install apk and auto click confirm\n- [ ] check device health status\n- [ ] show current app\n- [ ] unlock device\n- [ ] reset device state, clean up installed packages\n- [ ] show wlan (ip,mac,signal), enable and disable it\n- [x] share device to public web\n- [ ] fa share-server\n- [ ] install ipa support\n- [x] fahub service\n\n## Install\n**For mac**\n\n```bash\nbrew install codeskyblue/tap/fa\n```\n\n**For windows and linux**\n\ndownload binary from [**releases**](https://github.com/codeskyblue/fa/releases)\n\n## Usage\n### Show version\n\n```bash\n$ fa version\nfa version v0.0.5 # just example\nadb server version 28\n```\n\n### Show devices\n- [x] Remove header `List of devices attached` to make it easy parse\n\n```bash\n$ fa devices\n3578298f        device\n\n$ fa devices --json\n[\n   {\"serial\": \"3578298f\", \"status\": \"device\"}\n]\n```\n\n### Run adb command with device select\nif multi device connected, `fa` will give you list of devices to choose.\n\n```bash\n$ fa adb shell\n@ select device\n  \u003e 3aff8912  Smartion\n    vv12afvv  Google Nexus 5\n{selected 3aff8912}\nshell $\n```\n\n`-s` option and `$ANDROID_SERIAL` is also supported, but if you known serial, maybe use `adb` directly is better.\n\n```bash\n$ fa -s 3578298f adb shell pwd\n/\n$ ANDROID_SERIAL=3578298 fa adb shell pwd\n/\n```\n\n### Screenshot\nonly `png` format now.\n\n```bash\nfa screenshot -o screenshot.png\n```\n\n### Install APK\n\n```bash\nfa install ApiDemos-debug.apk # from local file\nfa install http://example.org/demo.apk # from URL\nfa install -l ApiDemos-debug.apk # launch after install\nfa install -f ApiDemos-debug.apk # uninstall before install\n```\n\nShow debug info when install\n\n```bash\n$ fa -d install --force --launch https://github.com/appium/java-client/raw/master/src/test/java/io/appium/java_client/ApiDemos-debug.apk\nDownloading ApiDemos-debug.apk...\n 2.94 MiB / 2.94 MiB [================================] 100.00% 282.47 KiB/s 10s\nDownload saved to ApiDemos-debug.apk\n+ adb -s 0123456789ABCDEF uninstall io.appium.android.apis\n+ adb -s 0123456789ABCDEF install ApiDemos-debug.apk\nApiDemos-debug.apk: 1 file pushed. 4.8 MB/s (3084877 bytes in 0.609s)\n        pkg: /data/local/tmp/ApiDemos-debug.apk\nSuccess\nLaunch io.appium.android.apis ...\n+ adb -s 0123456789ABCDEF shell am start -n io.appium.android.apis/.ApiDemos\n```\n\n### App\n```\n$ fa app list # show all app package names\n$ fa app list -3 # only show third party packages\n```\n\n### Shell\nLike `adb shell`, run `fa shell` will open a terminal\n\nThe difference is `fa shell` will add `/data/local/tmp` into `$PATH`\nSo if you have binary `busybox` in `/data/local/tmp`,\nYou can just run\n\n```\n$ fa shell busybox ls\n# using adb shell you have to\n$ adb shell /data/local/tmp/busybox ls\n```\n\n### Watch\nTrace device `came online` and `went offline`\n\n```bash\n$ fa watch\n3578298f offline\n3578298f device\n```\n\nHook script when device online\n\n```bash\n# on windows\n$ fa watch --online-hook-cmd=\"echo %SERIAL%\" \n\n# on linux\n$ fa watch --online-hook-cmd=\"echo \\$SERIAL\" \n```\n\nThis subcommand seems not very stable, raise issue when you find something wrong.\n\n### Share\nShare local device\n\n```bash\n# share in localnet\n$ fa share\nConnect with: adb connect 10.0.0.1:6174\n\n# share to public ip\n$ fa share --tunnel\n______                   __\n/_  __/_ _____  ___  ___ / /\n / / / // / _ \\/ _ \\/ -_) /\n/_/  \\_,_/_//_/_//_/\\__/_/ v0.2.11\n\nExpose local servers to internet securely\nhttps://labstack.com/docs/tunnel\n________________________________O/_______\n                                O\\\n⇨ routing traffic from tcp://leo.labstack.me:10081\n```\n\nWhen use tunnel, you should use `adb connect leo.labstack.me:10081`\n\nThen you can use adb to do anything just like device plugged in your computer.\n\n### Pidcat (logcat)\nCurrent implementation is wrapper of [pidcat.py](https://github.com/JakeWharton/pidcat)\nSo use this feature, you need python installed.\n\n```bash\n$ fa help pidcat\nUSAGE:\n   fa pidcat [package-name ...]\n\nOPTIONS:\n   --current                     filter logcat by current running app\n   --clear                       clear the entire log before running\n   --min-level value, -l value   Minimum level to be displayed {V,D,I,W,E,F}\n   --tag value, -t value         filter output by specified tag(s)\n   --ignore-tag value, -i value  filter output by ignoring specified tag(s)\n```\n\nThe pidcat is very beautiful.\n\n![pidcat](https://github.com/JakeWharton/pidcat/raw/master/screen.png)\n\n## Thanks for these Articles and Codes\n- \u003chttps://labstack.com/docs/tunnel\u003e\n- \u003chttps://github.com/mzlogin/awesome-adb\u003e\n- [Facebook One World Project](https://code.fb.com/android/managing-resources-for-large-scale-testing/)\n- [Facebook Device Lab](https://code.fb.com/android/the-mobile-device-lab-at-the-prineville-data-center/)\n- Article reverse ssh tunnling \u003chttps://www.howtoforge.com/reverse-ssh-tunneling\u003e\n- [openstf/adbkit](https://github.com/openstf/adbkit)\n- [ADB Source Code](https://github.com/aosp-mirror/platform_system_core/blob/master/adb)\n- ADB Protocols [OVERVIEW.TXT](https://github.com/aosp-mirror/platform_system_core/blob/master/adb/OVERVIEW.TXT) [SERVICES.TXT](https://github.com/aosp-mirror/platform_system_core/blob/master/adb/SERVICES.TXT) [SYNC.TXT](https://github.com/aosp-mirror/platform_system_core/blob/master/adb/SYNC.TXT)\n- [JakeWharton/pidcat](https://github.com/JakeWharton/pidcat)\n- \u003chttps://github.com/wmbest2/android\u003e\n- \u003chttps://github.com/zach-klippenstein/goadb\u003e\n\n\nLibs might be useful\n\n- \u003chttps://github.com/fatedier/frp\u003e\n- \u003chttps://golanglibs.com/search?q=tunnel\u003e\n- \u003chttps://github.com/koding/tunnel\u003e\n- \u003chttps://github.com/mmatczuk/go-http-tunnel\u003e\n- \u003chttps://github.com/inconshreveable/go-tunnel\u003e\n- \u003chttps://github.com/labstack/tunnel-client\u003e SSH Tunnel\n- \u003chttps://github.com/gliderlabs/ssh\u003e Easy SSH servers in Golang\n\n## LICENSE\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeskyblue%2Ffa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodeskyblue%2Ffa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodeskyblue%2Ffa/lists"}