{"id":50277954,"url":"https://github.com/kissjacky/personal-mobile-apps","last_synced_at":"2026-05-27T22:02:54.520Z","repository":{"id":359995317,"uuid":"1248297597","full_name":"kissjacky/personal-mobile-apps","owner":"kissjacky","description":"Open-source Android personal apps built with Code Agents","archived":false,"fork":false,"pushed_at":"2026-05-24T13:39:02.000Z","size":190,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T15:13:44.496Z","etag":null,"topics":["android","code-agent","open-source","personal-apps"],"latest_commit_sha":null,"homepage":null,"language":"Java","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/kissjacky.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-24T13:08:00.000Z","updated_at":"2026-05-24T13:39:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kissjacky/personal-mobile-apps","commit_stats":null,"previous_names":["kissjacky/personal-mobile-apps"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kissjacky/personal-mobile-apps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kissjacky%2Fpersonal-mobile-apps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kissjacky%2Fpersonal-mobile-apps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kissjacky%2Fpersonal-mobile-apps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kissjacky%2Fpersonal-mobile-apps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kissjacky","download_url":"https://codeload.github.com/kissjacky/personal-mobile-apps/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kissjacky%2Fpersonal-mobile-apps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33585203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"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":["android","code-agent","open-source","personal-apps"],"created_at":"2026-05-27T22:02:53.658Z","updated_at":"2026-05-27T22:02:54.514Z","avatar_url":"https://github.com/kissjacky.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Mobile Apps\n\nPersonal Mobile Apps 是一个用 Web Coding / Code Agent 方式持续开发的安卓小应用集合。\n\n这些应用的目标很朴素：完全开源、足够简单、没有广告、能直接装到自己的安卓手机里使用。你可以下载编译好的 APK，也可以阅读源码，或者用自己的 Code Agent 在这个项目上继续做二次开发。AI 正在把开发成本降到很低，很多过去“不值得专门开发”的个人需求，现在都可以被快速、认真地满足。\n\n## Apps\n\n| App | 路径 | 包名 | 说明 |\n| --- | --- | --- | --- |\n| 钢琴节拍器 | `apps/metronome` | `com.personalapps.metronome` | Android 原生节拍器，支持 BPM 输入、拍号选择和第一拍重音。 |\n\n共享 Android 代码放在 `packages/` 下。\n\n## 下载 APK\n\nGitHub 是主仓库和主发布源，Release 以 GitHub 为准：\n\n- GitHub Releases: \u003chttps://github.com/kissjacky/personal-mobile-apps/releases\u003e\n\nGitee 只做后置同步镜像，方便中国用户下载，可能会比 GitHub 稍有延迟：\n\n- Gitee Releases: \u003chttps://gitee.com/jackyyu/personal-mobile-apps/releases\u003e\n\n## 本地配置\n\n个人路径、签名文件、Token 等不要写进 Gradle 或源码。复制 `.env.example` 到 `.env` 后再填写本机配置：\n\n```bash\ncp .env.example .env\n```\n\n常用项：\n\n- `JAVA_HOME`: JDK 路径，建议 JDK 17。\n- `ANDROID_HOME` / `ANDROID_SDK_ROOT`: Android SDK 路径。\n- `ANDROID_COMPILE_SDK` / `ANDROID_MIN_SDK` / `ANDROID_TARGET_SDK`: Android SDK 版本。\n- `METRONOME_VERSION_CODE` / `METRONOME_VERSION_NAME`: 节拍器版本。\n- `ANDROID_SIGNING_*`: 发布 APK 签名配置，只放在 `.env` 或 CI secrets。\n- `GITEE_ACCESS_TOKEN`: 后置同步 Gitee Release 时使用，只放在 `.env` 或 CI secrets。\n\n`.env`、签名文件、构建产物和临时目录都已在 `.gitignore` 中排除。\n\n## 构建\n\nDebug 构建：\n\n```bash\n./scripts/build_app.sh metronome debug\n```\n\n其他 Gradle 命令建议通过包装脚本执行，这样会自动加载 `.env`：\n\n```bash\n./scripts/gradle.sh projects\n```\n\n输出：\n\n```text\napps/metronome/build/outputs/apk/debug/*debug.apk\n```\n\nRelease 构建需要先在 `.env` 中配置签名：\n\n```bash\n./scripts/build_release.sh metronome\n```\n\n签名后的 APK 会复制到：\n\n```text\ndist/releases/\n```\n\n## USB 安装\n\n1. 在安卓手机上开启开发者选项。\n2. 开启 USB 调试。\n3. 连接手机并同意 RSA 授权。\n4. 运行：\n\n```bash\n./scripts/install_metronome.sh\n```\n\n## 发布\n\n推荐用 tag 触发 GitHub Actions 自动构建并创建 Release：\n\n```bash\ngit tag -a metronome-v1.0.11 -m \"metronome 1.0.11\"\ngit push origin main --tags\n```\n\n也可以在本机创建 GitHub Release：\n\n```bash\n./scripts/create_github_release.sh metronome\n```\n\nGitee 不作为主发布入口。GitHub Release 发布成功后，`Sync to Gitee` workflow 会把代码、tag 和 Release 资产同步过去。\n\n更完整的发布和 CI secrets 配置见 [docs/RELEASE.md](docs/RELEASE.md)。\n\n## 开源协议\n\n本项目使用 MIT License，见 [LICENSE](LICENSE)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkissjacky%2Fpersonal-mobile-apps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkissjacky%2Fpersonal-mobile-apps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkissjacky%2Fpersonal-mobile-apps/lists"}