ZhishengWeather README

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

枳生天气 · ZHISHENG WEATHER TERMINAL

枳生天气应用图标
打开就是天气。
一款信息密度较高的 Android 天气应用,采用磷光终端风格。没有广告、账号和统计 SDK。

下载公共版 APK

GitHub stars Android 8.0+ 当前版本 0.1.3 无广告、账号和埋点 MIT License

简体中文 · 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,扫下面的码就能加。

枳生天气用户交流群二维码

赞赏

枳生天气会一直免费,也永远不会加广告。我做这个是因为爱好,也喜欢和大家交流。哪里不准、哪句看着别扭、下次想加什么,直接跟我说就行。

如果有意愿支持一下,扫下面的赞赏码就好。备注一下你想出现的名字,所有赞助人都会进赞助榜单。

微信赞赏码
愿你出门遇晴,代码一次通过,日子风调雨顺。

安装

  1. 从 Releases 下载最新公共版 APK。
  2. 安装到 Android 8.0 或更高版本的设备。
  3. 首次打开默认显示北京,可通过搜索保存自己的城市。

APK 只在 GitHub 发布。Android 可能提示允许当前应用安装未知来源文件,这是安装渠道提示,不是枳生天气申请了额外系统权限。

0.1.5-beta3 更新

0.1.3 更新

0.1.1 更新

0.1.1 是基于 0.1.0 的问题修复版本。

0.1.0 更新

0.1.0 是一次覆盖主屏交互、天气效果、数据源和桌面小组件的大更新。

多城市与主页

天气效果与界面

数据与显示

桌面小组件与社区

本版本仍未加入通知功能。

0.0.8 更新

本次更新主要修复天气显示不一致的问题。

  1. 修复降雨时主界面仍提示「不会下雨」的问题
  2. 修复逐时预报将下一小时误标为「现在」的问题
  3. 优化短时降水状态,雨停后不再显示「正在下雨」
  4. 优化逐日天气展示:白天与夜间天气不同时,按更显著的天气显示,展开可查看如「晴转雷阵雨」
  5. 修复阴天被显示为小雨的问题

本版本暂未加入通知功能。

0.0.6 更新

打开就能看懂接下来两小时:大温度下面加一句话(何时下雨、预警、明天冷不冷);降水卡直接写清几点下;公共版小米源补上逐分钟降水柱;点某一天可展开看出日落和月相。顺手关掉 MIUI 强制深色反转,浅色启动不再闪黑。

当前回归检查见单元测试与构建。通知功能本版不做。

0.0.5 更新

0.0.5 的重头戏是主题。深色之外新增了浅色「清冷翡翠」——冷灰纸面打底、翡冷翠做数据色,桌面小组件跟着一起换;顺手修了两个藏得比较深的毛病。

当前回归检查包括 46 项单元测试、Android Lint、Debug / 公共版 / 满血版构建。

0.0.5.1 更新

小组件小修:放大日期、更新时间、体感湿度与逐时/逐日等偏小字号;重绘添加小组件时的预览图(示范城市改为上海,与真实布局一致);小组件主题改为只跟随系统深浅,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。

已知限制

更新记录

0.1.3 // STABLE RELEASE
  • 新增横屏气象时钟、街道级定位、遥测与生活指数自选,以及更明显的夜间氛围
  • 自动优选以小米天气为主,修复和风、彩云、逐时逐日与短时降水的多项数据问题
  • 重做透明玻璃小组件,统一边框、字号、对齐、�

ZhishengWeather (zhishengplus/ZhishengWeather)

Searching Database…

这是什么?ZhishengWeather 是一款用 Kotlin 和 Jetpack Compose 编写的 Android 天气应用,外观仿照老式荧光终端显示屏。它把和风天气、小米公开天气 API 和 Open-Meteo 的数据融合成同一条信息流,无广告、无需登录、没有任何统计 SDK。
使用它之前我需要注册 API 密钥吗?不需要。公开版本通过结合小米公开天气数据和 Open-Meteo 的免密钥管线开箱即用。如果你想要和风天气或彩云天气的额外功能,可以在应用的“实验室”里添加自己的凭据,且它们只保存在设备上。
官方天气预警和预报总是完整的吗?公开版本不附带和风天气凭据,因此除非你添加自己的密钥,官方预警和生活指数取决于账号权限;Open-Meteo 的降水临近预报只有 15 分钟分辨率,而不是逐分钟的;而且不同来源的重复预警仍可能出现,因为去重只按标题进行。
我的数据和位置信息会怎么处理?这款应用没有广告 SDK、没有分析追踪、没有账号系统或后端服务器;你的城市列表和设置保留在设备上,而且只有在你主动开启并请求时才会查询位置。
它支持哪些桌面小部件尺寸?五种终端风格的小部件:4x1、2x2、4x2、2x4 和 4x4。更大的尺寸会增加逐小时趋势和生活指数信息,所有小部件都使用分层的半透明玻璃外壳,让你的壁纸透出来。
我能选择哪个天气数据源为应用供数吗?可以,设置里可以自动挑选最佳数据源,或固定某一个特定来源(和风天气、彩云天气、小米或 Open-Meteo),界面会显示当前城市的数据实际来自哪个源。自动模式默认用小米提供实况天气,只从 Open-Meteo 补齐缺失部分。
它能追踪台风吗?可以,它从浙江省水利厅拉取官方台风路径数据,展示实时位置、中心强度、风圈半径和多家机构的预报,并清晰标注缓存的新鲜度。
我能更换应用图标或配色主题吗?可以,你可以在默认的天气女郎吉祥物图标和经典的太阳/云/雨图标之间切换,并选择深色、浅色或跟随系统主题;小部件背景也有透明、磨砂玻璃和不透明等选项。
Size
29.4 MB
Stars
233
Age
1mo
Commits · 90 Days