
Logo来自[哔哩哔哩漫游娘](https://www.weibo.com/p/230418139a6f1100102vlj6)
[](https://github.com/yujincheng08/BiliRoaming/actions)
[](https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&inviteCode=NVoD5&from=246610&biz=ka)
[](https://t.me/biliroaming)
[](https://github.com/yujincheng08/BiliRoaming/releases/latest)
[](https://github.com/yujincheng08/BiliRoaming)
# 哔哩漫游
解除B站客户端番剧区域限制的Xposed模块,并且提供其他小功能
# BiliRoaming
An Xposed module that unblocks bangumi area limit of BILIBILI, and miscellaneous features
# 支持以下功能
- 解除B站番剧区域限制
- 港澳台CDN加速
- 缓存番剧
- 支持国际版和概念版
- 自定义主题色
- 关闭青少年模式弹窗
- 显示评论区楼层
- ~概念版添加直播入口~
- 不以小程序形式分享
- 自动点赞视频
- 把我的页面移到侧边栏
- ~替换音乐状态栏为原生样式~
- 提取视频、直播封面
- 自定义屏启动图
# Features
- Unlock bangumi area limit
- CDN speedup
- Download bangumi
- Support International ver and blue ver
- Customize theme
- Close teenager dialog
- Show comment floor
- ~Add live entry to blue ver~
- Share without mini programs
- Like videos automatically
- Move 'Mine page' to sidebar drawer
- ~Change music notification style to Primitive~
- Extra covers from videos and live rooms
- Customized splash images
# download/下载
https://github.com/yujincheng08/BiliRoaming/releases/latest
https://modules.lsposed.org/module/me.iacn.biliroaming
# 使用方法
https://github.com/yujincheng08/BiliRoaming/wiki#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95
# 特别鸣谢
- [原作者](https://github.com/iAcn/BiliRoaming)
- [BiliPlus](https://www.biliplus.com/)
- [Kghost](https://github.com/kghost/bilibili-area-limit)
### 交流
Telegram: [@biliroaming](https://t.me/biliroaming)
### License
[GNU General Public License, version 3](LICENSE)
### 本项目 CDN 加速及安全防护由 Tencent EdgeOne 赞助
[亚洲最佳CDN、边缘和安全解决方案 - Tencent EdgeOne](https://edgeone.ai/zh?from=github)

================================================
FILE: app/.gitignore
================================================
/build
/release
/.cxx
================================================
FILE: app/build.gradle.kts
================================================
import com.google.protobuf.gradle.*
plugins {
alias(libs.plugins.agp.app)
alias(libs.plugins.kotlin)
alias(libs.plugins.protobuf)
alias(libs.plugins.lsplugin.resopt)
alias(libs.plugins.lsplugin.jgit)
alias(libs.plugins.lsplugin.apksign)
alias(libs.plugins.lsplugin.apktransform)
alias(libs.plugins.lsplugin.cmaker)
}
val appVerCode = jgit.repo()?.commitCount("refs/remotes/origin/master") ?: 0
val appVerName: String by rootProject
apksign {
storeFileProperty = "releaseStoreFile"
storePasswordProperty = "releaseStorePassword"
keyAliasProperty = "releaseKeyAlias"
keyPasswordProperty = "releaseKeyPassword"
}
apktransform {
copy {
when (it.buildType) {
"release" -> file("${it.name}/BiliRoaming_${appVerName}.apk")
else -> null
}
}
}
cmaker {
default {
targets("biliroaming")
abiFilters("armeabi-v7a", "arm64-v8a", "x86")
arguments += arrayOf(
"-DANDROID_STL=none",
"-DCMAKE_CXX_STANDARD=23",
"-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON",
)
cFlags += "-flto"
cppFlags += "-flto"
}
buildTypes {
arguments += "-DDEBUG_SYMBOLS_PATH=${layout.buildDirectory.file("symbols/${it.name}").get().asFile.absolutePath}"
}
}
android {
namespace = "me.iacn.biliroaming"
compileSdk = 35
buildToolsVersion = "35.0.0"
ndkVersion = "29.0.14206865"
buildFeatures {
prefab = true
buildConfig = true
}
defaultConfig {
applicationId = "me.iacn.biliroaming"
minSdk = 24
targetSdk = 35 // Target Android U
versionCode = appVerCode
versionName = appVerName
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles("proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility(JavaVersion.VERSION_11)
targetCompatibility(JavaVersion.VERSION_11)
}
kotlinOptions {
jvmTarget = "11"
freeCompilerArgs = listOf(
"-Xno-param-assertions",
"-Xno-call-assertions",
"-Xno-receiver-assertions",
"-language-version=2.0",
)
}
sourceSets {
named("main") {
proto {
srcDir("src/main/proto")
include("**/*.proto")
}
}
}
packaging {
resources {
excludes += "**"
}
}
lint {
checkReleaseBuilds = false
}
dependenciesInfo {
includeInApk = false
}
androidResources {
additionalParameters += arrayOf("--allow-reserved-package-id", "--package-id", "0x23")
}
externalNativeBuild {
cmake {
path("src/main/jni/CMakeLists.txt")
version = "4.1.0+"
}
}
}
protobuf {
protoc {
artifact = libs.protobuf.protoc.get().toString()
}
generateProtoTasks {
all().forEach { task ->
task.builtins {
id("java") {
option("lite")
}
id("kotlin") {
option("lite")
}
}
}
}
}
configurations.all {
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk7")
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
}
dependencies {
compileOnly(libs.xposed)
implementation(libs.protobuf.kotlin)
implementation(libs.protobuf.java)
compileOnly(libs.protobuf.protoc)
implementation(libs.kotlin.stdlib)
implementation(libs.kotlin.coroutines.android)
implementation(libs.kotlin.coroutines.jdk)
implementation(libs.androidx.documentfile)
implementation(libs.cxx)
}
val adbExecutable: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath
val restartBiliBili = task("restartBiliBili").apply {
doLast {
exec {
commandLine(adbExecutable, "shell", "am", "force-stop", "tv.danmaku.bili")
}
exec {
commandLine(
adbExecutable,
"shell",
"am",
"start",
"$(pm resolve-activity --components tv.danmaku.bili)"
)
}
}
}
afterEvaluate {
tasks.getByPath("installDebug").finalizedBy(restartBiliBili)
}
================================================
FILE: app/proguard-rules.pro
================================================
-repackageclasses "biliroaming"
-keep class me.iacn.biliroaming.XposedInit {