一个基于 React-Native
的 Bangumi 第三方客户端
Bangumi 是一个用于管理追番进度(不限于动漫、音乐、日剧、游戏、AVG),发现和讨论番组的网站
iOS 和安卓都做了兼容,并最大限度保持一致
目前已开发不少于 100 个页面,基于移动端重新设计布局,几乎涵盖网站所有页面
本人并没有原生开发经验,用于练手 React-Native,希望通过这个平台去学习更多
更多涉及到本项目的说明,可前往 语雀 查看
AltStore 侧载 | iOS 上当前能使用的方法 | Expo 主页
-
Google Play 被恶意举报已搁置
-
苹果 100 刀开发者账号已过期,期间没能过审,因为功能太多而且会涉及到社区、版权敏感等问题,而且最近还有备案条件,不可能再送审了
- 番组进度管理
- 条目、角色详情
- 时间线(用户动态)
- 超展开(帖吧)
- 时光机(个人中心)、用户空间
- 不限于搜索、排行榜、索引、目录、每日放送、年鉴、标签
- 其他站点同步到 bgm 功能(bilibili、豆瓣)
- 封面图片和大部分脱敏静态数据覆盖到自费 CDN 中间层,访问高速化(意思大概是网页版遇到很慢或者挂掉的情况客户端也能正常获取数据)
- 番剧、游戏截图预览
当季番剧精准到单集网络播放源、漫画源查询,找番剧、文库、游戏、音乐- 小圣杯(角色交易空气游戏,客户端独立设计 UI 和交互)
- [条目] 会自动搜索 VIB、MAL、AniDB 评分,并在评分栏中显示(非动画只会搜索 VIB)
- [搜索] 重写分析逻辑,修复经常出现的搜索结果不全的问题
- 部分长列表加载中文案显示分页信息
- [帖子] 处理了剧透楼层需要折叠的问题
- [进度] 大章节点格子的「看到」按钮增加二次确认
- [电波提醒] 优化了好友按钮的显示时机
- [进度] 修复了标记“看到”状态时不会标记当前集
- [搜索] 前往搜索用户会先判断用户 ID 是否存在
- [小圣杯] 允许模块设置为首页常驻项
- [小圣杯] 资产重组页面逻辑更新, 并新增精炼功能
- 若干更新,不详
基于 @storybook/react-native 生成的 iframe.html,尽量少入侵原项目的基础上,开发了一个完整的单页面流程(当然这样是不考虑性能问题的,不可能与正常开发的,例如使用 Next.js 的相提并论)
以下为 2023 年 10 月份截屏,通常 2-3 周更新一次版本,因还在高速迭代阶段,版本之间 UI 可能存在较大差别
使用 React-Native 开发一个 App,想做到流畅是需要下很大的功夫的,但不要说什么 RN 不行了,被放弃了不如 Flutter,写法没问题的话,一样流畅得很。其实跟开发 Web 应用没多大区别,但几年开发下来,关键影响到流畅度,无非就几个点:
- 图片不要渲染过大的(图片是所有里面最影响流畅性的)
- 尽量减少同时请求数、慢请求(包括图片的请求)
- 对不可见区域延迟渲染
- 多写函数式编程,多写异步逻辑,少用 this,少写循环
- 计算过的结果尽量缓存
详细
本人一直在 mac 环境下开发,iOS 使用 expo 客户端调试,安卓跑真机 usb 调试。
由于 4 年的迭代,不管是对于本项目,还是最初使用的 expo 来说,都已经大相径庭。iOS 目前只能跑在 expo 上,而安卓只能跑在 metro 上。
在 iOS 上想充分使用 expo 客户端简化调试流程,所以不会引入 expo 不支持的第三方库。而安卓上面想要最高的性能,所以后期已经从 expo 上面 eject 出来了,用上了很多第三方的性能优化库替代了原来的组件。
若你想在本地调试,不要在根目录安装包,而请先到 ./packages/[目标环境]/ 下使用 yarn 安装包,然后使用命令 yarn env [xxx] 来切换到目标开发环境,最后请参考这个时候根目录的 package.json 中的命令开发。通常预置的本地调试命令是 yarn dev。
遇到跑不起来,不要太过折腾,推荐在运行本项目之前,就应该使用官方提供的工作流预先把所有环境需要的库都安装好了。window 和 mac 的环境差异还是比较大的,可以查阅 Expo 官方文档。
详细
不要使用 taobao 源头,可能会在跑环境时提示不允许代理。
npm config set registry https://registry.npmjs.org
国内环境,首次下载包有可能会异常地慢。因用了很多旧的依赖包,里面的包版本依赖混乱,为了不出错请使用 yarn 安装。
git clone https://github.com/czy0729/Bangumi
cd ./Bangumi
yarn
详细
不能安装请尝试在命令前添加 sudo。
安卓系统请打开开发者调试模式,需要至少进行一次打开 Android Studio 的同时连接 usb 允许添加调试。
调试请保证给应用安装权限,允许悬浮窗权限。
遇到 spawnSync adb ENOENT,参考 stackoverflow。
第一次就遇到打包失败,看看是不是遇到 read timeout 等问题,表示需要科学上网。明明前一天还能打包成功,后一天就失败,也可能是依赖包无法获取的问题,因为 gradlew 依赖包只有 24 小时的缓存时间,尝试使用 --offline 命令。
详细
已在 mac M1 上调试成功,最近购入了 M1,尝试实用新环境,iOS expo 运行一路顺风,但是打包 apk 遇到很多问题,总结如下:
-
一定要使用正确的 JAVA jdk,不是 jre!
-
打包前一定要安装 watchman,不然会遇到监听文件过多错误
-
打包遇到失败,请进入 android 目录下执行
./gradlew clean
后再重新打包 -
打包失败,看见错误提示上面有 node_modules 包的名字,请尝试把这个包下载补全
-
若出现各种无法预料的问题,请一定要尝试重启机器
-
本项目所有数据信息均来自各种网站,不提供任何形式的媒体下载、直接播放和修改功能
-
本项目承诺不保存任何第三方用户信息
-
本项目代码仅供学习交流,不得用于商业用途,若侵权请联系
[Bangumi-OnAir] ekibun 的单集播放数据源
[bangumi-mosaic-tile] weizhenye 的用户统计瓷砖库
[bangumi-data] 番组数据索引
[bangumi-api] 官方接口
开发迭代不易,觉得客户端好用的,有能力的可以投喂一下,也可以给个星星