bv

2025-09-03

android

我只是个戏子,在别人的故事里,流着自己的泪。——席慕蓉

https://github.com/aaa1115910/bv

在开源圈和B站极客玩家之间,BV这个第三方B站客户端绝对是一个让人会心一笑的存在。BV的全称Bug Video,是aaa1115910在GitHub上开源的一个Android平台Bilibili客户端。它的气质完全不同于那些追求美观、流畅和商业化的主流App。你一打开项目主页,扑面而来的自黑气息就让人忍俊不禁:特色写的是“丰富多样的Bug”“反人类设计”“卡卡卡卡卡”“异样审美”“巨难用”,还有一句“都是随心乱写的代码,能跑就行”,让人一下子放下了对“完美”的期待,带着轻松和好奇去探索这个技术乐园。

BV专为Android手机和平板、Android TV适配,采用了Jetpack Compose进行UI开发。这意味着你不仅能在小屏幕上体验B站,也能在电视大屏用遥控器“反人类”地操作B站内容。BV自嘲Bug多、难用,但它其实实现了B站相当完整的主流功能:视频浏览、分区筛选、动态、UP主内容、弹幕评论、播放历史等等,UI风格极富实验性,动画和交互逻辑也充满探索精神。比如,主页底部导航栏的实现,BV可能就会用如下随性又极简的写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Composable
fun MainBottomNav(selected: Int, onSelect: (Int) -> Unit) {
BottomNavigation {
listOf("首页", "分区", "动态", "我的").forEachIndexed { index, title ->
BottomNavigationItem(
icon = { Icon(Icons.Default.Home, null) },
label = { Text(title) },
selected = selected == index,
onClick = { onSelect(index) }
)
}
}
}

这种写法不拘小节,切换逻辑直观,完全是极客快写的风格,方便你快速加新Tab或做自定义扩展。BV鼓励大家随性开发,哪怕是“乱写”,只要能跑就行。

BV的安装也异常简单,无论是Release正式版还是Alpha测试版,都能在GitHub Release页面一键下载apk,装到你的Android设备上就能用。Release版相对稳定,适合大众用户;Alpha版则是最新测试功能,适合喜欢尝鲜的技术玩家。项目明确声明,BV无法在中国大陆地区的智能电视上使用,有需求的请选官方“云视听小电视”,而且禁止在中国境内传播和分发,务必遵守相关规定。

BV采用Kotlin语言开发,紧跟Android现代开发潮流,整个项目以Jetpack Compose为基础,代码结构随意但极富探索性。你可以把BV当作Compose实战代码样本,比如视频列表界面,BV可能会这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Composable
fun VideoList(videos: List<VideoItem>) {
LazyColumn {
items(videos) { video ->
Card(modifier = Modifier.padding(8.dp)) {
Column(modifier = Modifier.fillMaxWidth().clickable { /* 跳转详情 */ }) {
Image(painter = rememberImagePainter(video.coverUrl), contentDescription = null)
Text(video.title, style = MaterialTheme.typography.h6)
Text("UP主: ${video.uploader}", style = MaterialTheme.typography.body2)
}
}
}
}
}

声明式风格,清爽直接,充分体现了Compose的优势。拉B站API的列表数据,几行代码就能实现漂亮的主界面。

弹幕输入是B站体验的灵魂之一,BV也用Compose写得极为简洁。比如你看到的弹幕输入框,实际代码大致如此:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Composable
fun DanmakuInput(onSend: (String) -> Unit) {
var text by remember { mutableStateOf("") }
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(8.dp)
) {
TextField(
value = text,
onValueChange = { text = it },
modifier = Modifier.weight(1f),
placeholder = { Text("输入弹幕...") }
)
Button(
onClick = { onSend(text); text = "" },
modifier = Modifier.padding(start = 8.dp)
) {
Text("发送")
}
}
}

这样的代码不仅易读易扩展,还能灵活集成到任何页面中,实现响应式弹幕交互。极客玩家可以直接fork项目,随意定制弹幕样式和行为。

BV的开发流程也很现代化,集成了CI/CD自动构建,支持Release/Alpha自动发布,Issue和PR管理活跃。虽然项目自称“Bug多”“难用”,但实际上为技术玩家和极客提供了无限折腾的空间。你可以参与issue讨论,提交PR,甚至fork一份做自己的定制版,无论是修Bug还是加新功能都很自在。BV是MIT开源协议,意味着你可以自由下载、修改、分发,无论是自用还是二次开发都没有限制。

典型用户场景是:如果你厌倦了官方客户端的广告、臃肿和各种限制,想要一个自由、纯粹的B站体验;又或者你喜欢挑战Bug、体验反人类设计,或者希望学习最新Android技术,那么BV绝对值得一试。它不是那种“推荐所有人”的主流应用,但却是开源社区最有个性、最有乐趣的小众精品。你可以用它娱乐,也可以用它学习,更可以用它参与开源,享受技术和DIY的乐趣。

BV的存在,某种意义上代表了极客精神和开源文化。开发者敢于自嘲,敢于把“缺点”放在最前面,却依然吸引了大量关注和参与。这种坦率和实验精神,在如今普遍追求“完美”与“商业化”的软件世界中显得尤为可贵。BV是一个不断进化的项目,每个用户都可以参与其中,让它变得更好或者更有趣。你可以在GitHub issue区提建议、报Bug,也可以直接提交代码,参与到项目的持续改进。项目采用MIT协议,真正做到了“属于每个人”的开源精神。

社区方面,BV虽然自称“Bug多”,但用户和开发者的互动却很活跃。无论是功能建议、Bug反馈,还是技术交流,都可以通过GitHub进行。开发者鼓励大家自由发挥,哪怕是“乱写代码”,只要能跑就行。这种自由和包容,为技术爱好者和极客玩家提供了极大的空间。你可以在BV的代码里学习Jetpack Compose的实际应用,也可以在社区里结识更多志同道合的伙伴。

总的来说,BV是一款极具个性和技术探索意义的第三方B站客户端。它用自黑和幽默吸引了无数技术玩家,用自由和开源让每个人都能参与其中。无论你是B站资深粉丝、Android开发者,还是开源极客,都应该试试BV,感受一下什么叫“Bug Video”的另类魅力。记得遵守法律法规,合理使用BV,让技术和开源的乐趣真正属于每一个热爱它的人。BV不是完美的应用,但它是最真实、最自由、最有趣的技术乐园。快来GitHub下载试用,参与开发,让BV成为你心目中最酷的B站客户端吧!