The project's README from github.com/zhishengplus/ZhishengWeather. As one markdown file: README.md.

![]()
打开就是天气。
一款信息密度较高的 Android 天气应用,采用磷光终端风格。没有广告、账号和统计 SDK。
简体中文 · English
![]() |
![]() |
![]() |
![]() |
![]() |
| 主页 | 遥测与空气 | 城市 | 搜索 | 设置 |
点击截图查看原图。
我平时打开天气 App,只想尽快确认几件事:现在多少度,什么时候下雨,空气怎么样,明后天会不会突然降温。枳生天气把这些内容放在同一条纵向信息流里,不需要先看开屏广告,也不用登录账号。
界面走的是磷光终端风:黑色背景、细线分区、青色主信号和少量橙色提示。信息排得比较紧,但主次是固定的。实况、预警、逐时和短时降水在前,空气质量、生活指数、月相等内容继续往下滑就能看到。
每种天气各有一套背景氛围效果,画在读数之下,强度可调,也可以完全关闭。温度、风速和气压单位分别设置;不用的页面模块可以单独隐藏。
数据源没有提供的字段会留空,不用估算值补齐。
GitHub Releases 只发布正式公共版 APK,这也是普通用户唯一需要下载的版本。它默认使用免配置的公共数据链路;需要和风或彩云额外内容时,可在应用的实验室中填写自己的凭据,凭据只保存在本机。
仓库中的 release、performance 和 previewPublic 是维护者本地开发、真机覆盖和并行验收使用的构建类型,不作为社区安装包发布。应用内直接更新也只面向正式公共版,确保后续版本可以保持同包名、同签名覆盖安装。
项目接入了和风天气、彩云天气、小米公开天气接口、Open-Meteo,以及独立的浙江省水利厅台风路径公开资料。设置页可以选择自动优选,也可以固定使用某个天气数据源,并会显示当前城市实际返回数据的来源。
| 数据源 | 配置 | 主要内容 |
|---|---|---|
| 和风天气 | 实验室接入,或构建期写入 local.properties |
实况、预警、逐时逐日、分钟降水、空气质量、生活指数 |
| 彩云天气 | 实验室填写 Token | 实况、逐时逐日、分钟降水、空气质量、预警 |
| 小米公开天气接口 | 不需要 | 国内天气、城市搜索、昨日天气和台风辅助数据;手动选择时不混入其他来源 |
| Open-Meteo | 不需要 | 全球实况、逐时逐日、空气质量、15 分钟降水和缺项补充 |
| 浙江省水利厅台风路径系统 | 不需要 | 西北太平洋台风实况路径、中心强度、风圈与多机构预报 |
自动优选以小米天气为主:实况天气现象和降水判断以小米返回为准,Open-Meteo 只补充小米没有返回的遥测、逐时或逐日内容;仅当小米整次请求失败时才切换到 Open-Meteo。和风与彩云不进入自动链,只在开发者模式锁定后使用。
月相在本机按城市日期计算。数据源没有月出、月落时,应用会根据日期和城市坐标补算,不再发起额外请求。
和风接口使用 Ed25519 签名 JWT,也可填 API KEY。assemblePublicRelease 和 assemblePreviewPublic 会在构建阶段强制清空编译期凭据;用户在实验室填写的凭据只存在本机,不进备份、不进公共 APK。
0.1.3 默认使用天气娘头像:发卡保留太阳、云和降水组成的经典标识,深色底板、青色信号和橙色提示继续沿用终端界面的视觉语言。喜欢原版图标时,可在「设置 → 界面 → 应用图标」切回经典样式。
![]()
应用内还有 15 枚天气图标,覆盖晴、多云、阴、雾、雨、雷暴、雪、风和霰等状态。它们单独绘制,没有从通用图标库拼接。
想一起聊聊天气、提个想法,或者报个问题,都可以进枳生天气用户交流群。群号是 1106284779,扫下面的码就能加。
枳生天气会一直免费,也永远不会加广告。我做这个是因为爱好,也喜欢和大家交流。哪里不准、哪句看着别扭、下次想加什么,直接跟我说就行。
如果有意愿支持一下,扫下面的赞赏码就好。备注一下你想出现的名字,所有赞助人都会进赞助榜单。
愿你出门遇晴,代码一次通过,日子风调雨顺。
APK 只在 GitHub 发布。Android 可能提示允许当前应用安装未知来源文件,这是安装渠道提示,不是枳生天气申请了额外系统权限。
0.1.1 是基于 0.1.0 的问题修复版本。
0.1.0 是一次覆盖主屏交互、天气效果、数据源和桌面小组件的大更新。
本版本仍未加入通知功能。
本次更新主要修复天气显示不一致的问题。
本版本暂未加入通知功能。
打开就能看懂接下来两小时:大温度下面加一句话(何时下雨、预警、明天冷不冷);降水卡直接写清几点下;公共版小米源补上逐分钟降水柱;点某一天可展开看出日落和月相。顺手关掉 MIUI 强制深色反转,浅色启动不再闪黑。
当前回归检查见单元测试与构建。通知功能本版不做。
0.0.5 的重头戏是主题。深色之外新增了浅色「清冷翡翠」——冷灰纸面打底、翡冷翠做数据色,桌面小组件跟着一起换;顺手修了两个藏得比较深的毛病。
当前回归检查包括 46 项单元测试、Android Lint、Debug / 公共版 / 满血版构建。
小组件小修:放大日期、更新时间、体感湿度与逐时/逐日等偏小字号;重绘添加小组件时的预览图(示范城市改为上海,与真实布局一致);小组件主题改为只跟随系统深浅,App 内切换主题不再改变桌面小组件。
可以通过 GitHub Issues 报告可复现的问题。提问时请附上应用版本、手机型号、系统版本、数据源和必要截图,注意遮住 Token、API KEY 等个人凭据。
社区贡献者:PPQ1028、Uinuan1、KZzzzo、睡觉了寂、微生之最、r1file、vsqesy3721、茉莉羽、陈大橙、飞667、一杯冰美式、、、M1ralce、紅星照耀中國、我爱跑步、河鱼天雁、你的心里没点高数吗、周月星斗、无敌战神暴王龙、control3、明珠有泪、Gstar_、伍拾两HZ、寡欲老公猪。
需要 JDK 17 和 Android SDK 34。仓库包含 Gradle Wrapper。
git clone https://github.com/zhishengplus/ZhishengWeather.git
cd ZhishengWeather
不填写凭据时,构建结果使用公共版数据链路。需要和风主源时,在根目录 local.properties 中写入 SDK 路径和个人凭据;该文件已被 Git 忽略。
sdk.dir=<Android SDK 路径>
qw.host=<API Host>
qw.project_id=<Project ID>
qw.kid=<Key ID>
qw.private_key=<Ed25519 私钥,单行>
./gradlew assembleDebug # Windows:.\gradlew.bat assembleDebug
./gradlew assembleRelease # 维护者本地构建,需配置自己的签名文件
./gradlew assemblePublicRelease # 公共版,强制清空凭据并使用随库公开证书
./gradlew assemblePreviewPublic # 维护者本地并行验收包,不上传 Release
./scripts/package_release.ps1 # 生成 GitHub 公共版 APK 及 SHA-256
./scripts/package_release.ps1 -IncludeDevelopmentBuilds # 另打包本地开发构建
随库的 keystore/public.jks 只用于保持公共版之间可以覆盖安装,不是私有签名身份。
主要技术栈:Kotlin 2.0.21、Jetpack Compose、Material 3、ViewModel / StateFlow、Retrofit、OkHttp、kotlinx-serialization、DataStore 和 BouncyCastle。minSdk 26,targetSdk 34。代码结构与提交约定见 CONTRIBUTING.md。
应用使用网络、安装更新和可选位置权限:
| 权限 | 用途 |
|---|---|
| 网络访问 | 请求天气和城市搜索数据 |
| 网络状态 | 判断设备是否联网 |
| 安装应用 | 仅在正式公共版中手动下载更新后打开系统安装页;不会静默安装 |
| 粗略位置 | 可选;仅在开启定位并主动重新定位时申请 |
| 精确位置 | 可选;只有主动开启街道级定位时才申请 |
应用没有广告 SDK、统计埋点、账号系统或自建后端。城市列表和设置保存在本机。天气请求会把所选城市坐标发送给当前数据源;使用定位时,坐标还用于反查城市名。
定位开启并授权后,应用回到前台会按间隔复核所在城市,不在后台持续获取位置。相关代码位于 app/src/main/kotlin/com/zhisheng/weather/data。