把 HowToCook 的 373 道家常菜谱装进手机。 原生 Android(Kotlin + Jetpack Compose),Material Design 2,橙色主题,离线可用、无广告、不登录。
| 应用名 | 程序员做饭指南 |
| 包名 | com.typeun.cc |
| 版本 | 1.01(versionCode 2) |
| 系统要求 | Android 5.0(API 21)及以上 |
| 安装包 | dist/cc-1.01-release.apk(9.9 MB) |
| 菜谱数据 | 373 道 / 10 大分类,随包离线内置 |
| 首页 · 今日推荐 | 分类导航 | 菜谱详情 |
|---|---|---|
![]() |
![]() |
![]() |
| 每天 3 道不同分类的推荐,与列表用横线分隔 | 10 大分类、本日收藏夹、一键添加到桌面 | 原料、按份数换算的计算公式、分步操作 |
| 桌面小组件 |
|---|
![]() |
| 收藏的菜钉在桌面,点条目深链直达详情 |
图片经 jsDelivr CDN 分发,国内网络可直连;仓库内
docs/screenshots/保留原图。
找菜
- 顶部搜索栏,按 菜名 / 分类 / 原料 / 描述 实时过滤,输入即出结果
- 10 大分类:主食、荤菜、素菜、汤与粥、早餐、水产、甜品、饮料、半成品加工、酱料和其它材料
- 分类按家常频率重排过,最常做的排前面;抽屉与顶部 chips 双导航
看菜
- 详情页包含:难度、卡路里、原料清单、按份数自动换算的「计算公式」、分步操作、附加说明
- 圆形揭露转场(从点按位置扩散)、列表错峰淡入、涟漪反馈——手感和系统应用一致
收藏
- 长按任意卡片,或点详情页右上角 ♥,即可加入「本日收藏夹」,带震动反馈与提示条
- 侧拉栏有独立入口,随时翻今天想做的菜
桌面小组件
- 4×3 尺寸,展示前 4 道收藏,点条目深链直达该菜谱
- 侧拉栏「把收藏夹放到桌面」,一键添加(Android 8.0+;低版本请长按桌面手动添加)
今日推荐
- 首页顶部每天随机推荐 3 道分类互不相同的菜,同日固定、隔天更换
- 与下方普通列表之间用一条横线 + 约两倍间距分隔,视觉上明确分区
直接装:下载本仓库内的 dist/cc-1.01-release.apk(9.9 MB,或 git clone 后在 dist/ 里取)。
- 手机下载 APK;
- 点击安装,若提示「禁止安装未知来源应用」,在系统设置里对本浏览器/文件管理器放行;
- 已校验:v1 + v2 签名、zipalign 通过、非 debuggable。
SHA-256:3DCCAEBA95A4A062D9EDF4363D537C0A4A03AC35E5EC76DEBDF47C351F6F8BBE
# 校验方式
sha256sum cc-1.01-release.apk- 菜谱内容并非原创。全部菜谱、原料、步骤、文案整理自开源项目 Anduin2017/HowToCook(程序员做饭指南),该项目以 The Unlicense 协议发布,属于公有领域,可自由使用、修改与分发。
- 本仓库是它的 Android 客户端:重新设计了界面与交互,重写了数据解析与缓存,补齐了收藏、桌面小组件、每日推荐等功能;未对原文进行实质性改写。
- 应用内「关于」弹窗同样标注了来源与 GitHub 地址,文本可复制,欢迎传播原项目。
- 菜谱如有错误或想新增菜品,请优先向上游仓库提 PR —— 本仓库的
assets/recipes.json由上游内容生成。
| 层 | 选型 |
|---|---|
| 语言 | Kotlin 1.9.25 |
| UI | Jetpack Compose + Material 2(Compose BOM 2024.09.00) |
| 构建 | AGP 8.7.0 / Gradle 8.9 / JDK 17 |
| 数据 | 单文件 JSON(assets/recipes.json)+ kotlinx.serialization 1.6.3 |
| 持久化 | SharedPreferences(收藏) |
| 组件 | AppWidgetProvider + RemoteViews(桌面小组件) |
| 适配 | minSdk 21 / targetSdk 34 |
没有任何网络请求,不申请联网权限,全部数据在包里。
.
├── app/
│ ├── build.gradle
│ └── src/main/
│ ├── AndroidManifest.xml
│ ├── assets/recipes.json # 373 道菜谱(约 667 KB)
│ ├── java/com/typeun/cc/
│ │ ├── MainActivity.kt # 入口 + 小组件深链
│ │ ├── data/ # 仓库层:JSON 解析缓存、收藏持久化
│ │ ├── model/Recipe.kt # 数据模型
│ │ ├── ui/ # 页面与组件(列表/详情/抽屉/弹窗/推荐)
│ │ └── widget/ # 桌面小组件与「一键添加」
│ └── res/ # 图标、主题、小组件布局
├── dist/cc-1.01-release.apk # 已签名安装包
├── docs/screenshots/ # 应用截图(README 引用)
├── LICENSE # MIT(代码部分)
├── build.gradle / settings.gradle
├── gradle.properties # 签名配置留空,需自备密钥
└── gradlew / gradlew.bat # Gradle Wrapper(已内置,无需联网下载)
环境:JDK 17 + Android SDK(compileSdk 34 / build-tools 34.0.0)。
# 1) 克隆
git clone https://github.com/Typeun/How-to-cook.git
cd How-to-cook
# 2) 配置 SDK 路径(或直接用 Android Studio 打开,自动生成 local.properties)
echo "sdk.dir=/path/to/Android/Sdk" > local.properties
# 3) 编译
./gradlew assembleDebug # 调试包,输出 app/build/outputs/apk/debug/
./gradlew assembleRelease # 正式包(需自备签名,见下)关于签名:仓库不包含签名密钥(.jks 已在 .gitignore 中排除)。要出可安装的 release 包,自行生成并填写:
keytool -genkeypair -v -keystore my-release.jks -alias mykey \
-keyalg RSA -keysize 2048 -validity 10950
./gradlew assembleRelease \
-PCCING_STORE_FILE=/绝对路径/my-release.jks \
-PCCING_STORE_PASSWORD=你的口令 \
-PCCING_KEY_ALIAS=mykey \
-PCCING_KEY_PASSWORD=你的口令
⚠️ Android 5.0 / 6.0 只认 v1(JAR)签名,构建脚本已强制开启enableV1Signing,不要关掉,否则老机型会报「解析软件包出现问题」。
com.typeun.cc 遵循 Android 的反写域名(reverse-DNS)约定:
| 段 | 含义 |
|---|---|
com |
顶级域名段,包名必备起点 |
typeun |
作者 GitHub 账号 |
cc |
CoderCooking 的缩写 |
全部小写书写,符合 Java/Kotlin 包名惯例,也避免在大小写敏感的文件系统(Linux CI、Git)上出现目录冲突。包名一经对外发布不可更改——那等于变成另一个 App,老用户无法覆盖升级。
- 桌面小组件「一键添加到桌面」依赖 Android 8.0+ 的
requestPinAppWidget,低版本会提示改为长按桌面添加。 - Android 8.0 起图标外轮廓由桌面启动器决定(原生桌面为圆形,MIUI 为圆角方形),应用无法强制指定;包内已同时提供圆形
roundIcon与自适应图标。 - 未开启 R8 代码压缩(
minifyEnabled false),优先保证运行稳定;proguard-rules.pro里已备好 serialization 与小组件 Provider 的 keep 规则,将来开启可直接用。 - 菜谱数据是快照,不会自动跟随上游更新;需要新菜谱时重新生成
recipes.json。
- 菜谱内容:Anduin2017/HowToCook 及全部贡献者
- 图标:自行绘制(橙色正圆 + 锅具几何造型)
本仓库的代码部分遵循 MIT License:可自由使用、修改、分发、商用,保留版权与许可声明即可。
app/src/main/assets/recipes.json 中的菜谱内容来自 HowToCook,遵循 The Unlicense(公有领域),不受上面的 MIT 条款约束。
简单说:代码随便拿去改,菜谱随便拿去用,两个都很宽松。
##此内容由AI生成##



