# benda-component **Repository Path**: shrddu/benda-component ## Basic Information - **Project Name**: benda-component - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-14 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Origin Card 这是一个面向 Android 桌面小组件的示例项目,当前实现偏向奔达车机首页信息同步场景。项目包含一个可安装应用、一个 4x2 桌面小组件、一个用于配置组件内容的入口页,以及一个通过无障碍服务读取目标应用页面信息并刷新组件的同步链路。 这个仓库适合两类使用方式: - 直接拉下来修改样式、文案、数据结构,做你自己的组件 - 保留现有奔达同步逻辑,在此基础上继续定制 UI 和交互 ## 当前能力 - 一个可以安装到真机上的 Android 应用 - 一个点击后可打开目标应用的小组件卡片 - 一个本地配置页,可设置爱车名称和自定义背景图 - 一个无障碍服务,可读取目标应用首页中的油量、里程和锁定状态 - 一套本地存储与小组件刷新逻辑,用于把解析结果同步到桌面 ## 项目结构 - app/src/main/java/com/example/origincard/MainActivity.kt 入口页面,负责展示调试信息、保存爱车名称、上传背景图、跳转无障碍设置。 - app/src/main/java/com/example/origincard/widget/SimpleCardWidgetReceiver.kt 小组件渲染入口,负责把本地保存的数据组装成桌面卡片。 - app/src/main/java/com/example/origincard/sync/VehicleAccessibilityService.kt 无障碍服务和页面解析逻辑,负责从目标应用节点中提取油量、里程和锁车状态。 - app/src/main/java/com/example/origincard/data/VehicleStatusStore.kt 本地数据读写层,小组件和配置页都会通过它共享状态。 - app/src/main/res/layout/widget_motorcycle_card.xml 小组件布局。 - app/src/main/res/drawable/ 背景图、进度环、图标和装饰资源。 ## 二次开发从哪里开始 如果你只是想做自己的样式或功能,建议按下面的顺序改: 1. 先改 app/src/main/res/layout/widget_motorcycle_card.xml 和 app/src/main/res/drawable/,把外观调成你想要的样子。 2. 再改 app/src/main/java/com/example/origincard/widget/SimpleCardWidgetReceiver.kt,决定卡片上显示哪些字段、点击后做什么动作。 3. 如果你要换数据来源,再改 app/src/main/java/com/example/origincard/sync/VehicleAccessibilityService.kt 或直接替换成你自己的同步方式,比如接口拉取、本地数据库、日历、待办、天气等。 4. 如果你准备发布自己的版本,记得修改 applicationId、应用名称、图标和签名,避免与其他安装包冲突。 如果你不打算继续使用奔达同步逻辑,可以直接保留小组件壳子,只替换数据来源和布局,这个仓库依然能作为一个完整的 Android Widget 起点。 ## 开发环境 你不需要 Android 模拟器,但仍然需要下面这些本地依赖: - JDK 17 - Android SDK Command-line Tools - Android Platform SDK - Android Build-Tools - adb - Gradle,或者先用本机 Gradle 生成 Wrapper 推荐环境变量: - JAVA_HOME 指向 JDK 目录 - ANDROID_HOME 或 ANDROID_SDK_ROOT 指向 Android SDK 根目录 - GRADLE_HOME 指向 Gradle 目录 - PATH 中包含 jdk/bin、gradle/bin、platform-tools 和 cmdline-tools 的可执行路径 ## 首次构建 第一次建议直接构建 debug 包: ```powershell .\gradlew.bat --no-daemon assembleDebug ``` 如果你的本机 Wrapper 缓存异常,也可以改用已安装的 Gradle: ```powershell gradle.bat --no-daemon assembleDebug ``` debug 包不需要你的 release 签名。开发者拿到仓库后,只要本机 Android 环境正常,就可以直接构建、安装和继续改代码。 ## 安装到手机 ```powershell adb devices .\gradlew.bat installDebug ``` 安装完成后: 1. 打开应用首页 2. 按提示开启无障碍服务 3. 长按桌面,添加名为 Origin Card 的小组件 如果你安装的是自己重新签名的版本,而手机里已经有另一个不同签名的同包名应用,Android 通常不能直接覆盖安装。这时你有两个选择: 1. 卸载旧版本后再安装 2. 修改 applicationId,作为你自己的独立应用安装 ## Release 签名说明 仓库不会提交 keystore、密码和安装包产物。这是刻意保留的边界,方便其他开发者基于源码做自己的版本,同时避免把原始发布身份一起公开。 如果你要打 release 包,请在你自己的 local.properties 或环境变量中提供签名参数,不要写进仓库中的 gradle.properties: ```properties ORIGINCARD_RELEASE_STORE_FILE=../your-release.jks ORIGINCARD_RELEASE_STORE_PASSWORD=your-store-password ORIGINCARD_RELEASE_KEY_ALIAS=your-key-alias ORIGINCARD_RELEASE_KEY_PASSWORD=your-key-password ``` 然后执行: ```powershell .\gradlew.bat assembleRelease ``` ## 适合继续扩展的方向 1. 接入你自己的数据源,比如天气、倒计时、课程表、待办或车辆数据接口 2. 给不同组件尺寸提供不同布局,而不是只保留 4x2 卡片 3. 增加定时刷新、点击快捷操作或跳转详情页 4. 为不同品牌手机桌面做单独的尺寸与边距适配 5. 替换当前无障碍解析逻辑,改成更稳定的数据同步方案