├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── bug-issue.yml
│ ├── config.yml
│ └── feature-issue.yml
├── dependabot.yml
└── workflows
│ ├── CI.yml
│ ├── pr.yml
│ └── update-gradle-wrapper.yml
├── .gitignore
├── .gitmodules
├── .idea
└── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── LICENSE
├── README.md
├── assets
└── images
│ ├── Screenshot_1.png
│ ├── Screenshot_2.png
│ ├── Screenshot_3.png
│ ├── Screenshot_4.png
│ ├── Screenshot_5.png
│ ├── Screenshot_6.png
│ ├── Screenshot_7.png
│ ├── Screenshot_8.png
│ └── Screenshot_9.png
├── build-logic
├── .gitignore
├── build.gradle.kts
├── settings.gradle.kts
└── src
│ └── main
│ └── kotlin
│ ├── BuildLogic.kt
│ ├── Projects.kt
│ └── Versions.kt
├── build.gradle.kts
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── integrations
├── app
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── proguard-rules-dev.pro
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── app
│ │ │ └── revanced
│ │ │ └── bilibili
│ │ │ ├── account
│ │ │ ├── Accounts.kt
│ │ │ └── model
│ │ │ │ ├── AccessToken.kt
│ │ │ │ ├── Account.kt
│ │ │ │ ├── AccountInfo.kt
│ │ │ │ ├── BlacklistInfo.kt
│ │ │ │ ├── CookieInfo.kt
│ │ │ │ └── VipUserInfo.kt
│ │ │ ├── api
│ │ │ ├── BiliRoamingApi.kt
│ │ │ ├── BrotliInputStream.java
│ │ │ ├── MossResponseHandlerProxy.java
│ │ │ ├── MossResponseOnError.java
│ │ │ └── MossResponseOnNext.java
│ │ │ ├── content
│ │ │ └── BiliDocumentsProvider.kt
│ │ │ ├── http
│ │ │ └── HttpClient.kt
│ │ │ ├── meta
│ │ │ ├── BottomItem.java
│ │ │ ├── Client.kt
│ │ │ ├── HookFlags.java
│ │ │ ├── Season.kt
│ │ │ ├── VideoHistory.kt
│ │ │ ├── VideoInfo.kt
│ │ │ └── pegasus
│ │ │ │ └── BannersItem.java
│ │ │ ├── model
│ │ │ ├── AIConclusion.kt
│ │ │ ├── BiliApiResponse.kt
│ │ │ ├── CouponInfo.kt
│ │ │ ├── DownloadEntry.kt
│ │ │ └── serializer
│ │ │ │ ├── DateSerializer.kt
│ │ │ │ └── IntAsBooleanSerializer.kt
│ │ │ ├── patches
│ │ │ ├── AutoLikePatch.java
│ │ │ ├── BLRoutePatch.kt
│ │ │ ├── CacheRedirectPatch.kt
│ │ │ ├── CommentImagePatch.kt
│ │ │ ├── CommentReplyUrlPatch.java
│ │ │ ├── ConfigPatch.kt
│ │ │ ├── CopyEnhancePatch.kt
│ │ │ ├── CrashHandlerPatch.kt
│ │ │ ├── CustomThemePatch.kt
│ │ │ ├── DarkSwitchPatch.kt
│ │ │ ├── DpiPatch.java
│ │ │ ├── ForceCommentNavigablePatch.kt
│ │ │ ├── HwCodecPatch.kt
│ │ │ ├── LiveRoomPatch.java
│ │ │ ├── MusicNotificationPatch.kt
│ │ │ ├── NotificationPatch.kt
│ │ │ ├── NumberFormatPatch.kt
│ │ │ ├── PlayUrlPatch.kt
│ │ │ ├── PlaybackSpeedPatch.kt
│ │ │ ├── PlayerGestureDetectorPatch.kt
│ │ │ ├── PlayerPatch.kt
│ │ │ ├── PlayerToastPatch.kt
│ │ │ ├── RemoveVipSectionPatch.kt
│ │ │ ├── SettingsTransfer.kt
│ │ │ ├── SplashPatch.kt
│ │ │ ├── SubtitleImportSavePatch.kt
│ │ │ ├── SubtitlePatch.java
│ │ │ ├── TextFoldPatch.java
│ │ │ ├── TrialQualityPatch.java
│ │ │ ├── VideoQualityPatch.java
│ │ │ ├── drawer
│ │ │ │ ├── DrawerLayoutEx.java
│ │ │ │ └── DrawerPatch.java
│ │ │ ├── json
│ │ │ │ ├── JSONPatch.java
│ │ │ │ └── PegasusPatch.java
│ │ │ ├── main
│ │ │ │ ├── ApplicationDelegate.java
│ │ │ │ ├── CouponAutoReceiver.kt
│ │ │ │ ├── MainActivityDelegate.kt
│ │ │ │ ├── Player.kt
│ │ │ │ └── VideoInfoHolder.kt
│ │ │ ├── okhttp
│ │ │ │ ├── ApiHook.kt
│ │ │ │ ├── BangumiSeasonHook.kt
│ │ │ │ ├── BaseFakeClientGrpcHook.kt
│ │ │ │ ├── BaseFakeClientRestHook.kt
│ │ │ │ ├── OkHttpPatch.kt
│ │ │ │ └── hooks
│ │ │ │ │ ├── BangumiCards.kt
│ │ │ │ │ ├── BangumiMaterial.kt
│ │ │ │ │ ├── DisableAvif.kt
│ │ │ │ │ ├── DmAd.kt
│ │ │ │ │ ├── DmQoeShow.kt
│ │ │ │ │ ├── Eps.kt
│ │ │ │ │ ├── FeedIndex.kt
│ │ │ │ │ ├── GarbSuitDetail.kt
│ │ │ │ │ ├── GrpcPlayViewUnite.kt
│ │ │ │ │ ├── GrpcUnlockAreaLimitForPlay.kt
│ │ │ │ │ ├── HistoryReport.kt
│ │ │ │ │ ├── Media.kt
│ │ │ │ │ ├── ReplyAdd.kt
│ │ │ │ │ ├── RoomPlayInfo.kt
│ │ │ │ │ ├── SearchAll.kt
│ │ │ │ │ ├── SearchByType.kt
│ │ │ │ │ ├── SearchDefaultWords.kt
│ │ │ │ │ ├── SearchRecommend.kt
│ │ │ │ │ ├── SearchSquare.kt
│ │ │ │ │ ├── Season.kt
│ │ │ │ │ ├── SeasonRecommend.kt
│ │ │ │ │ ├── ShareChannels.kt
│ │ │ │ │ ├── ShareClick.kt
│ │ │ │ │ ├── Skin.kt
│ │ │ │ │ ├── Space.kt
│ │ │ │ │ ├── Subtitle.kt
│ │ │ │ │ ├── UnlockEpisodesForPlay.kt
│ │ │ │ │ ├── Upgrade.kt
│ │ │ │ │ ├── ViewLikeTriple.kt
│ │ │ │ │ ├── VipAds.kt
│ │ │ │ │ └── VipPrivilegeInfo.kt
│ │ │ ├── protobuf
│ │ │ │ ├── BangumiPlayUrlHook.kt
│ │ │ │ ├── MossHook.kt
│ │ │ │ ├── MossPatch.kt
│ │ │ │ ├── ViewUniteReplyHook.kt
│ │ │ │ └── hooks
│ │ │ │ │ ├── DistributionUserPreference.kt
│ │ │ │ │ ├── DmSegMobile.kt
│ │ │ │ │ ├── DmView.kt
│ │ │ │ │ ├── DynAll.kt
│ │ │ │ │ ├── DynListBase.kt
│ │ │ │ │ ├── DynRed.kt
│ │ │ │ │ ├── DynTab.kt
│ │ │ │ │ ├── DynVideo.kt
│ │ │ │ │ ├── HomeRecent.kt
│ │ │ │ │ ├── ListFavoriteTab.kt
│ │ │ │ │ ├── ListenPlayHistory.kt
│ │ │ │ │ ├── ListenPlayURL.kt
│ │ │ │ │ ├── ListenPlaylist.kt
│ │ │ │ │ ├── ListenPlaylistBase.kt
│ │ │ │ │ ├── ListenRcmdPlaylist.kt
│ │ │ │ │ ├── ModuleList.kt
│ │ │ │ │ ├── PlayHalfChannels.kt
│ │ │ │ │ ├── PlayURLPlayConf.kt
│ │ │ │ │ ├── PlayURLPlayConfEdit.kt
│ │ │ │ │ ├── PlayURLPlayViewPGC.kt
│ │ │ │ │ ├── PlayURLPlayViewUGC.kt
│ │ │ │ │ ├── PlayURLPlayViewUnite.kt
│ │ │ │ │ ├── Popular.kt
│ │ │ │ │ ├── ReplyDetailList.kt
│ │ │ │ │ ├── ReplyListBase.kt
│ │ │ │ │ ├── ReplyMainList.kt
│ │ │ │ │ ├── ReplyShareReplyMaterial.kt
│ │ │ │ │ ├── ReplySubjectDescription.kt
│ │ │ │ │ ├── ResourceTopActivity.kt
│ │ │ │ │ ├── SearchAll.kt
│ │ │ │ │ ├── SearchByType.kt
│ │ │ │ │ ├── SearchDefaultWords.kt
│ │ │ │ │ ├── View.kt
│ │ │ │ │ ├── ViewContinuousPlay.kt
│ │ │ │ │ ├── ViewLike.kt
│ │ │ │ │ ├── ViewProgress.kt
│ │ │ │ │ ├── ViewProgressUnite.kt
│ │ │ │ │ ├── ViewRelatesFeed.kt
│ │ │ │ │ ├── ViewRelatesFeedUnite.kt
│ │ │ │ │ ├── ViewTFInfo.kt
│ │ │ │ │ └── ViewUnite.kt
│ │ │ └── webview
│ │ │ │ ├── WebViewClientProxy.java
│ │ │ │ └── WebViewPatch.kt
│ │ │ ├── settings
│ │ │ ├── ModulePreferenceManager.kt
│ │ │ ├── Setting.kt
│ │ │ ├── Settings.kt
│ │ │ ├── dialog
│ │ │ │ ├── ARGBColorChooseDialog.kt
│ │ │ │ ├── ColorChooseDialog.kt
│ │ │ │ └── SpeedTestDialog.kt
│ │ │ ├── fragments
│ │ │ │ ├── AboutFragment.kt
│ │ │ │ ├── BackupFragment.kt
│ │ │ │ ├── BaseDynamicItemsFragment.kt
│ │ │ │ ├── BaseWidgetSettingFragment.kt
│ │ │ │ ├── BiliRoamingBaseSettingFragment.kt
│ │ │ │ ├── BiliRoamingSettingsFragment.kt
│ │ │ │ ├── CustomizeDrawerFragment.kt
│ │ │ │ ├── CustomizeHomeFragment.kt
│ │ │ │ ├── CustomizePlayerFragment.kt
│ │ │ │ ├── CustomizeSearchFragment.kt
│ │ │ │ ├── CustomizeSubtitleStyleFragment.kt
│ │ │ │ ├── CustomizeVideoDetailFragment.kt
│ │ │ │ ├── ExternalDownloaderFragment.kt
│ │ │ │ ├── FilterCommentByKeywordFragment.kt
│ │ │ │ ├── FilterDynamicByKeywordFragment.kt
│ │ │ │ ├── FilterHomeRcmdByKeywordFragment.kt
│ │ │ │ ├── FilterHomeRcmdFragment.kt
│ │ │ │ ├── FilterPopularFragment.kt
│ │ │ │ ├── FilterSearchKeywordsFragment.kt
│ │ │ │ ├── FilterStoryFragment.kt
│ │ │ │ ├── MiscFragment.kt
│ │ │ │ ├── TextFoldFragment.kt
│ │ │ │ ├── ToolFragment.kt
│ │ │ │ ├── UnlockAreaLimitFragment.kt
│ │ │ │ ├── VideoDetailFilterFragment.kt
│ │ │ │ └── fragments.kt
│ │ │ └── search
│ │ │ │ ├── SearchManager.kt
│ │ │ │ ├── SearchResultFragment.kt
│ │ │ │ └── annotation
│ │ │ │ └── SettingFragment.kt
│ │ │ ├── utils
│ │ │ ├── ActivityLauncher.kt
│ │ │ ├── ArrayUtils.java
│ │ │ ├── BVUtils.kt
│ │ │ ├── BackupHelper.kt
│ │ │ ├── ClassUtils.java
│ │ │ ├── CommentChecker.kt
│ │ │ ├── Constants.java
│ │ │ ├── CrossProcessPreferences.kt
│ │ │ ├── FileNames.kt
│ │ │ ├── GarbWatcher.kt
│ │ │ ├── Hashs.kt
│ │ │ ├── Jsons.kt
│ │ │ ├── KtUtils.kt
│ │ │ ├── Logger.java
│ │ │ ├── MarkdownParser.java
│ │ │ ├── MediaMerger.java
│ │ │ ├── MemberUtils.java
│ │ │ ├── MossDebugPrinter.kt
│ │ │ ├── Notifications.kt
│ │ │ ├── PlayerHookProvider.kt
│ │ │ ├── Reflex.java
│ │ │ ├── ReflexEx.kt
│ │ │ ├── SpannableStringBuilder.kt
│ │ │ ├── StringDecoder.java
│ │ │ ├── SubtitleHelper.kt
│ │ │ ├── SubtitleParamsCache.java
│ │ │ ├── Themes.kt
│ │ │ ├── Toasts.kt
│ │ │ ├── Translator.kt
│ │ │ ├── UposReplacer.kt
│ │ │ ├── Utils.java
│ │ │ ├── Versions.java
│ │ │ ├── VideoExporter.kt
│ │ │ ├── Views.kt
│ │ │ ├── Wbi.kt
│ │ │ └── Widgets.java
│ │ │ └── widget
│ │ │ ├── CheckBoxButtonPreference.java
│ │ │ ├── CheckBoxGroupPreference.java
│ │ │ ├── ConsumeTouchRecyclerView.kt
│ │ │ ├── HdBaseToolbar.kt
│ │ │ ├── OnClickOriginListener.java
│ │ │ ├── OnLongClickOriginListener.java
│ │ │ ├── OnSwitchDarkModeOriginListener.java
│ │ │ ├── RadioGroupEntrancePreference.java
│ │ │ ├── RecyclerView.kt
│ │ │ └── SearchBar.kt
│ │ └── jni
│ │ ├── CMakeLists.txt
│ │ └── biliroamingx.cc
├── dummy
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── libs
│ │ └── grpc_apis.jar
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ ├── android
│ │ ├── app
│ │ │ └── ActivityThread.java
│ │ └── support
│ │ │ └── v4
│ │ │ └── media
│ │ │ └── session
│ │ │ └── PlaybackStateCompat.java
│ │ ├── com
│ │ ├── android
│ │ │ └── internal
│ │ │ │ └── util
│ │ │ │ └── XmlUtils.java
│ │ └── bilibili
│ │ │ ├── ad
│ │ │ └── adview
│ │ │ │ └── videodetail
│ │ │ │ └── danmakuv2
│ │ │ │ └── model
│ │ │ │ ├── Dm.java
│ │ │ │ └── DmAdvert.java
│ │ │ ├── adcommon
│ │ │ └── basic
│ │ │ │ └── model
│ │ │ │ ├── FeedAdInfo.java
│ │ │ │ └── SourceContent.java
│ │ │ ├── app
│ │ │ ├── authorspace
│ │ │ │ └── api
│ │ │ │ │ ├── BiliMemberCard.java
│ │ │ │ │ ├── BiliSpace.java
│ │ │ │ │ ├── BiliSpaceArchiveVideo.java
│ │ │ │ │ ├── BiliSpaceArticleList.java
│ │ │ │ │ ├── BiliSpaceAudioList.java
│ │ │ │ │ ├── BiliSpaceButtonEntrance.java
│ │ │ │ │ ├── BiliSpaceComicList.java
│ │ │ │ │ ├── BiliSpaceFansDress.java
│ │ │ │ │ ├── BiliSpaceFavoriteBox.java
│ │ │ │ │ ├── BiliSpaceGuard.java
│ │ │ │ │ ├── BiliSpaceNftShowModule.java
│ │ │ │ │ ├── BiliSpaceSeason.java
│ │ │ │ │ ├── BiliSpaceUgcSeasonList.java
│ │ │ │ │ ├── BiliSpaceUserGame.java
│ │ │ │ │ ├── BiliUserLiveEntry.java
│ │ │ │ │ └── ContractResource.java
│ │ │ ├── comm
│ │ │ │ └── list
│ │ │ │ │ ├── common
│ │ │ │ │ ├── api
│ │ │ │ │ │ └── model
│ │ │ │ │ │ │ └── PlayerArgs.java
│ │ │ │ │ └── data
│ │ │ │ │ │ ├── DislikeReason.java
│ │ │ │ │ │ └── ThreePointItem.java
│ │ │ │ │ └── widget
│ │ │ │ │ └── recommend
│ │ │ │ │ └── RecommendModeGuidanceConfig.java
│ │ │ ├── gemini
│ │ │ │ └── ugc
│ │ │ │ │ └── feature
│ │ │ │ │ ├── endpage
│ │ │ │ │ └── qoe
│ │ │ │ │ │ └── GeminiDmQoeInfo.java
│ │ │ │ │ └── share
│ │ │ │ │ └── ShareIconResult.java
│ │ │ └── preferences
│ │ │ │ └── BiliPreferencesActivity.java
│ │ │ ├── bililive
│ │ │ ├── room
│ │ │ │ ├── biz
│ │ │ │ │ ├── reverse
│ │ │ │ │ │ └── bean
│ │ │ │ │ │ │ └── LiveRoomReserveInfo.java
│ │ │ │ │ └── shopping
│ │ │ │ │ │ └── beans
│ │ │ │ │ │ ├── LiveGoodsCardDetail.java
│ │ │ │ │ │ ├── LiveGoodsCardInfo.java
│ │ │ │ │ │ ├── LiveShoppingGotoBuyInfo.java
│ │ │ │ │ │ ├── LiveShoppingInfo.java
│ │ │ │ │ │ └── LiveShoppingRecommendCardGoodsDetail.java
│ │ │ │ └── ui
│ │ │ │ │ └── roomv3
│ │ │ │ │ ├── LiveRoomActivityV3.java
│ │ │ │ │ └── player
│ │ │ │ │ └── container
│ │ │ │ │ └── LiveRoomPlayerContainerView.java
│ │ │ └── videoliveplayer
│ │ │ │ └── net
│ │ │ │ └── beans
│ │ │ │ ├── attentioncard
│ │ │ │ └── LiveRoomRecommendCard.java
│ │ │ │ ├── gateway
│ │ │ │ ├── roominfo
│ │ │ │ │ ├── BiliLiveRoomBanner.java
│ │ │ │ │ ├── BiliLiveRoomInfo.java
│ │ │ │ │ ├── LiveRoomDanmakuVoteCardInfo.java
│ │ │ │ │ ├── LiveRoomFollowCardInfo.java
│ │ │ │ │ ├── LiveRoomMatchCardBaseCard.java
│ │ │ │ │ ├── LiveRoomPlayTogetherCardInfo.java
│ │ │ │ │ └── LiveRoomWishlistCardInfo.java
│ │ │ │ └── userinfo
│ │ │ │ │ ├── BiliLiveRoomUserInfo.java
│ │ │ │ │ ├── BiliLiveRoomUserTaskInfo.java
│ │ │ │ │ ├── FunctionCard.java
│ │ │ │ │ └── LiveRoomUserResearch.java
│ │ │ │ ├── gift
│ │ │ │ └── LiveRoomSendGiftRemindCardInfo.java
│ │ │ │ ├── giftpendant
│ │ │ │ ├── LiveGiftPendantInfo.java
│ │ │ │ ├── LiveGiftStarPendantInfo.java
│ │ │ │ └── LiveWishListInfo.java
│ │ │ │ ├── mask
│ │ │ │ ├── AreaMaskItem.java
│ │ │ │ ├── AreaMasks.java
│ │ │ │ └── LiveAreaMaskInfo.java
│ │ │ │ └── playtogether
│ │ │ │ └── LivePlayTogetherInfoUser.java
│ │ │ ├── bplus
│ │ │ ├── followingcard
│ │ │ │ └── widget
│ │ │ │ │ └── EllipsizingTextView.java
│ │ │ └── im
│ │ │ │ ├── business
│ │ │ │ └── model
│ │ │ │ │ ├── BaseMessage.java
│ │ │ │ │ └── BaseTypedMessage.java
│ │ │ │ ├── entity
│ │ │ │ ├── ChatMessage.java
│ │ │ │ └── User.java
│ │ │ │ └── setting
│ │ │ │ └── MessageTipItemActivity.java
│ │ │ ├── comm
│ │ │ └── charge
│ │ │ │ └── api
│ │ │ │ └── ChargeRankResult.java
│ │ │ ├── compose
│ │ │ └── theme
│ │ │ │ └── ThemeDayNight.java
│ │ │ ├── cron
│ │ │ ├── Canvas.java
│ │ │ ├── Image.java
│ │ │ └── ThreadLocalUtils.java
│ │ │ ├── lib
│ │ │ ├── homepage
│ │ │ │ ├── MenuItemTip.java
│ │ │ │ └── mine
│ │ │ │ │ └── MenuGroup.java
│ │ │ ├── imageviewer
│ │ │ │ ├── MediaViewerActivity.java
│ │ │ │ └── fragment
│ │ │ │ │ └── ImageFragment.java
│ │ │ ├── media
│ │ │ │ └── resource
│ │ │ │ │ └── PlayConfig.java
│ │ │ ├── sharewrapper
│ │ │ │ └── online
│ │ │ │ │ └── api
│ │ │ │ │ ├── MenuStatusItem.java
│ │ │ │ │ └── ShareChannels.java
│ │ │ └── ui
│ │ │ │ ├── BaseFragment.java
│ │ │ │ ├── BasePreferenceFragment.java
│ │ │ │ └── garb
│ │ │ │ └── Garb.java
│ │ │ ├── magicasakura
│ │ │ └── widgets
│ │ │ │ ├── TintButton.java
│ │ │ │ ├── TintCheckBox.java
│ │ │ │ ├── TintCheckedTextView.java
│ │ │ │ ├── TintEditText.java
│ │ │ │ ├── TintFrameLayout.java
│ │ │ │ ├── TintImageView.java
│ │ │ │ ├── TintLinearLayout.java
│ │ │ │ ├── TintProgressBar.java
│ │ │ │ ├── TintRadioButton.java
│ │ │ │ ├── TintRelativeLayout.java
│ │ │ │ ├── TintSwitchCompat.java
│ │ │ │ ├── TintTextView.java
│ │ │ │ └── TintView.java
│ │ │ ├── multitypeplayerV2
│ │ │ └── MultiTypeVideoContentActivity.java
│ │ │ ├── okretro
│ │ │ ├── BaseResponse.java
│ │ │ └── GeneralResponse.java
│ │ │ ├── pegasus
│ │ │ └── api
│ │ │ │ ├── model
│ │ │ │ ├── BaseTagsData.java
│ │ │ │ ├── BasicIndexItem.java
│ │ │ │ ├── ChannelTabV2.java
│ │ │ │ └── ChannelV2.java
│ │ │ │ └── modelv2
│ │ │ │ ├── AdItem.java
│ │ │ │ ├── Args.java
│ │ │ │ ├── BannerItemV2.java
│ │ │ │ ├── BasePlayerItem.java
│ │ │ │ ├── Config.java
│ │ │ │ ├── DescButton.java
│ │ │ │ ├── LargeCoverSingleV7Item.java
│ │ │ │ ├── LargeCoverSingleV8Item.java
│ │ │ │ ├── LargeCoverSingleV9Item.java
│ │ │ │ ├── LargeCoverV1Item.java
│ │ │ │ ├── LargeCoverV7Item.java
│ │ │ │ ├── LargeCoverV8Item.java
│ │ │ │ ├── LargeCoverV9Item.java
│ │ │ │ ├── PegasusFeedResponse.java
│ │ │ │ ├── SmallCoverItem.java
│ │ │ │ ├── SmallCoverV10Item.java
│ │ │ │ ├── SmallCoverV2Item.java
│ │ │ │ ├── SmallCoverV5Item.java
│ │ │ │ ├── SmallCoverV9Item.java
│ │ │ │ ├── Tag.java
│ │ │ │ ├── Up.java
│ │ │ │ ├── UpArgs.java
│ │ │ │ └── channel
│ │ │ │ └── ChannelSortItem.java
│ │ │ ├── search
│ │ │ ├── api
│ │ │ │ ├── DefaultKeyword.java
│ │ │ │ ├── SearchRank.java
│ │ │ │ └── SearchReferral.java
│ │ │ ├── ogv
│ │ │ │ └── OgvSearchResultFragment.java
│ │ │ └── result
│ │ │ │ ├── bangumi
│ │ │ │ └── ogv
│ │ │ │ │ └── BangumiSearchResultFragment.java
│ │ │ │ └── pages
│ │ │ │ └── BiliMainSearchResultPage.java
│ │ │ ├── search2
│ │ │ ├── api
│ │ │ │ ├── SearchRank.java
│ │ │ │ └── SearchReferral.java
│ │ │ ├── ogv
│ │ │ │ └── OgvSearchResultFragment.java
│ │ │ └── result
│ │ │ │ └── pages
│ │ │ │ └── BiliMainSearchResultPage.java
│ │ │ ├── ship
│ │ │ └── theseus
│ │ │ │ ├── all
│ │ │ │ └── UnitedBizDetailsActivity.java
│ │ │ │ ├── detail
│ │ │ │ └── UnitedBizDetailsActivity.java
│ │ │ │ └── playlist
│ │ │ │ └── UnitedPlaylistActivity.java
│ │ │ └── video
│ │ │ ├── story
│ │ │ ├── StoryDetail.java
│ │ │ ├── StoryVideoActivity.java
│ │ │ └── api
│ │ │ │ └── StoryFeedResponse.java
│ │ │ └── videodetail
│ │ │ └── VideoDetailsActivity.java
│ │ └── tv
│ │ └── danmaku
│ │ ├── bili
│ │ ├── MainActivityV2.java
│ │ ├── ui
│ │ │ ├── main
│ │ │ │ └── event
│ │ │ │ │ └── model
│ │ │ │ │ └── EventEntranceModel.java
│ │ │ ├── main2
│ │ │ │ ├── api
│ │ │ │ │ └── AccountMine.java
│ │ │ │ ├── mine
│ │ │ │ │ └── HomeUserCenterFragment.java
│ │ │ │ └── resource
│ │ │ │ │ └── MainResourceManager.java
│ │ │ ├── offline
│ │ │ │ └── api
│ │ │ │ │ ├── EpPlayable.java
│ │ │ │ │ ├── EpPlayableV2.java
│ │ │ │ │ ├── OgvApiResponse.java
│ │ │ │ │ └── OgvApiResponseV2.java
│ │ │ ├── splash
│ │ │ │ ├── Splash.java
│ │ │ │ ├── SplashData.java
│ │ │ │ ├── SplashShowData.java
│ │ │ │ ├── ad
│ │ │ │ │ └── model
│ │ │ │ │ │ ├── Splash.java
│ │ │ │ │ │ ├── SplashData.java
│ │ │ │ │ │ ├── SplashShowData.java
│ │ │ │ │ │ └── SplashShowStrategy.java
│ │ │ │ ├── brand
│ │ │ │ │ └── model
│ │ │ │ │ │ ├── BrandSplash.java
│ │ │ │ │ │ ├── BrandSplashData.java
│ │ │ │ │ │ ├── NormalBrandShow.java
│ │ │ │ │ │ └── PreloadBrandData.java
│ │ │ │ ├── common
│ │ │ │ │ └── search
│ │ │ │ │ │ └── QueryItem.java
│ │ │ │ └── event
│ │ │ │ │ ├── Account.java
│ │ │ │ │ ├── Action.java
│ │ │ │ │ ├── Element.java
│ │ │ │ │ ├── EventSplashData.java
│ │ │ │ │ ├── EventSplashDataList.java
│ │ │ │ │ ├── Layout.java
│ │ │ │ │ └── Resource.java
│ │ │ └── theme
│ │ │ │ └── api
│ │ │ │ ├── BiliSkin.java
│ │ │ │ └── BiliSkinList.java
│ │ ├── videopage
│ │ │ └── player
│ │ │ │ ├── features
│ │ │ │ ├── qoe
│ │ │ │ │ └── DmQoeInfo.java
│ │ │ │ └── share
│ │ │ │ │ └── ShareIconResult.java
│ │ │ │ └── gemini
│ │ │ │ └── qoe
│ │ │ │ └── GeminiDmQoeInfo.java
│ │ └── widget
│ │ │ ├── ForegroundLinearLayout.java
│ │ │ ├── RadioButtonPreference.java
│ │ │ ├── RadioGroupPreference.java
│ │ │ └── preference
│ │ │ ├── BLPreference.java
│ │ │ ├── BLPreferenceCategory.java
│ │ │ └── BLRadioGroupEntrancePreference.java
│ │ ├── bilibilihd
│ │ └── ui
│ │ │ └── main
│ │ │ └── mine
│ │ │ ├── HdHomeUserCenterFragment.java
│ │ │ └── common
│ │ │ └── HdCommonBaseFragment.java
│ │ ├── biliplayerv2
│ │ ├── service
│ │ │ └── interact
│ │ │ │ └── biz
│ │ │ │ └── chronos
│ │ │ │ └── chronosrpc
│ │ │ │ └── methods
│ │ │ │ └── send
│ │ │ │ └── OnlineInfoChange.java
│ │ └── widget
│ │ │ └── toast
│ │ │ └── PlayerToast.java
│ │ ├── ijk
│ │ └── media
│ │ │ └── player
│ │ │ ├── IMediaPlayer.java
│ │ │ ├── IjkMediaAsset.java
│ │ │ ├── IjkMediaMeta.java
│ │ │ ├── IjkTimedText.java
│ │ │ ├── MediaInfo.java
│ │ │ └── misc
│ │ │ ├── IMediaDataSource.java
│ │ │ ├── IMediaFormat.java
│ │ │ └── ITrackInfo.java
│ │ └── videoplayer
│ │ └── core
│ │ └── videoview
│ │ └── AspectRatio.java
├── extend
│ ├── .gitignore
│ ├── build.gradle.kts
│ ├── consumer-rules.pro
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── google
│ │ └── protobuf
│ │ ├── GeneratedMessageLiteEx.java
│ │ └── MessageLiteToStringEx.java
└── ksp
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── src
│ └── main
│ ├── kotlin
│ └── app
│ │ └── revanced
│ │ └── bilibili
│ │ └── processors
│ │ └── SearchFragmentsProcessor.kt
│ └── resources
│ └── META-INF
│ └── services
│ └── com.google.devtools.ksp.processing.SymbolProcessorProvider
├── patches
├── .gitignore
├── build.gradle.kts
└── src
│ └── main
│ ├── kotlin
│ └── app
│ │ └── revanced
│ │ ├── generator
│ │ ├── JsonPatchesFileGenerator.kt
│ │ ├── Main.kt
│ │ └── PatchesFileGenerator.kt
│ │ ├── patches
│ │ ├── all
│ │ │ ├── activity
│ │ │ │ └── exportall
│ │ │ │ │ └── ExportAllActivitiesPatch.kt
│ │ │ ├── interaction
│ │ │ │ └── gestures
│ │ │ │ │ └── PredictiveBackGesturePatch.kt
│ │ │ ├── misc
│ │ │ │ ├── debugging
│ │ │ │ │ └── EnableAndroidDebuggingPatch.kt
│ │ │ │ ├── packagename
│ │ │ │ │ └── ChangePackageNamePatch.kt
│ │ │ │ └── transformation
│ │ │ │ │ ├── BaseTransformInstructionsPatch.kt
│ │ │ │ │ └── MethodCall.kt
│ │ │ └── telephony
│ │ │ │ └── sim
│ │ │ │ └── spoof
│ │ │ │ └── SpoofSimCountryPatch.kt
│ │ ├── bilibili
│ │ │ ├── ads
│ │ │ │ └── patch
│ │ │ │ │ └── UpRcmdAdsPatch.kt
│ │ │ ├── layout
│ │ │ │ ├── fingerprints
│ │ │ │ │ └── FullStoryWidgetFingerprint.kt
│ │ │ │ └── patch
│ │ │ │ │ ├── HideFollowButtonPatch.kt
│ │ │ │ │ └── RemoveVipSectionPatch.kt
│ │ │ ├── misc
│ │ │ │ ├── appicon
│ │ │ │ │ └── AppIconPatch.kt
│ │ │ │ ├── config
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── ABSourceFingerprint.kt
│ │ │ │ │ │ ├── ConfigSourceFingerprint.kt
│ │ │ │ │ │ └── DDContractImplFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── ConfigPatch.kt
│ │ │ │ ├── copy
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── BaseCommentCopyFingerprint.kt
│ │ │ │ │ │ ├── Comment3CopyFingerprint.kt
│ │ │ │ │ │ ├── Comment3DialogCopyFingerprint.kt
│ │ │ │ │ │ ├── CommentCopyNewFingerprint.kt
│ │ │ │ │ │ ├── CommentCopyOldFingerprint.kt
│ │ │ │ │ │ ├── ConversationCopyFingerprint.kt
│ │ │ │ │ │ └── DescCopyFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── CopyEnhancePatch.kt
│ │ │ │ ├── darkswitch
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ └── SwitchDarkModeFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── DarkSwitchPatch.kt
│ │ │ │ ├── drawer
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── DrawerControlFingerprint.kt
│ │ │ │ │ │ ├── DrawerIsOpenFingerprint.kt
│ │ │ │ │ │ └── DrawerLayoutParamsFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── DrawerPatch.kt
│ │ │ │ ├── integrations
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── AppCompatActivityFingerprint.kt
│ │ │ │ │ │ ├── BLKVFingerprint.kt
│ │ │ │ │ │ ├── BaseMainFrameFragmentFingerprint.kt
│ │ │ │ │ │ ├── BrotliFingerprint.kt
│ │ │ │ │ │ ├── DanmakuFontSwitchPreferenceFingerprint.kt
│ │ │ │ │ │ └── RecyclerViewHolderFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ ├── BLKVPatch.kt
│ │ │ │ │ │ ├── BrotliPatch.kt
│ │ │ │ │ │ ├── ConfigPatch.kt
│ │ │ │ │ │ ├── DpiPatch.kt
│ │ │ │ │ │ ├── IntegrationsPatch.kt
│ │ │ │ │ │ ├── LibBiliPatch.kt
│ │ │ │ │ │ ├── MainActivityPatch.kt
│ │ │ │ │ │ ├── ModifyModifierPatch.kt
│ │ │ │ │ │ ├── NormalizeRecyclerViewPatch.kt
│ │ │ │ │ │ └── ProtoBufPrintPatch.kt
│ │ │ │ ├── json
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── CardClickProcessorFingerprint.kt
│ │ │ │ │ │ ├── CardClickProcessorNewFingerprint.kt
│ │ │ │ │ │ ├── JSONFingerprint.kt
│ │ │ │ │ │ └── PegasusParserFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ ├── JSONPatch.kt
│ │ │ │ │ │ └── PegasusPatch.kt
│ │ │ │ ├── network
│ │ │ │ │ └── OverrideCertificatePinningPatch.kt
│ │ │ │ ├── notification
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── HeadsetMediaSessionCallbackFingerprint.kt
│ │ │ │ │ │ ├── LiveNotificationHelperFingerprint.kt
│ │ │ │ │ │ ├── MediaSessionCallbackApi21Fingerprint.kt
│ │ │ │ │ │ └── NotificationStyleAbFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── MusicNotificationPatch.kt
│ │ │ │ ├── okhttp
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── BodyWrapperFingerprint.kt
│ │ │ │ │ │ ├── BufferFingerprint.kt
│ │ │ │ │ │ ├── HeadersFingerprint.kt
│ │ │ │ │ │ ├── HttpUrlFingerprint.kt
│ │ │ │ │ │ ├── MediaTypeGetFingerprint.kt
│ │ │ │ │ │ ├── RealCallFingerprint.kt
│ │ │ │ │ │ ├── RequestFingerprint.kt
│ │ │ │ │ │ ├── ResponseBodyFingerprint.kt
│ │ │ │ │ │ └── ResponseFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── OkHttpPatch.kt
│ │ │ │ ├── other
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── AppendTrackingInfoFingerprint.kt
│ │ │ │ │ │ ├── AttachChannelInfoFingerprint.kt
│ │ │ │ │ │ ├── BLRouteBuilderFingerprint.kt
│ │ │ │ │ │ ├── CommentConfigFingerprint.kt
│ │ │ │ │ │ ├── CommentImageSetLayoutBindViewFingerprint.kt
│ │ │ │ │ │ ├── ConfigV3PreloadFingerprint.kt
│ │ │ │ │ │ ├── FavFolderOnDataSuccessFingerprint.kt
│ │ │ │ │ │ ├── FavFolderOnDataSuccessNewFingerprint.kt
│ │ │ │ │ │ ├── LiveRoomSetFloatWindowFingerprint.kt
│ │ │ │ │ │ ├── LiveRoomTouchDispatchViewModelFingerprint.kt
│ │ │ │ │ │ ├── LogcatAdapterFingerprint.kt
│ │ │ │ │ │ ├── MainCommonServiceImplFingerprint.kt
│ │ │ │ │ │ ├── MineBindAccountStateFingerprint.kt
│ │ │ │ │ │ ├── OgvSearchResultFingerprint.kt
│ │ │ │ │ │ ├── OnOgvDownloadFingerprint.kt
│ │ │ │ │ │ ├── PublishToFollowingConfigFingerprint.kt
│ │ │ │ │ │ ├── QualityViewHolderFingerprint.kt
│ │ │ │ │ │ ├── RouteRequestFingerprint.kt
│ │ │ │ │ │ ├── SectionFingerprint.kt
│ │ │ │ │ │ ├── SetUnitedTabLayoutFingerprint.kt
│ │ │ │ │ │ ├── SpaceBindAccountStateFingerprint.kt
│ │ │ │ │ │ ├── TeenagersModeFingerprint.kt
│ │ │ │ │ │ ├── UidCopyFingerprint.kt
│ │ │ │ │ │ ├── UniteDownloadMenuInvokeFingerprint.kt
│ │ │ │ │ │ └── WebConfigFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ ├── AppendExtraSearchTypePatch.kt
│ │ │ │ │ │ ├── AppendSignatureInfoPatch.kt
│ │ │ │ │ │ ├── AutoLikePatch.kt
│ │ │ │ │ │ ├── BLRoutePatch.kt
│ │ │ │ │ │ ├── BLogPatch.kt
│ │ │ │ │ │ ├── BiliLayoutAdjustPatch.kt
│ │ │ │ │ │ ├── BiliLayoutAdjustResourcesPatch.kt
│ │ │ │ │ │ ├── BiliLibraryPatch.kt
│ │ │ │ │ │ ├── BiliSettingPreferenceLayoutPatch.kt
│ │ │ │ │ │ ├── BlockThaiCommentPatch.kt
│ │ │ │ │ │ ├── CacheRedirectPatch.kt
│ │ │ │ │ │ ├── ChannelModelFixPatch.kt
│ │ │ │ │ │ ├── CrashHandlerPatch.kt
│ │ │ │ │ │ ├── CustomSplashPatch.kt
│ │ │ │ │ │ ├── FakeNotInMultiWindowPatch.kt
│ │ │ │ │ │ ├── FavFolderDialogPatch.kt
│ │ │ │ │ │ ├── ForbidLiveRoomAutoFloatPatch.kt
│ │ │ │ │ │ ├── ForbidLiveRoomSlideLeftPatch.kt
│ │ │ │ │ │ ├── ForbidSwitchLiveRoomPatch.kt
│ │ │ │ │ │ ├── ForceCommentNavigablePatch.kt
│ │ │ │ │ │ ├── InjectDataProviderPatch.kt
│ │ │ │ │ │ ├── InjectMoreSchemePatch.kt
│ │ │ │ │ │ ├── KeepDataWhenUninstallPatch.kt
│ │ │ │ │ │ ├── LiveRoomPatch.kt
│ │ │ │ │ │ ├── MakeTextSelectablePatch.kt
│ │ │ │ │ │ ├── ModulePreDownloadHookPatch.kt
│ │ │ │ │ │ ├── NoManageSpaceActivityPatch.kt
│ │ │ │ │ │ ├── NotificationPatch.kt
│ │ │ │ │ │ ├── NumberFormatPatch.kt
│ │ │ │ │ │ ├── PerAppLanguagePatch.kt
│ │ │ │ │ │ ├── PlayManifestCompatibilityPatch.kt
│ │ │ │ │ │ ├── PublishToFollowingPatch.kt
│ │ │ │ │ │ ├── SaveCommentImagePatch.kt
│ │ │ │ │ │ ├── SharePatch.kt
│ │ │ │ │ │ ├── TeenagerModePatch.kt
│ │ │ │ │ │ ├── TextFoldPatch.kt
│ │ │ │ │ │ ├── TrialQualityPatch.kt
│ │ │ │ │ │ ├── UidCopyNoPrefixPatch.kt
│ │ │ │ │ │ └── UpgradePatch.kt
│ │ │ │ ├── protobuf
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── MossMiddlewareGaiaFingerprint.kt
│ │ │ │ │ │ └── MossServiceFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ ├── CommentReplyUrlPatch.kt
│ │ │ │ │ │ ├── MossPatch.kt
│ │ │ │ │ │ └── UnlockProtobufPatch.kt
│ │ │ │ ├── settings
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── HdOnPreferenceClickFingerprint.kt
│ │ │ │ │ │ └── PreferenceManagerFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ ├── FixPreferenceManagerPatch.kt
│ │ │ │ │ │ ├── HdPreferenceClickFixPatch.kt
│ │ │ │ │ │ ├── HdPreferenceFragmentPatch.kt
│ │ │ │ │ │ └── SettingsResourcePatch.kt
│ │ │ │ ├── splash
│ │ │ │ │ └── SplashPatch.kt
│ │ │ │ ├── theme
│ │ │ │ │ ├── fingerprints
│ │ │ │ │ │ ├── BuiltInThemesFingerprint.kt
│ │ │ │ │ │ ├── SkinListFingerprint.kt
│ │ │ │ │ │ ├── ThemeClickFingerprint.kt
│ │ │ │ │ │ ├── ThemeColorsFingerprint.kt
│ │ │ │ │ │ ├── ThemeHelperFingerprint.kt
│ │ │ │ │ │ ├── ThemeNameFingerprint.kt
│ │ │ │ │ │ ├── ThemeProcessorFingerprint.kt
│ │ │ │ │ │ └── WebActivityBuildUriFingerprint.kt
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── CustomThemePatch.kt
│ │ │ │ ├── toast
│ │ │ │ │ └── patch
│ │ │ │ │ │ └── ToastPatch.kt
│ │ │ │ └── webview
│ │ │ │ │ └── patch
│ │ │ │ │ └── WebViewPatch.kt
│ │ │ ├── patcher
│ │ │ │ ├── fingerprint
│ │ │ │ │ └── MultiMethodFingerprint.kt
│ │ │ │ └── patch
│ │ │ │ │ └── MultiMethodBytecodePatch.kt
│ │ │ ├── utils
│ │ │ │ └── Extenstions.kt
│ │ │ └── video
│ │ │ │ ├── player
│ │ │ │ ├── fingerprints
│ │ │ │ │ ├── BangumiKeyDownHandlerFingerprint.kt
│ │ │ │ │ ├── IjkMediaPlayerOptionsFingerprint.kt
│ │ │ │ │ ├── MenuFuncSegmentFingerprint.kt
│ │ │ │ │ ├── MenuServiceCreateSpeedFingerprint.kt
│ │ │ │ │ ├── PlaySpeedManagerImplFingerprint.kt
│ │ │ │ │ ├── PlaybackSpeedSettingFingerprint.kt
│ │ │ │ │ ├── PlayerGestureListenerFingerprint.kt
│ │ │ │ │ ├── PlayerGestureRotateFingerprint.kt
│ │ │ │ │ ├── PlayerOnPreparedFingerprint.kt
│ │ │ │ │ ├── PlayerResizableGestureListenerFingerprint.kt
│ │ │ │ │ ├── PlayerSeekToFingerprint.kt
│ │ │ │ │ ├── PlayerSettingCreateSpeedFingerprint.kt
│ │ │ │ │ ├── PlayerSpeedChooseWidgetFingerprint.kt
│ │ │ │ │ ├── PlayerSpeedWidgetFingerprint.kt
│ │ │ │ │ ├── RemoteServiceHandlerOnStartFingerprint.kt
│ │ │ │ │ ├── ResetResizeFunctionWidgetFingerprint.kt
│ │ │ │ │ ├── ShowPlayerToastFingerprint.kt
│ │ │ │ │ ├── TripleSpeedServiceFingerprint.kt
│ │ │ │ │ ├── TripleSpeedServiceUniteFingerprint.kt
│ │ │ │ │ └── UnitePlayerSetSpeedMenuFingerprint.kt
│ │ │ │ └── patch
│ │ │ │ │ ├── AddBackDmSystemFontPatch.kt
│ │ │ │ │ ├── BangumiKeyDownHandlerPatch.kt
│ │ │ │ │ ├── DefaultPlaybackSpeedPatch.kt
│ │ │ │ │ ├── HwCodecPatch.kt
│ │ │ │ │ ├── LongPressPlaybackSpeedPatch.kt
│ │ │ │ │ ├── OverridePlaybackSpeedPatch.kt
│ │ │ │ │ ├── PlayUrlPatch.kt
│ │ │ │ │ ├── PlayerGestureDetectorPatch.kt
│ │ │ │ │ ├── PlayerPatch.kt
│ │ │ │ │ ├── PlayerToastPatch.kt
│ │ │ │ │ └── RememberPlaybackSpeedPatch.kt
│ │ │ │ ├── quality
│ │ │ │ ├── fingerprints
│ │ │ │ │ └── PlayerSettingHelperFingerprint.kt
│ │ │ │ └── patch
│ │ │ │ │ └── VideoQualityPatch.kt
│ │ │ │ └── subtitle
│ │ │ │ ├── fingerprints
│ │ │ │ ├── FunctionWidgetServiceFingerprint.kt
│ │ │ │ ├── FunctionWidgetTokenFingerprint.kt
│ │ │ │ ├── PlayerContainerFingerprint.kt
│ │ │ │ ├── PlayerSubtitleFunctionWidgetFingerprint.kt
│ │ │ │ ├── RecordSelectedSubtitleFingerprint.kt
│ │ │ │ └── SetDmViewReplyFingerprint.kt
│ │ │ │ └── patch
│ │ │ │ ├── SubtitleImportSaveButtonPatch.kt
│ │ │ │ ├── SubtitleImportSavePatch.kt
│ │ │ │ └── SubtitlePatch.kt
│ │ └── shared
│ │ │ └── misc
│ │ │ ├── integrations
│ │ │ └── BaseIntegrationsPatch.kt
│ │ │ └── mapping
│ │ │ └── ResourceMappingPatch.kt
│ │ └── util
│ │ ├── BytecodeUtils.kt
│ │ ├── ResourceUtils.kt
│ │ └── patch
│ │ └── LiteralValueFingerprint.kt
│ └── resources
│ └── bilibili
│ ├── appicon-hd
│ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ └── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── appicon
│ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ └── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_foreground_round.png
│ │ ├── ic_launcher_monochrome.png
│ │ └── ic_launcher_round.png
│ ├── drawable
│ ├── biliroaming_bg_transparent.webp
│ ├── biliroaming_ic_clear.xml
│ └── biliroaming_ic_search.xml
│ ├── host
│ └── values
│ │ ├── arrays.xml
│ │ ├── ids.xml
│ │ ├── strings.xml
│ │ └── strings_raw.xml
│ ├── layout
│ ├── biliroaming_dialog_access_key.xml
│ ├── biliroaming_dialog_area_server.xml
│ ├── biliroaming_dialog_argb_color_choose.xml
│ ├── biliroaming_dialog_color_choose.xml
│ └── biliroaming_search_bar.xml
│ └── xml
│ ├── biliroaming_locales_config.xml
│ ├── biliroaming_search_result.xml
│ ├── biliroaming_setting_about.xml
│ ├── biliroaming_setting_backup.xml
│ ├── biliroaming_setting_block_follow.xml
│ ├── biliroaming_setting_cover_ratio.xml
│ ├── biliroaming_setting_customize_bottom.xml
│ ├── biliroaming_setting_customize_drawer.xml
│ ├── biliroaming_setting_customize_dynamic.xml
│ ├── biliroaming_setting_customize_home.xml
│ ├── biliroaming_setting_customize_live_room.xml
│ ├── biliroaming_setting_customize_mine.xml
│ ├── biliroaming_setting_customize_player.xml
│ ├── biliroaming_setting_customize_search.xml
│ ├── biliroaming_setting_customize_space.xml
│ ├── biliroaming_setting_customize_video_detail.xml
│ ├── biliroaming_setting_display_size.xml
│ ├── biliroaming_setting_external_downloader.xml
│ ├── biliroaming_setting_filter_comment.xml
│ ├── biliroaming_setting_filter_dynamic_by_type.xml
│ ├── biliroaming_setting_filter_home.xml
│ ├── biliroaming_setting_filter_home_by_type.xml
│ ├── biliroaming_setting_filter_popular.xml
│ ├── biliroaming_setting_filter_search_type.xml
│ ├── biliroaming_setting_filter_story.xml
│ ├── biliroaming_setting_filter_story_by_type.xml
│ ├── biliroaming_setting_full_screen_quality.xml
│ ├── biliroaming_setting_full_screen_quality_mobile.xml
│ ├── biliroaming_setting_half_screen_quality.xml
│ ├── biliroaming_setting_home_tab.xml
│ ├── biliroaming_setting_live_popups.xml
│ ├── biliroaming_setting_misc.xml
│ ├── biliroaming_setting_player_version.xml
│ ├── biliroaming_setting_purify_search_types.xml
│ ├── biliroaming_setting_space.xml
│ ├── biliroaming_setting_story_ui_style.xml
│ ├── biliroaming_setting_subtitle_translate_server.xml
│ ├── biliroaming_setting_tool.xml
│ ├── biliroaming_setting_unlock_area_limit.xml
│ ├── biliroaming_setting_upos.xml
│ ├── biliroaming_setting_video_detail_filter.xml
│ ├── biliroaming_setting_video_popups.xml
│ └── biliroaming_settings.xml
└── settings.gradle.kts
/.gitattributes:
--------------------------------------------------------------------------------
1 | #
2 | # https://help.github.com/articles/dealing-with-line-endings/
3 | #
4 | # Linux start script should use lf
5 | /gradlew text eol=lf
6 |
7 | # These are Windows script files and should use crlf
8 | *.bat text eol=crlf
9 |
10 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: 📃 文档
4 | url: https://github.com/revanced/revanced-documentation/
5 | about: 不知道如何或从哪里开始?查看我们的文档!
6 | - name: 🗨 订阅
7 | url: https://t.me/bb_show
8 | about: 获取最新预构建安装包,订阅更新。
9 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: gradle
4 | directory: "/"
5 | schedule:
6 | interval: daily
7 | time: "02:00"
8 | open-pull-requests-limit: 10
9 | target-branch: main
10 | registries:
11 | - maven-central
12 | - maven-google
13 | - gradle-plugin
14 | registries:
15 | maven-central:
16 | type: maven-repository
17 | url: "https://repo.maven.apache.org/maven2/"
18 | maven-google:
19 | type: maven-repository
20 | url: "https://dl.google.com/dl/android/maven2/"
21 | gradle-plugin:
22 | type: maven-repository
23 | url: "https://plugins.gradle.org/m2/"
24 |
--------------------------------------------------------------------------------
/.github/workflows/update-gradle-wrapper.yml:
--------------------------------------------------------------------------------
1 | name: Update Gradle Wrapper
2 |
3 | on:
4 | schedule:
5 | - cron: "0 2 * * *"
6 | workflow_dispatch:
7 |
8 | jobs:
9 | update:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout
13 | uses: actions/checkout@v4
14 |
15 | - name: Set up JDK
16 | uses: actions/setup-java@v4
17 | with:
18 | distribution: 'temurin'
19 | java-version: '17'
20 |
21 | - name: Update gradle wrapper
22 | uses: zjns/update-gradle-wrapper-action@main
23 | with:
24 | repo-token: ${{ secrets.gh_token }}
25 | pr-title-template: 'build(deps): bump gradle wrapper from %sourceVersion% to %targetVersion%'
26 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /build
5 | /captures
6 | .externalNativeBuild
7 | .cxx
8 | /.vscode
9 | /*.log
10 | /.idea/*
11 | !/.idea/codeStyles
12 | .kotlin
13 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "integrations/libs/Dobby"]
2 | path = integrations/libs/Dobby
3 | url = https://github.com/LSPosed/Dobby.git
4 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/assets/images/Screenshot_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_1.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_2.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_3.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_4.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_5.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_6.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_7.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_8.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/assets/images/Screenshot_9.png
--------------------------------------------------------------------------------
/build-logic/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/build-logic/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | `kotlin-dsl`
3 | }
4 |
5 | repositories {
6 | google()
7 | mavenCentral()
8 | }
9 |
10 | gradlePlugin {
11 | plugins {
12 | create("build-logic") {
13 | id = "build-logic"
14 | implementationClass = "BuildLogic"
15 | }
16 | }
17 | }
18 |
19 | dependencies {
20 | implementation(libs.gradle.plugin.android)
21 | implementation(libs.gradle.plugin.kotlin)
22 | }
23 |
--------------------------------------------------------------------------------
/build-logic/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | dependencyResolutionManagement {
2 | versionCatalogs {
3 | create("libs") {
4 | from(files("../gradle/libs.versions.toml"))
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/build-logic/src/main/kotlin/BuildLogic.kt:
--------------------------------------------------------------------------------
1 | import org.gradle.api.Plugin
2 | import org.gradle.api.Project
3 |
4 | class BuildLogic : Plugin {
5 | override fun apply(project: Project) {
6 | // Do nothing.
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/build-logic/src/main/kotlin/Versions.kt:
--------------------------------------------------------------------------------
1 | object Versions {
2 | const val COMPILE_SDK = 35
3 | const val MIN_SDK = 24
4 | const val TARGET_SDK = 35
5 | const val NDK = "26.3.11579264"
6 | const val CMAKE = "3.22.1"
7 | const val JVM_TARGET = 17
8 | const val JVM_TARGET_PATCHES = 11
9 | }
10 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.parallel=true
2 | org.gradle.caching=true
3 | kotlin.code.style=official
4 | android.useAndroidX=true
5 | version=1.23.3
6 | ksp.useKSP2=true
7 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
5 | networkTimeout=10000
6 | validateDistributionUrl=true
7 | zipStoreBase=GRADLE_USER_HOME
8 | zipStorePath=wrapper/dists
9 |
--------------------------------------------------------------------------------
/integrations/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/integrations/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/account/model/Account.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.account.model
2 |
3 | class Account(val token: AccessToken, val cookie: CookieInfo)
4 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/account/model/BlacklistInfo.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.account.model
2 |
3 |
4 | import app.revanced.bilibili.model.serializer.SecondsAsDate
5 | import kotlinx.serialization.SerialName
6 | import kotlinx.serialization.Serializable
7 | import java.util.Date
8 |
9 | @Serializable
10 | class BlacklistInfo(
11 | @SerialName("uid")
12 | val uid: Long = 0,
13 | @SerialName("is_blacklist")
14 | val isBlacklist: Boolean = false,
15 | @SerialName("is_whitelist")
16 | val isWhitelist: Boolean = false,
17 | @SerialName("status")
18 | val status: Int = 0, // 0,正常,1 白名单,2 黑名单
19 | @SerialName("ban_until")
20 | val banUntil: SecondsAsDate = Date(),
21 | )
22 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/api/BrotliInputStream.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.api;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import java.io.IOException;
6 | import java.io.InputStream;
7 | import java.util.zip.GZIPInputStream;
8 |
9 | // superclass will replaced by patcher
10 | @Keep
11 | public class BrotliInputStream extends GZIPInputStream {
12 | public BrotliInputStream(InputStream in) throws IOException {
13 | // will replaced by patcher
14 | super(in);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/api/MossResponseOnError.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.api;
2 |
3 | import androidx.annotation.NonNull;
4 | import androidx.annotation.Nullable;
5 |
6 | import com.bilibili.lib.moss.api.MossException;
7 | import com.bilibili.lib.moss.api.MossResponseHandler;
8 |
9 | public interface MossResponseOnError {
10 | /**
11 | * @return true indicate error handled
12 | */
13 | boolean onError(@NonNull MossResponseHandler delegate, @Nullable MossException error);
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/api/MossResponseOnNext.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.api;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public interface MossResponseOnNext {
6 | @Nullable
7 | V onNext(@Nullable V v);
8 | }
9 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/meta/BottomItem.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.meta;
2 |
3 | import java.util.Objects;
4 |
5 | public class BottomItem {
6 | public String name;
7 | public String uri;
8 | public String id;
9 |
10 | public BottomItem(String name, String uri, String id) {
11 | this.name = name;
12 | this.uri = uri;
13 | this.id = id;
14 | }
15 |
16 | @Override
17 | public boolean equals(Object o) {
18 | if (this == o) return true;
19 | if (o == null || getClass() != o.getClass()) return false;
20 | BottomItem that = (BottomItem) o;
21 | return Objects.equals(name, that.name) && Objects.equals(uri, that.uri) && Objects.equals(id, that.id);
22 | }
23 |
24 | @Override
25 | public int hashCode() {
26 | return Objects.hash(name, uri, id);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/meta/Client.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.meta
2 |
3 | @Suppress("ConvertObjectToDataObject")
4 | sealed class Client(
5 | val mobiApp: String,
6 | val appKey: String,
7 | val appId: Int,
8 | val verCode: Int,
9 | val verName: String,
10 | ) {
11 | object Pink : Client("android", "1d8b6e7d45233436", 1, 7760700, "7.76.0")
12 | object Play : Client("android_i", "bb3101000e232e27", 2, 7750300, "3.19.0")
13 | object Hd : Client("android_hd", "dfca71928277209b", 5, 1460100, "1.46.0")
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/meta/HookFlags.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.meta;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | @Keep
6 | public class HookFlags {
7 | /**
8 | * hook flag to indicate stopping execute method and make a null result for method
9 | */
10 | public static final Object STOP_EXECUTION = new Object();
11 | }
12 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/meta/Season.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.meta
2 |
3 | class Season(val id: Long, val title: String)
4 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/meta/VideoHistory.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.meta
2 |
3 | data class VideoHistory @JvmOverloads constructor(
4 | var lastEpId: Int = -1,
5 | var histories: ArrayList- = arrayListOf(),
6 | ) {
7 | data class Item(var epId: Int, var progress: Long)
8 | }
9 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/meta/VideoInfo.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.meta
2 |
3 | data class VideoInfo(var cid: Long, var view: Any?)
4 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/meta/pegasus/BannersItem.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.meta.pegasus;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 | import com.bilibili.pegasus.api.model.BasicIndexItem;
7 | import com.bilibili.pegasus.api.modelv2.BannerItemV2;
8 |
9 | import java.util.Collections;
10 | import java.util.List;
11 |
12 | @Keep
13 | public class BannersItem extends BasicIndexItem {
14 | /**
15 | * codes will filled by patcher
16 | */
17 | @JSONField(deserialize = false, serialize = false)
18 | public List getBanners() {
19 | return Collections.emptyList();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/model/CouponInfo.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.model
2 |
3 | import kotlinx.serialization.SerialName
4 | import kotlinx.serialization.Serializable
5 |
6 | @Serializable
7 | class CouponInfo(
8 | @SerialName("list")
9 | val list: List
- = listOf(),
10 | ) {
11 | @Serializable
12 | class Item(
13 | @SerialName("type")
14 | val type: Int = 0,
15 | @SerialName("state")
16 | val state: Int = 0,
17 | @SerialName("next_receive_days")
18 | val nextReceiveDays: Long = 0,
19 | @SerialName("vip_type")
20 | val vipType: Int = 0
21 | )
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/CommentReplyUrlPatch.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.bapis.bilibili.main.community.reply.v1.Content;
6 |
7 | import app.revanced.bilibili.settings.Settings;
8 |
9 | public class CommentReplyUrlPatch {
10 | @Keep
11 | public static void filterUrls(Content content) {
12 | if (!Settings.BlockWordSearch.get()) return;
13 | var urls = content.getMutableUrlsMap();
14 | var iterator = urls.entrySet().iterator();
15 | while (iterator.hasNext()) {
16 | var entry = iterator.next();
17 | var url = entry.getValue().getAppUrlSchema();
18 | if (url.startsWith("bilibili://search?from=appcommentline_search"))
19 | iterator.remove();
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/CrashHandlerPatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches
2 |
3 | import android.system.Os
4 | import androidx.annotation.Keep
5 | import app.revanced.bilibili.utils.Logger
6 | import app.revanced.bilibili.utils.Utils
7 |
8 | object CrashHandlerPatch {
9 | @Keep
10 | @JvmStatic
11 | fun onCrash(thread: Thread, error: Throwable) {
12 | Logger.error(error) {
13 | "FATAL, crashed, pid: ${Os.getpid()}, tid: ${thread.id}, pname: ${Utils.currentProcessName()}, tname: ${thread.name}, error: "
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/DpiPatch.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches;
2 |
3 | import android.content.res.Resources;
4 |
5 | import androidx.annotation.Keep;
6 |
7 | import app.revanced.bilibili.settings.Settings;
8 |
9 | public class DpiPatch {
10 | public static final float displayScale = Float.parseFloat(Settings.DisplaySize.get());
11 |
12 | @Keep
13 | public static float onCronSetDisplayDensity(float density) {
14 | var scale = displayScale;
15 | if (scale == 0f)
16 | return density;
17 | if (density == 1.0f)
18 | return density;
19 | var sysDensity = Resources.getSystem().getDisplayMetrics().density;
20 | return sysDensity + scale;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/ForceCommentNavigablePatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches
2 |
3 | import androidx.annotation.Keep
4 | import app.revanced.bilibili.settings.Settings
5 | import com.bilibili.lib.ui.BaseFragment
6 |
7 | object ForceCommentNavigablePatch {
8 | @Keep
9 | @JvmStatic
10 | fun enabled() = Settings.TimeAirborne()
11 |
12 | @Keep
13 | @JvmStatic
14 | fun onPrimaryCommentMainFragmentCreate(fragment: BaseFragment) {
15 | if (enabled()) {
16 | fragment.arguments?.putBoolean("enableTimeParser", true)
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/HwCodecPatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches
2 |
3 | import android.os.Bundle
4 | import androidx.annotation.Keep
5 | import app.revanced.bilibili.settings.Settings
6 | import app.revanced.bilibili.utils.Logger
7 | import app.revanced.bilibili.utils.toJson
8 |
9 | @Keep
10 | object HwCodecPatch {
11 | @JvmStatic
12 | fun printOptionBundle(bundle: Bundle) {
13 | if (!Settings.Debug()) return
14 | Logger.debug { "Player options, ${bundle.toJson()}" }
15 | }
16 |
17 | @JvmStatic
18 | fun enableHwCodec(origin: Boolean): Boolean {
19 | Logger.debug { "Forcing enable hw codec: $origin" }
20 | return if (Settings.ForceHwCodec()) true else origin
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/PlayerPatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches
2 |
3 | import androidx.annotation.Keep
4 | import app.revanced.bilibili.utils.blkvPrefs
5 | import tv.danmaku.biliplayerv2.service.interact.biz.chronos.chronosrpc.methods.send.OnlineInfoChange
6 |
7 | object PlayerPatch {
8 | @Keep
9 | @JvmStatic
10 | fun onOnlineInfoChanged(info: OnlineInfoChange.Request): Boolean {
11 | return !blkvPrefs.getBoolean("pref_player_full_screen_online_num_key", true)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/PlayerToastPatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches
2 |
3 | import androidx.annotation.Keep
4 | import app.revanced.bilibili.settings.Settings
5 | import app.revanced.bilibili.utils.Logger
6 | import app.revanced.bilibili.utils.Utils
7 | import app.revanced.bilibili.utils.toJson
8 | import tv.danmaku.biliplayerv2.widget.toast.PlayerToast
9 |
10 | object PlayerToastPatch {
11 | @Keep
12 | @JvmStatic
13 | fun onShow(playerToast: PlayerToast): Boolean {
14 | val title = playerToast.getExtraString("extra_title")
15 | val extra = playerToast.mToastExtra
16 | Logger.debug { "PlayerToast.onShow: ${extra.toJson()}" }
17 | return Settings.RemoveVideoPopups().contains("other")
18 | && title == Utils.getString("dialog_warning_data_flow_ugc")
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/ApiHook.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp
2 |
3 | import android.util.Pair
4 | import java.net.HttpURLConnection
5 |
6 | abstract class ApiHook {
7 | protected val Int.isOk: Boolean
8 | inline get() = this == HttpURLConnection.HTTP_OK
9 |
10 | open fun shouldHookBefore(url: String, headers: Array): Boolean {
11 | return false
12 | }
13 |
14 | open fun hookBefore(url: String, headers: Array): Pair> {
15 | return Pair.create(url, headers)
16 | }
17 |
18 | open fun shouldHook(url: String, status: Int): Boolean {
19 | return false
20 | }
21 |
22 | open fun hook(url: String, status: Int, request: String, response: String): String {
23 | return response
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/BangumiCards.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import app.revanced.bilibili.patches.okhttp.ApiHook
4 | import app.revanced.bilibili.settings.Settings
5 |
6 | object BangumiCards : ApiHook() {
7 | override fun shouldHook(url: String, status: Int): Boolean {
8 | return Settings.BlockUpRcmdAds()
9 | && (url.contains("/pgc/season/player/cards")
10 | || url.contains("/pgc/season/player/ogv/cards"))
11 | && status.isOk
12 | }
13 |
14 | override fun hook(url: String, status: Int, request: String, response: String): String {
15 | return """{"code":0,"data":[]}"""
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/DisableAvif.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import android.util.Pair
4 | import app.revanced.bilibili.patches.okhttp.ApiHook
5 | import app.revanced.bilibili.settings.Settings
6 |
7 | object DisableAvif : ApiHook() {
8 | private val avifRegex = Regex("""^(https?://[^@]+@\w*)\.avif$""")
9 |
10 | override fun shouldHookBefore(url: String, headers: Array): Boolean {
11 | return Settings.DisableAvif() && url.endsWith(".avif") && url.matches(avifRegex)
12 | }
13 |
14 | override fun hookBefore(url: String, headers: Array): Pair> {
15 | avifRegex.replace(url) {
16 | val (_, prefix) = it.groupValues
17 | "$prefix.webp"
18 | }.let {
19 | return Pair.create(it, headers)
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/DmAd.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import app.revanced.bilibili.patches.okhttp.ApiHook
4 | import app.revanced.bilibili.settings.Settings
5 | import app.revanced.bilibili.utils.toJSONObject
6 | import org.json.JSONArray
7 |
8 | object DmAd : ApiHook() {
9 | override fun shouldHook(url: String, status: Int): Boolean {
10 | return Settings.BlockUpRcmdAds() && url.contains("/x/v2/dm/ad") && status.isOk
11 | }
12 |
13 | override fun hook(url: String, status: Int, request: String, response: String): String {
14 | val json = response.toJSONObject()
15 | json.optJSONObject("data")?.put("ads", JSONArray())
16 | return json.toString()
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/DmQoeShow.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import app.revanced.bilibili.patches.okhttp.ApiHook
4 | import app.revanced.bilibili.settings.Settings
5 |
6 | object DmQoeShow : ApiHook() {
7 | override fun shouldHook(url: String, status: Int): Boolean {
8 | return Settings.BlockDmFeedback()
9 | && url.contains("/x/v2/dm/qoe/show")
10 | && status.isOk
11 | }
12 |
13 | override fun hook(url: String, status: Int, request: String, response: String): String {
14 | return """{"code":0,"data":{"show":false,"info":null}}"""
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/GrpcUnlockAreaLimitForPlay.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import app.revanced.bilibili.meta.Client
4 | import app.revanced.bilibili.patches.okhttp.BaseFakeClientGrpcHook
5 | import app.revanced.bilibili.patches.protobuf.MossPatch
6 | import app.revanced.bilibili.settings.Settings
7 | import app.revanced.bilibili.utils.Utils
8 |
9 | object GrpcUnlockAreaLimitForPlay : BaseFakeClientGrpcHook() {
10 | override val fakeToClient: Client
11 | get() = Client.Pink
12 |
13 | override fun shouldHookBefore(url: String, headers: Array): Boolean {
14 | return Settings.UnlockAreaLimit() && Utils.isPlay()
15 | && MossPatch.fakeToPinkForUnlockAreaLimitApis.any { url.endsWith(it) }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/SearchByType.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import android.net.Uri
4 | import app.revanced.bilibili.patches.okhttp.ApiHook
5 | import app.revanced.bilibili.patches.okhttp.BangumiSeasonHook
6 |
7 | /**
8 | * for hd
9 | */
10 | object SearchByType : ApiHook() {
11 | override fun shouldHook(url: String, status: Int): Boolean {
12 | return status.isOk && url.contains("/x/v2/search/type") && url.run {
13 | Uri.parse(this).getQueryParameter("type")?.let {
14 | BangumiSeasonHook.extraSearchHandleable(it.toInt())
15 | } ?: false
16 | }
17 | }
18 |
19 | override fun hook(url: String, status: Int, request: String, response: String): String {
20 | return BangumiSeasonHook.handleExtraSearchForHd(url)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/SearchDefaultWords.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import app.revanced.bilibili.patches.okhttp.ApiHook
4 | import app.revanced.bilibili.settings.Settings
5 | import app.revanced.bilibili.utils.toJSONObject
6 | import org.json.JSONObject
7 |
8 | object SearchDefaultWords : ApiHook() {
9 | override fun shouldHook(url: String, status: Int): Boolean {
10 | return url.contains("/x/v2/search/defaultwords") && status.isOk
11 | && Settings.PurifySearchTypes().contains("words")
12 | }
13 |
14 | override fun hook(url: String, status: Int, request: String, response: String): String {
15 | return response.toJSONObject().apply {
16 | put("data", JSONObject.NULL)
17 | }.toString()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/UnlockEpisodesForPlay.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import app.revanced.bilibili.meta.Client
4 | import app.revanced.bilibili.patches.okhttp.BaseFakeClientRestHook
5 | import app.revanced.bilibili.settings.Settings
6 | import app.revanced.bilibili.utils.Utils
7 |
8 | object UnlockEpisodesForPlay : BaseFakeClientRestHook() {
9 | private val apis = arrayOf(
10 | "/pgc/view/v2/app/season",
11 | "/pgc/view/v2/app/fav/season",
12 | "/pgc/view/v2/app/eps",
13 | )
14 |
15 | override val fakeToClient: Client
16 | get() = Client.Pink
17 |
18 | override fun shouldHookBefore(url: String, headers: Array): Boolean {
19 | return Settings.UnlockAreaLimit() && Utils.isPlay()
20 | && apis.any { url.contains(it) }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/okhttp/hooks/ViewLikeTriple.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.okhttp.hooks
2 |
3 | import app.revanced.bilibili.patches.okhttp.ApiHook
4 | import app.revanced.bilibili.settings.Settings
5 | import app.revanced.bilibili.utils.toJSONObject
6 |
7 | object ViewLikeTriple : ApiHook() {
8 | override fun shouldHook(url: String, status: Int): Boolean {
9 | return Settings.BlockFanGuide() && url.contains("/x/v2/view/like/triple") && status.isOk
10 | }
11 |
12 | override fun hook(url: String, status: Int, request: String, response: String): String {
13 | return response.toJSONObject().apply {
14 | optJSONObject("data")?.put("prompt", false)
15 | }.toString()
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/protobuf/hooks/SearchByType.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.protobuf.hooks
2 |
3 | import app.revanced.bilibili.patches.okhttp.BangumiSeasonHook
4 | import app.revanced.bilibili.patches.protobuf.MossHook
5 | import com.bapis.bilibili.polymer.app.search.v1.SearchByTypeRequest
6 | import com.bapis.bilibili.polymer.app.search.v1.SearchByTypeResponse
7 | import com.google.protobuf.GeneratedMessageLite
8 |
9 | object SearchByType : MossHook() {
10 | override val async: Boolean = true
11 |
12 | override fun shouldHook(req: GeneratedMessageLite<*, *>): Boolean {
13 | return req is SearchByTypeRequest && BangumiSeasonHook.extraSearchHandleable(req.type)
14 | }
15 |
16 | override fun hookBefore(req: SearchByTypeRequest): Any {
17 | return BangumiSeasonHook.handleExtraSearch(req)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/protobuf/hooks/SearchDefaultWords.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.protobuf.hooks
2 |
3 | import app.revanced.bilibili.meta.HookFlags
4 | import app.revanced.bilibili.patches.protobuf.MossHook
5 | import app.revanced.bilibili.settings.Settings
6 | import com.bapis.bilibili.app.interfaces.v1.DefaultWordsReq
7 | import com.google.protobuf.GeneratedMessageLite
8 |
9 | object SearchDefaultWords : MossHook() {
10 | override fun shouldHook(req: GeneratedMessageLite<*, *>): Boolean {
11 | return req is DefaultWordsReq
12 | }
13 |
14 | override fun hookBefore(req: DefaultWordsReq): Any? {
15 | if (Settings.PurifySearchTypes().contains("words"))
16 | return HookFlags.STOP_EXECUTION
17 | return null
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/protobuf/hooks/ViewLike.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.protobuf.hooks
2 |
3 | import app.revanced.bilibili.patches.protobuf.MossHook
4 | import app.revanced.bilibili.settings.Settings
5 | import com.bapis.bilibili.app.view.v1.LikeReply
6 | import com.bapis.bilibili.app.view.v1.LikeReq
7 | import com.bilibili.lib.moss.api.MossException
8 | import com.google.protobuf.GeneratedMessageLite
9 |
10 | object ViewLike : MossHook() {
11 | override fun shouldHook(req: GeneratedMessageLite<*, *>): Boolean {
12 | return req is LikeReq
13 | }
14 |
15 | override fun hookAfter(req: LikeReq, reply: LikeReply?, error: MossException?): LikeReply? {
16 | if (Settings.AutoLike())
17 | reply?.clearToast()
18 | return super.hookAfter(req, reply, error)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/patches/protobuf/hooks/ViewTFInfo.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.patches.protobuf.hooks
2 |
3 | import app.revanced.bilibili.meta.HookFlags
4 | import app.revanced.bilibili.patches.protobuf.MossHook
5 | import app.revanced.bilibili.settings.Settings
6 | import app.revanced.bilibili.utils.Utils
7 | import com.bapis.bilibili.app.view.v1.TFInfoReply
8 | import com.bapis.bilibili.app.view.v1.TFInfoReq
9 | import com.google.protobuf.GeneratedMessageLite
10 |
11 | object ViewTFInfo : MossHook() {
12 | override fun shouldHook(req: GeneratedMessageLite<*, *>): Boolean {
13 | return !Utils.isHd() && req is TFInfoReq
14 | }
15 |
16 | override fun hookBefore(req: TFInfoReq): Any? {
17 | if (Settings.RemoveVideoPopups().contains("other")) // 免流引导
18 | return HookFlags.STOP_EXECUTION
19 | return null
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/settings/ModulePreferenceManager.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.settings
2 |
3 | import android.annotation.SuppressLint
4 | import android.content.Context
5 | import android.content.SharedPreferences
6 | import androidx.annotation.Keep
7 | import androidx.preference.PreferenceManager
8 |
9 | @Keep
10 | @SuppressLint("RestrictedApi")
11 | class ModulePreferenceManager(
12 | context: Context,
13 | val prefs: SharedPreferences
14 | ) : PreferenceManager(context) {
15 | override fun getSharedPreferences(): SharedPreferences = prefs
16 | }
17 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/settings/fragments/CustomizeSearchFragment.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.settings.fragments
2 |
3 | import android.os.Bundle
4 | import app.revanced.bilibili.settings.search.annotation.SettingFragment
5 | import app.revanced.bilibili.utils.Utils
6 |
7 | @SettingFragment("biliroaming_setting_customize_search")
8 | class CustomizeSearchFragment : BiliRoamingBaseSettingFragment() {
9 | override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
10 | super.onCreatePreferences(savedInstanceState, rootKey)
11 | disablePreference("search_type", PrefsDisableReason.AppVersion) {
12 | Utils.isHd()
13 | }
14 | disablePreference("search_keywords", PrefsDisableReason.AppVersion) {
15 | Utils.isHd()
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/settings/fragments/FilterHomeRcmdFragment.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.settings.fragments
2 |
3 | import android.os.Bundle
4 | import androidx.preference.Preference
5 | import app.revanced.bilibili.settings.search.annotation.SettingFragment
6 |
7 | @SettingFragment("biliroaming_setting_filter_home")
8 | class FilterHomeRcmdFragment : BiliRoamingBaseSettingFragment() {
9 | override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
10 | super.onCreatePreferences(savedInstanceState, rootKey)
11 | findPreference("filter_home_recommend_by_keyword")
12 | ?.extras?.putString(FilterHomeRcmdByKeywordFragment.EXTRA_FROM, "home")
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/settings/fragments/FilterPopularFragment.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.settings.fragments
2 |
3 | import android.os.Bundle
4 | import androidx.preference.Preference
5 | import app.revanced.bilibili.settings.search.annotation.SettingFragment
6 |
7 | @SettingFragment("biliroaming_setting_filter_popular")
8 | class FilterPopularFragment : BiliRoamingBaseSettingFragment() {
9 | override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
10 | super.onCreatePreferences(savedInstanceState, rootKey)
11 | findPreference("filter_popular_by_keyword")
12 | ?.extras?.putString(FilterHomeRcmdByKeywordFragment.EXTRA_FROM, "popular")
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/settings/fragments/FilterStoryFragment.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.settings.fragments
2 |
3 | import android.os.Bundle
4 | import androidx.preference.Preference
5 | import app.revanced.bilibili.settings.search.annotation.SettingFragment
6 |
7 | @SettingFragment("biliroaming_setting_filter_story")
8 | class FilterStoryFragment : BiliRoamingBaseSettingFragment() {
9 | override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
10 | super.onCreatePreferences(savedInstanceState, rootKey)
11 | findPreference("filter_story_by_keyword")
12 | ?.extras?.putString(FilterHomeRcmdByKeywordFragment.EXTRA_FROM, "story")
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/settings/search/annotation/SettingFragment.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.settings.search.annotation
2 |
3 | @Target(AnnotationTarget.CLASS)
4 | @Retention(AnnotationRetention.RUNTIME)
5 | annotation class SettingFragment(val prefsXmlName: String)
6 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/utils/Widgets.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.utils;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 |
7 | @SuppressWarnings("unchecked")
8 | public class Widgets {
9 | public static T createTintView(Context context, String name) {
10 | //noinspection DataFlowIssue
11 | return (T) LayoutInflater.from(context).getFactory2().onCreateView(name, context, null);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/widget/OnClickOriginListener.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.widget;
2 |
3 | import android.view.View;
4 |
5 | public interface OnClickOriginListener {
6 | void onClick_Origin(View view);
7 | }
8 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/widget/OnLongClickOriginListener.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.widget;
2 |
3 | import android.view.View;
4 |
5 | public interface OnLongClickOriginListener {
6 | boolean onLongClick_Origin(View view);
7 | }
8 |
--------------------------------------------------------------------------------
/integrations/app/src/main/java/app/revanced/bilibili/widget/OnSwitchDarkModeOriginListener.java:
--------------------------------------------------------------------------------
1 | package app.revanced.bilibili.widget;
2 |
3 | public interface OnSwitchDarkModeOriginListener {
4 | void switchDarkMode_Origin(boolean report);
5 | }
6 |
--------------------------------------------------------------------------------
/integrations/app/src/main/jni/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.22.1)
2 | project(biliroamingx)
3 |
4 | enable_language(CXX C)
5 | set(CMAKE_CXX_STANDARD 20)
6 | set(CMAKE_C_STANDARD 11)
7 |
8 | macro(SET_OPTION option value)
9 | set(${option} ${value} CACHE INTERNAL "" FORCE)
10 | endmacro()
11 |
12 | set(LIBS_DIR ../../../../libs)
13 |
14 | SET_OPTION(DOBBY_DEBUG OFF)
15 | SET_OPTION(DOBBY_GENERATE_SHARED OFF)
16 | SET_OPTION(Plugin.SymbolResolver OFF)
17 | add_subdirectory(${LIBS_DIR}/Dobby dobby)
18 |
19 | add_library(${PROJECT_NAME} SHARED biliroamingx.cc)
20 | find_library(log-lib log)
21 |
22 | target_link_libraries(${PROJECT_NAME} PUBLIC dobby ${log-lib})
23 |
--------------------------------------------------------------------------------
/integrations/dummy/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/integrations/dummy/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias(libs.plugins.android.library)
3 | }
4 |
5 | setupLibraryModule {
6 | namespace = "app.revanced.bilibili.dummy"
7 | }
8 |
9 | dependencies {
10 | api(files("libs/grpc_apis.jar"))
11 | api(libs.fastjson)
12 | api(libs.protobuf)
13 | api(libs.androidx.annotation)
14 | api(libs.androidx.appcompat)
15 | api(libs.androidx.preference)
16 | api(libs.androidx.recyclerview)
17 | }
18 |
--------------------------------------------------------------------------------
/integrations/dummy/libs/grpc_apis.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/integrations/dummy/libs/grpc_apis.jar
--------------------------------------------------------------------------------
/integrations/dummy/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/integrations/dummy/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/android/app/ActivityThread.java:
--------------------------------------------------------------------------------
1 | package android.app;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public class ActivityThread {
6 | public static ActivityThread currentActivityThread() {
7 | throw new UnsupportedOperationException("Stub");
8 | }
9 |
10 | public static String currentProcessName() {
11 | throw new UnsupportedOperationException("Stub");
12 | }
13 |
14 | public static String currentPackageName() {
15 | throw new UnsupportedOperationException("Stub");
16 | }
17 |
18 | @Nullable
19 | public Application getApplication() {
20 | throw new UnsupportedOperationException("Stub");
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/android/support/v4/media/session/PlaybackStateCompat.java:
--------------------------------------------------------------------------------
1 | package android.support.v4.media.session;
2 |
3 | import android.os.Bundle;
4 |
5 | import java.util.List;
6 |
7 | public class PlaybackStateCompat {
8 | // method will added by patcher
9 | public long getActionsForBiliRoaming() {
10 | throw new UnsupportedOperationException("Stub");
11 | }
12 |
13 | // method will added by patcher
14 | public List getCustomActionsForBiliRoaming() {
15 | throw new UnsupportedOperationException("Stub");
16 | }
17 |
18 | public static final class CustomAction {
19 | // access flag will change to public by patcher
20 | public CustomAction(String action, CharSequence name, int icon, Bundle extras) {
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/android/internal/util/XmlUtils.java:
--------------------------------------------------------------------------------
1 | package com.android.internal.util;
2 |
3 | import org.xmlpull.v1.XmlPullParserException;
4 |
5 | import java.io.InputStream;
6 | import java.util.HashMap;
7 |
8 | public class XmlUtils {
9 | public static HashMap readMapXml(InputStream in)
10 | throws XmlPullParserException, java.io.IOException {
11 | throw new UnsupportedOperationException();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/ad/adview/videodetail/danmakuv2/model/Dm.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.ad.adview.videodetail.danmakuv2.model;
2 |
3 | public class Dm {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/ad/adview/videodetail/danmakuv2/model/DmAdvert.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.ad.adview.videodetail.danmakuv2.model;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import java.util.List;
6 |
7 | public class DmAdvert {
8 | private List ads;
9 |
10 | @Nullable
11 | public List getAds() {
12 | throw new UnsupportedOperationException("Stub");
13 | }
14 |
15 | public void setAds(List list) {
16 | this.ads = list;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/adcommon/basic/model/FeedAdInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.adcommon.basic.model;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 |
7 | @Keep
8 | public class FeedAdInfo {
9 | @JSONField(name = "card_type")
10 | private long feedInfoCardType;
11 |
12 | public final long getFeedInfoCardType() {
13 | return this.feedInfoCardType;
14 | }
15 |
16 | public final void setFeedInfoCardType(long j14) {
17 | this.feedInfoCardType = j14;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/adcommon/basic/model/SourceContent.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.adcommon.basic.model;
2 |
3 | public class SourceContent {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceArchiveVideo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceArchiveVideo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceArticleList.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceArticleList {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceAudioList.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceAudioList {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceComicList.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceComicList {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceFansDress.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceFansDress {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceFavoriteBox.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceFavoriteBox {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceGuard.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceGuard {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceNftShowModule.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceNftShowModule {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceSeason.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceSeason {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceUgcSeasonList.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceUgcSeasonList {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliSpaceUserGame.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliSpaceUserGame {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/BiliUserLiveEntry.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class BiliUserLiveEntry {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/authorspace/api/ContractResource.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.authorspace.api;
2 |
3 | public class ContractResource {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/comm/list/common/api/model/PlayerArgs.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.comm.list.common.api.model;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public class PlayerArgs {
6 | public long aid;
7 | public long cid;
8 | public int contentMode;
9 | public long epid;
10 | public int fakeDuration;
11 | public boolean hidePlayButton;
12 | public int isLive;
13 | public int isPreview;
14 | public int manualPlay;
15 | public long pgcSeasonId;
16 | public int reportHistory;
17 | public int reportRequiredPlayDuration;
18 | public int reportRequiredTime;
19 | public long roomId;
20 | public int subtype;
21 | @Nullable
22 | public String videoType;
23 | }
24 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/comm/list/common/data/DislikeReason.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.comm.list.common.data;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public class DislikeReason {
6 | @Nullable
7 | public String extra;
8 | public long id;
9 | @Nullable
10 | public String name;
11 | @Nullable
12 | public String toast;
13 | }
14 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/comm/list/common/data/ThreePointItem.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.comm.list.common.data;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import java.util.List;
6 |
7 | public class ThreePointItem {
8 | public int defaultId;
9 | @Nullable
10 | public String icon;
11 | public long id;
12 | @Nullable
13 | public List reasons;
14 | public int selected;
15 | @Nullable
16 | public String selectedIcon;
17 | @Nullable
18 | public String selectedTitle;
19 | @Nullable
20 | public String subtitle;
21 | @Nullable
22 | public String title;
23 | public String toast;
24 | @Nullable
25 | public String type;
26 | @Nullable
27 | public String url;
28 | }
29 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/gemini/ugc/feature/share/ShareIconResult.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.gemini.ugc.feature.share;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | @Keep
6 | public class ShareIconResult {
7 | }
8 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/app/preferences/BiliPreferencesActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.app.preferences;
2 |
3 | import android.os.Bundle;
4 |
5 | import androidx.annotation.Nullable;
6 | import androidx.appcompat.app.AppCompatActivity;
7 |
8 | import com.bilibili.lib.ui.BasePreferenceFragment;
9 |
10 | public class BiliPreferencesActivity extends AppCompatActivity {
11 | public static class BiliPreferencesFragment extends BasePreferenceFragment {
12 | @Override
13 | public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/biz/reverse/bean/LiveRoomReserveInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.biz.reverse.bean;
2 |
3 | public class LiveRoomReserveInfo {
4 | public boolean showReserveDetail;
5 | }
6 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/biz/shopping/beans/LiveGoodsCardDetail.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.biz.shopping.beans;
2 |
3 | public class LiveGoodsCardDetail {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/biz/shopping/beans/LiveGoodsCardInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.biz.shopping.beans;
2 |
3 | public class LiveGoodsCardInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/biz/shopping/beans/LiveShoppingGotoBuyInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.biz.shopping.beans;
2 |
3 | public class LiveShoppingGotoBuyInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/biz/shopping/beans/LiveShoppingInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.biz.shopping.beans;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public class LiveShoppingInfo {
6 | @Nullable
7 | public LiveShoppingRecommendCardGoodsDetail recommendCardDetail;
8 | @Nullable
9 | public LiveGoodsCardDetail shoppingCardDetail;
10 | }
11 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/biz/shopping/beans/LiveShoppingRecommendCardGoodsDetail.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.biz.shopping.beans;
2 |
3 | public class LiveShoppingRecommendCardGoodsDetail {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/ui/roomv3/LiveRoomActivityV3.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.ui.roomv3;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | public class LiveRoomActivityV3 extends AppCompatActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/room/ui/roomv3/player/container/LiveRoomPlayerContainerView.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.room.ui.roomv3.player.container;
2 |
3 | import android.content.Context;
4 | import android.widget.FrameLayout;
5 |
6 | import androidx.annotation.NonNull;
7 |
8 | public class LiveRoomPlayerContainerView extends FrameLayout {
9 | public LiveRoomPlayerContainerView(@NonNull Context context) {
10 | super(context);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/attentioncard/LiveRoomRecommendCard.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.attentioncard;
2 |
3 | public class LiveRoomRecommendCard {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/roominfo/BiliLiveRoomBanner.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.roominfo;
2 |
3 | public class BiliLiveRoomBanner {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/roominfo/LiveRoomDanmakuVoteCardInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.roominfo;
2 |
3 | public class LiveRoomDanmakuVoteCardInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/roominfo/LiveRoomFollowCardInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.roominfo;
2 |
3 | public class LiveRoomFollowCardInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/roominfo/LiveRoomMatchCardBaseCard.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.roominfo;
2 |
3 | /* compiled from: BL */
4 | /* loaded from: classes4.dex */
5 | public class LiveRoomMatchCardBaseCard {
6 | private int order;
7 |
8 | public final int getOrder() {
9 | return this.order;
10 | }
11 |
12 | public final void setOrder(int i14) {
13 | this.order = i14;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/roominfo/LiveRoomWishlistCardInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.roominfo;
2 |
3 | public class LiveRoomWishlistCardInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/userinfo/BiliLiveRoomUserTaskInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.userinfo;
2 |
3 | public class BiliLiveRoomUserTaskInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/userinfo/FunctionCard.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.userinfo;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import com.bilibili.bililive.videoliveplayer.net.beans.gift.LiveRoomSendGiftRemindCardInfo;
6 |
7 | public class FunctionCard {
8 | @Nullable
9 | public LiveRoomSendGiftRemindCardInfo sengGiftCard;
10 | }
11 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gateway/userinfo/LiveRoomUserResearch.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gateway.userinfo;
2 |
3 | public class LiveRoomUserResearch {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/gift/LiveRoomSendGiftRemindCardInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.gift;
2 |
3 | public class LiveRoomSendGiftRemindCardInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/giftpendant/LiveGiftPendantInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.giftpendant;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 |
7 | public class LiveGiftPendantInfo {
8 | @JSONField(name = "gift_star_process")
9 | @Nullable
10 | public LiveGiftStarPendantInfo liveGiftStarPendantInfo;
11 | @JSONField(name = "wish_process")
12 | @Nullable
13 | public LiveWishListInfo liveWishListPendantInfo;
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/giftpendant/LiveGiftStarPendantInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.giftpendant;
2 |
3 | public class LiveGiftStarPendantInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/giftpendant/LiveWishListInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.giftpendant;
2 |
3 | public class LiveWishListInfo {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/mask/AreaMaskItem.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.mask;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 |
7 | import org.jetbrains.annotations.Nullable;
8 |
9 | import kotlin.jvm.JvmField;
10 |
11 | /* compiled from: BL */
12 | @Keep
13 | /* loaded from: classes4.dex */
14 | public final class AreaMaskItem {
15 | @JvmField
16 | @JSONField(name = "height")
17 | public float height;
18 | @JvmField
19 | @JSONField(name = "x")
20 | @Nullable
21 | public Float locationX;
22 | @JvmField
23 | @JSONField(name = "y")
24 | @Nullable
25 | public Float locationY;
26 | @JvmField
27 | @JSONField(name = "live_screen_type")
28 | public int screenType = 1;
29 | @JvmField
30 | @JSONField(name = "width")
31 | public float width;
32 | }
33 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/mask/AreaMasks.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.mask;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 |
7 | import org.jetbrains.annotations.Nullable;
8 |
9 | import java.util.List;
10 |
11 | import kotlin.jvm.JvmField;
12 |
13 | /* compiled from: BL */
14 | @Keep
15 | /* loaded from: classes4.dex */
16 | public final class AreaMasks {
17 | @JvmField
18 | @JSONField(name = "horizontal_masks")
19 | @Nullable
20 | public List horizontalMasks;
21 | @JvmField
22 | @JSONField(name = "vertical_masks")
23 | @Nullable
24 | public List verticalMasks;
25 | }
26 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/mask/LiveAreaMaskInfo.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.mask;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 |
7 | import org.jetbrains.annotations.Nullable;
8 |
9 | import kotlin.jvm.JvmField;
10 |
11 | /* compiled from: BL */
12 | @Keep
13 | /* loaded from: classes4.dex */
14 | public final class LiveAreaMaskInfo {
15 | @JvmField
16 | @JSONField(name = "area_masks")
17 | @Nullable
18 | public AreaMasks areaMasks;
19 | }
20 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bililive/videoliveplayer/net/beans/playtogether/LivePlayTogetherInfoUser.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bililive.videoliveplayer.net.beans.playtogether;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 |
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | import kotlin.jvm.JvmField;
10 |
11 | /* compiled from: BL */
12 | @Keep
13 | /* loaded from: classes4.dex */
14 | public final class LivePlayTogetherInfoUser {
15 |
16 | @JvmField
17 | @JSONField(name = "notice_count")
18 | public int noticeCount;
19 |
20 | @JvmField
21 | @JSONField(name = "user_status")
22 | public int userStatus = 1;
23 |
24 | @JvmField
25 | @JSONField(name = "notice_str")
26 | @NotNull
27 | public String noticeStr = "";
28 | }
29 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bplus/followingcard/widget/EllipsizingTextView.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bplus.followingcard.widget;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.widget.TextView;
6 |
7 | @SuppressLint("AppCompatCustomView")
8 | public class EllipsizingTextView extends TextView {
9 | public EllipsizingTextView(Context context) {
10 | super(context);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bplus/im/business/model/BaseMessage.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bplus.im.business.model;
2 |
3 | import com.bilibili.bplus.im.entity.ChatMessage;
4 |
5 | /* compiled from: BL */
6 | /* loaded from: classes2.dex */
7 | public abstract class BaseMessage {
8 | protected ChatMessage mDbMessage;
9 |
10 | public ChatMessage getDbMessage() {
11 | return this.mDbMessage;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bplus/im/entity/ChatMessage.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bplus.im.entity;
2 |
3 | public class ChatMessage {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bplus/im/entity/User.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bplus.im.entity;
2 |
3 | public class User {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/bplus/im/setting/MessageTipItemActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.bplus.im.setting;
2 |
3 | import androidx.fragment.app.FragmentActivity;
4 |
5 | public class MessageTipItemActivity extends FragmentActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/comm/charge/api/ChargeRankResult.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.comm.charge.api;
2 |
3 | public class ChargeRankResult {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/compose/theme/ThemeDayNight.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.compose.theme;
2 |
3 | /* compiled from: BL */
4 | /* loaded from: classes.dex */
5 | public enum ThemeDayNight {
6 | Day,
7 | Night
8 | }
9 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/cron/ThreadLocalUtils.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.cron;
2 |
3 | import androidx.annotation.NonNull;
4 |
5 | public class ThreadLocalUtils {
6 |
7 | public interface InstanceCreator {
8 | @NonNull
9 | T create();
10 | }
11 |
12 | ThreadLocalUtils() {
13 | }
14 |
15 | @NonNull
16 | public static T getInstance(@NonNull ThreadLocal threadLocal, @NonNull InstanceCreator instanceCreator) {
17 | T t = threadLocal.get();
18 | if (t == null) {
19 | T create = instanceCreator.create();
20 | threadLocal.set(create);
21 | return create;
22 | }
23 | return t;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/lib/homepage/mine/MenuGroup.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.lib.homepage.mine;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import java.util.List;
6 |
7 | public class MenuGroup {
8 |
9 | @Nullable
10 | public MineButton button;
11 | @Nullable
12 | public List
- itemList;
13 | public int style;
14 | public String title;
15 |
16 | public static class Item {
17 | public String icon;
18 | public long id;
19 | public int redDot;
20 | public boolean redDotRorNew;
21 | public String title;
22 | public String uri;
23 | }
24 |
25 | public static class MineButton {
26 | public String icon;
27 | public String jumpUrl;
28 | public int style;
29 | public String text;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/lib/imageviewer/MediaViewerActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.lib.imageviewer;
2 |
3 | import android.app.Activity;
4 |
5 | public class MediaViewerActivity extends Activity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/lib/imageviewer/fragment/ImageFragment.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.lib.imageviewer.fragment;
2 |
3 | import androidx.fragment.app.Fragment;
4 |
5 | public class ImageFragment extends Fragment {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/lib/ui/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.lib.ui;
2 |
3 | import androidx.fragment.app.Fragment;
4 |
5 | public class BaseFragment extends Fragment {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/lib/ui/BasePreferenceFragment.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.lib.ui;
2 |
3 | import androidx.preference.PreferenceFragmentCompat;
4 |
5 | public abstract class BasePreferenceFragment extends PreferenceFragmentCompat {
6 | protected void refreshLine() {
7 | }
8 |
9 | public final void setPaddingBottom(int bottom) {
10 | }
11 |
12 | public final void setPaddingLeft(int left) {
13 | }
14 |
15 | public final void setPaddingRight(int right) {
16 | }
17 |
18 | public final void setPaddingTop(int top) {
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintButton.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.widget.RadioButton;
7 |
8 | @SuppressLint("AppCompatCustomView")
9 | public class TintButton extends RadioButton {
10 | public TintButton(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintButton(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintButton(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public void setBackgroundTintList(int i14) {
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintCheckBox.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.widget.CheckBox;
7 |
8 | @SuppressLint("AppCompatCustomView")
9 | public class TintCheckBox extends CheckBox {
10 | public TintCheckBox(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintCheckBox(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintCheckBox(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public void setCompoundButtonTintList(int resId) {
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintCheckedTextView.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.widget.CheckedTextView;
7 |
8 | @SuppressLint("AppCompatCustomView")
9 | public class TintCheckedTextView extends CheckedTextView {
10 | public TintCheckedTextView(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintCheckedTextView(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintCheckedTextView(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintEditText.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.widget.EditText;
7 |
8 | @SuppressLint("AppCompatCustomView")
9 | public class TintEditText extends EditText {
10 | public TintEditText(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintEditText(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintEditText(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public TintEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
23 | super(context, attrs, defStyleAttr, defStyleRes);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintImageView.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.widget.ImageView;
7 |
8 | @SuppressLint("AppCompatCustomView")
9 | public class TintImageView extends ImageView {
10 | public TintImageView(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintImageView(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintImageView(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public void setImageTintList(int i14) {
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintLinearLayout.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.widget.LinearLayout;
6 |
7 | import androidx.annotation.Nullable;
8 |
9 | public class TintLinearLayout extends LinearLayout {
10 | public TintLinearLayout(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintLinearLayout(Context context, @Nullable AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public TintLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
23 | super(context, attrs, defStyleAttr, defStyleRes);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintProgressBar.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.widget.ProgressBar;
6 |
7 | public class TintProgressBar extends ProgressBar {
8 | public TintProgressBar(Context context) {
9 | super(context);
10 | }
11 |
12 | public TintProgressBar(Context context, AttributeSet attrs) {
13 | super(context, attrs);
14 | }
15 |
16 | public TintProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
17 | super(context, attrs, defStyleAttr);
18 | }
19 |
20 | public TintProgressBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
21 | super(context, attrs, defStyleAttr, defStyleRes);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintRadioButton.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.widget.RadioButton;
7 |
8 | @SuppressLint("AppCompatCustomView")
9 | public class TintRadioButton extends RadioButton {
10 | public TintRadioButton(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintRadioButton(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintRadioButton(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public void setCompoundButtonTintList(int resId) {
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintRelativeLayout.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.widget.RelativeLayout;
6 |
7 | public class TintRelativeLayout extends RelativeLayout {
8 | public TintRelativeLayout(Context context) {
9 | super(context);
10 | }
11 |
12 | public TintRelativeLayout(Context context, AttributeSet attrs) {
13 | super(context, attrs);
14 | }
15 |
16 | public TintRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
17 | super(context, attrs, defStyleAttr);
18 | }
19 |
20 | public TintRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
21 | super(context, attrs, defStyleAttr, defStyleRes);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintSwitchCompat.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 |
6 | import androidx.appcompat.widget.SwitchCompat;
7 |
8 | public class TintSwitchCompat extends SwitchCompat {
9 | public TintSwitchCompat(Context context) {
10 | super(context);
11 | }
12 |
13 | public TintSwitchCompat(Context context, AttributeSet attrs) {
14 | super(context, attrs);
15 | }
16 |
17 | public TintSwitchCompat(Context context, AttributeSet attrs, int defStyleAttr) {
18 | super(context, attrs, defStyleAttr);
19 | }
20 |
21 | public void setThumbTintList(int i14) {
22 | }
23 |
24 | public void setTrackTintList(int i14) {
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintTextView.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.widget.TextView;
7 |
8 | @SuppressLint("AppCompatCustomView")
9 | public class TintTextView extends TextView {
10 | public TintTextView(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintTextView(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintTextView(Context context, AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/magicasakura/widgets/TintView.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.magicasakura.widgets;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.view.View;
6 |
7 | import androidx.annotation.Nullable;
8 |
9 | public class TintView extends View {
10 | public TintView(Context context) {
11 | super(context);
12 | }
13 |
14 | public TintView(Context context, @Nullable AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public TintView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
19 | super(context, attrs, defStyleAttr);
20 | }
21 |
22 | public TintView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
23 | super(context, attrs, defStyleAttr, defStyleRes);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/multitypeplayerV2/MultiTypeVideoContentActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.multitypeplayerV2;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | public class MultiTypeVideoContentActivity extends AppCompatActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/okretro/BaseResponse.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.okretro;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public abstract class BaseResponse {
6 | public int code;
7 | @Nullable
8 | public String message;
9 | public int ttl;
10 |
11 | public boolean isSuccess() {
12 | return code == 0;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/okretro/GeneralResponse.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.okretro;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | @Keep
6 | public class GeneralResponse extends BaseResponse {
7 | public T data;
8 | }
9 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/pegasus/api/modelv2/Args.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.pegasus.api.modelv2;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import java.util.HashMap;
6 |
7 | public class Args {
8 | public long aid;
9 | public int convergeType;
10 | public int isFollow;
11 | public long online;
12 | @Nullable
13 | public HashMap reportExtraInfo;
14 | public long rid;
15 | @Nullable
16 | public String rname;
17 | public long roomId;
18 | @Nullable
19 | public String state;
20 | public long tid;
21 | @Nullable
22 | public String tname;
23 | @Nullable
24 | public String trackId;
25 | public int type;
26 | public long upId;
27 | @Nullable
28 | public String upName;
29 | }
30 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/pegasus/api/modelv2/BannerItemV2.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.pegasus.api.modelv2;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 | import com.bilibili.pegasus.api.model.BasicIndexItem;
7 |
8 | public class BannerItemV2 {
9 | @JSONField(name = "id")
10 | public long id;
11 | @JSONField(name = "index")
12 | public int index;
13 | @Nullable
14 | @JSONField(deserialize = false, serialize = false)
15 | public BasicIndexItem pegasusAdItem;
16 | @JSONField(name = "resource_id")
17 | public long resourceId;
18 | @Nullable
19 | @JSONField(name = "type")
20 | public String type;
21 | }
22 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/pegasus/api/modelv2/BasePlayerItem.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.pegasus.api.modelv2;
2 |
3 | import androidx.annotation.Keep;
4 | import androidx.annotation.Nullable;
5 |
6 | import com.bilibili.pegasus.api.model.BasicIndexItem;
7 |
8 | @Keep
9 | public class BasePlayerItem extends BasicIndexItem {
10 | public int canPlay;
11 | public boolean disableDanmaku;
12 | @Nullable
13 | public String extraUri;
14 | public boolean hideDanmakuSwitch;
15 | public boolean isCoin;
16 | public boolean isFavorite;
17 | public transient boolean isPlayError;
18 | @Nullable
19 | public String talkBack;
20 | }
21 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/pegasus/api/modelv2/PegasusFeedResponse.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.pegasus.api.modelv2;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | import com.bilibili.pegasus.api.model.BasicIndexItem;
6 |
7 | import java.util.ArrayList;
8 |
9 | public class PegasusFeedResponse {
10 | @Nullable
11 | public Config config;
12 | @Nullable
13 | public ArrayList items;
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/pegasus/api/modelv2/Up.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.pegasus.api.modelv2;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public class Up {
6 | @Nullable
7 | public String cooperation;
8 | @Nullable
9 | public String desc;
10 | public long idX;
11 | @Nullable
12 | public String name;
13 | public int officialIcon;
14 | }
15 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/pegasus/api/modelv2/UpArgs.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.pegasus.api.modelv2;
2 |
3 | import androidx.annotation.Nullable;
4 |
5 | public class UpArgs {
6 | public int selected;
7 | @Nullable
8 | public String upFace;
9 | public long upId;
10 | @Nullable
11 | public String upName;
12 | }
13 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search/api/DefaultKeyword.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search.api;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | @Keep
6 | public class DefaultKeyword {
7 | }
8 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search/api/SearchRank.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search.api;
2 |
3 | public class SearchRank {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search/api/SearchReferral.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search.api;
2 |
3 | public class SearchReferral {
4 | public static class Guess {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search/ogv/OgvSearchResultFragment.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search.ogv;
2 |
3 | import com.bilibili.lib.ui.BaseFragment;
4 |
5 | public class OgvSearchResultFragment extends BaseFragment {
6 |
7 | // method will added by patcher
8 | public int getTypeForBiliRoaming() {
9 | return 0;
10 | }
11 |
12 | // method will added by patcher
13 | public void setTypeForBiliRoaming(int type) {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search/result/bangumi/ogv/BangumiSearchResultFragment.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search.result.bangumi.ogv;
2 |
3 | import com.bilibili.lib.ui.BaseFragment;
4 |
5 | public class BangumiSearchResultFragment extends BaseFragment {
6 |
7 | // method will added by patcher
8 | public int getTypeForBiliRoaming() {
9 | return 0;
10 | }
11 |
12 | // method will added by patcher
13 | public void setTypeForBiliRoaming(int type) {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search2/api/SearchRank.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search2.api;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | @Keep
6 | public final class SearchRank {
7 | }
8 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search2/api/SearchReferral.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search2.api;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | @Keep
6 | public final class SearchReferral {
7 | @Keep
8 | public static final class Guess {
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/search2/ogv/OgvSearchResultFragment.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.search2.ogv;
2 |
3 | import com.bilibili.lib.ui.BaseFragment;
4 |
5 | public class OgvSearchResultFragment extends BaseFragment {
6 |
7 | // method will added by patcher
8 | public int getTypeForBiliRoaming() {
9 | return 0;
10 | }
11 |
12 | // method will added by patcher
13 | public void setTypeForBiliRoaming(int type) {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/ship/theseus/all/UnitedBizDetailsActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.ship.theseus.all;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | public class UnitedBizDetailsActivity extends AppCompatActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/ship/theseus/detail/UnitedBizDetailsActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.ship.theseus.detail;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | public class UnitedBizDetailsActivity extends AppCompatActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/ship/theseus/playlist/UnitedPlaylistActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.ship.theseus.playlist;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | public class UnitedPlaylistActivity extends AppCompatActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/video/story/StoryVideoActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.video.story;
2 |
3 | import android.app.Activity;
4 |
5 | public class StoryVideoActivity extends Activity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/com/bilibili/video/videodetail/VideoDetailsActivity.java:
--------------------------------------------------------------------------------
1 | package com.bilibili.video.videodetail;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | public class VideoDetailsActivity extends AppCompatActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/MainActivityV2.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili;
2 |
3 | import androidx.fragment.app.FragmentActivity;
4 |
5 | public class MainActivityV2 extends FragmentActivity {
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/main/event/model/EventEntranceModel.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.main.event.model;
2 |
3 | import androidx.annotation.Keep;
4 | import androidx.annotation.Nullable;
5 |
6 | @Keep
7 | public class EventEntranceModel {
8 | @Nullable
9 | private String hash;
10 | @Nullable
11 | private Online online;
12 |
13 | public void setHash(String hash) {
14 | this.hash = hash;
15 | }
16 |
17 | public void setOnline(Online online) {
18 | }
19 |
20 | public static class Online {
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/main2/mine/HomeUserCenterFragment.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.main2.mine;
2 |
3 | import com.bilibili.lib.ui.BaseFragment;
4 |
5 | public class HomeUserCenterFragment extends BaseFragment {
6 | // method will added by patcher
7 | public void switchDarkMode_Origin(boolean report) {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/offline/api/EpPlayable.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.offline.api;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.alibaba.fastjson.annotation.JSONField;
6 |
7 | @Keep
8 | public class EpPlayable {
9 | public long epid;
10 | @JSONField(name = "is_playable")
11 | public int isPlayable = 1;
12 | }
13 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/offline/api/OgvApiResponse.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.offline.api;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | import com.bilibili.okretro.BaseResponse;
6 |
7 | @Keep
8 | public class OgvApiResponse extends BaseResponse {
9 | public T result;
10 | }
11 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/splash/Splash.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.splash;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | /* compiled from: BL */
6 | @Keep
7 | /* loaded from: classes8.dex */
8 | public class Splash {
9 | }
10 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/splash/SplashShowData.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.splash;
2 |
3 | import androidx.annotation.Keep;
4 | import androidx.annotation.Nullable;
5 |
6 | import com.alibaba.fastjson.annotation.JSONField;
7 |
8 | import java.util.List;
9 |
10 | /* compiled from: BL */
11 | @Keep
12 | /* loaded from: classes8.dex */
13 | public class SplashShowData {
14 | @Nullable
15 | @JSONField(name = "splash_request_id")
16 | private String splashRequestId;
17 | @JSONField(name = "show")
18 | public List strategyList;
19 |
20 | @Nullable
21 | public String getSplashRequestId() {
22 | return this.splashRequestId;
23 | }
24 |
25 | public void setSplashRequestId(String str) {
26 | this.splashRequestId = str;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/splash/ad/model/Splash.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.splash.ad.model;
2 |
3 | public class Splash {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/splash/ad/model/SplashData.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.splash.ad.model;
2 |
3 | import java.util.List;
4 |
5 | public class SplashData {
6 | public List splashList;
7 | public List strategyList;
8 |
9 | public final List getSplashList() {
10 | return this.splashList;
11 | }
12 |
13 | public final List getStrategyList() {
14 | return this.strategyList;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/splash/ad/model/SplashShowData.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.splash.ad.model;
2 |
3 | import java.util.List;
4 |
5 | public class SplashShowData {
6 | public List strategyList;
7 |
8 | public final List getStrategyList() {
9 | return this.strategyList;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/ui/splash/ad/model/SplashShowStrategy.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.ui.splash.ad.model;
2 |
3 | public class SplashShowStrategy {
4 | }
5 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/videopage/player/features/share/ShareIconResult.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.videopage.player.features.share;
2 |
3 | import androidx.annotation.Keep;
4 |
5 | @Keep
6 | public class ShareIconResult {
7 | }
8 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/widget/RadioButtonPreference.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.widget;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.annotation.NonNull;
6 | import androidx.preference.CheckBoxPreference;
7 |
8 | public class RadioButtonPreference extends CheckBoxPreference {
9 | public RadioButtonPreference(@NonNull Context context) {
10 | super(context);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/widget/preference/BLPreference.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.widget.preference;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 |
6 | import androidx.annotation.NonNull;
7 | import androidx.annotation.Nullable;
8 | import androidx.preference.Preference;
9 |
10 | public class BLPreference extends Preference {
11 | public BLPreference(@NonNull Context context) {
12 | super(context, null);
13 | }
14 |
15 | public BLPreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
16 | super(context, attrs, defStyleAttr);
17 | }
18 |
19 | public BLPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
20 | super(context, attrs);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bili/widget/preference/BLPreferenceCategory.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bili.widget.preference;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.annotation.NonNull;
6 | import androidx.preference.PreferenceCategory;
7 |
8 | public class BLPreferenceCategory extends PreferenceCategory {
9 | public BLPreferenceCategory(@NonNull Context context) {
10 | super(context, null);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bilibilihd/ui/main/mine/HdHomeUserCenterFragment.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bilibilihd.ui.main.mine;
2 |
3 | import com.bilibili.lib.ui.BaseFragment;
4 |
5 | public class HdHomeUserCenterFragment extends BaseFragment {
6 | // method will added by patcher
7 | public void switchDarkMode_Origin(boolean report) {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/bilibilihd/ui/main/mine/common/HdCommonBaseFragment.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.bilibilihd.ui.main.mine.common;
2 |
3 | import androidx.fragment.app.Fragment;
4 |
5 | public class HdCommonBaseFragment extends Fragment {
6 | // method will added by patcher
7 | public void switchDarkMode_Origin(boolean report) {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/biliplayerv2/service/interact/biz/chronos/chronosrpc/methods/send/OnlineInfoChange.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.biliplayerv2.service.interact.biz.chronos.chronosrpc.methods.send;
2 |
3 | public class OnlineInfoChange {
4 | public static class Request {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/ijk/media/player/IjkTimedText.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player;
2 |
3 | import android.graphics.Rect;
4 |
5 | /* compiled from: BL */
6 | /* loaded from: classes15.dex */
7 | public final class IjkTimedText {
8 | private Rect mTextBounds;
9 | private String mTextChars;
10 |
11 | public IjkTimedText(Rect rect, String str) {
12 | this.mTextBounds = null;
13 | this.mTextChars = null;
14 | this.mTextBounds = rect;
15 | this.mTextChars = str;
16 | }
17 |
18 | public Rect getBounds() {
19 | return this.mTextBounds;
20 | }
21 |
22 | public String getText() {
23 | return this.mTextChars;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/ijk/media/player/MediaInfo.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player;
2 |
3 | /* compiled from: BL */
4 | /* loaded from: classes15.dex */
5 | public class MediaInfo {
6 | public String mAudioDecoder;
7 | public String mAudioDecoderImpl;
8 | public String mMediaPlayerName;
9 | public IjkMediaMeta mMeta;
10 | public String mVideoDecoder;
11 | public String mVideoDecoderImpl;
12 | }
13 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/ijk/media/player/misc/IMediaDataSource.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.misc;
2 |
3 | import java.io.IOException;
4 |
5 | /* compiled from: BL */
6 | /* loaded from: classes15.dex */
7 | public interface IMediaDataSource {
8 | void close() throws IOException;
9 |
10 | long getSize() throws IOException;
11 |
12 | int readAt(long j, byte[] bArr, int i, int i2) throws IOException;
13 | }
14 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/ijk/media/player/misc/IMediaFormat.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.misc;
2 |
3 | /* compiled from: BL */
4 | /* loaded from: classes15.dex */
5 | public interface IMediaFormat {
6 | public static final String KEY_HEIGHT = "height";
7 | public static final String KEY_MIME = "mime";
8 | public static final String KEY_WIDTH = "width";
9 |
10 | int getInteger(String str);
11 |
12 | String getString(String str);
13 | }
14 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/ijk/media/player/misc/ITrackInfo.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.ijk.media.player.misc;
2 |
3 | /* compiled from: BL */
4 | /* loaded from: classes15.dex */
5 | public interface ITrackInfo {
6 | public static final int MEDIA_TRACK_TYPE_AUDIO = 2;
7 | public static final int MEDIA_TRACK_TYPE_METADATA = 5;
8 | public static final int MEDIA_TRACK_TYPE_SUBTITLE = 4;
9 | public static final int MEDIA_TRACK_TYPE_TIMEDTEXT = 3;
10 | public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0;
11 | public static final int MEDIA_TRACK_TYPE_VIDEO = 1;
12 |
13 | IMediaFormat getFormat();
14 |
15 | String getInfoInline();
16 |
17 | String getLanguage();
18 |
19 | int getTrackType();
20 | }
21 |
--------------------------------------------------------------------------------
/integrations/dummy/src/main/java/tv/danmaku/videoplayer/core/videoview/AspectRatio.java:
--------------------------------------------------------------------------------
1 | package tv.danmaku.videoplayer.core.videoview;
2 |
3 | public enum AspectRatio {
4 | RATIO_ADJUST_CONTENT,
5 | RATIO_ADJUST_SCREEN,
6 | RATIO_4_3_INSIDE,
7 | RATIO_16_9_INSIDE,
8 | RATIO_CENTER_CROP,
9 | RATIO_FULL_SCREEN
10 | }
11 |
--------------------------------------------------------------------------------
/integrations/extend/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/integrations/extend/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias(libs.plugins.android.library)
3 | }
4 |
5 | setupLibraryModule {
6 | namespace = "app.revanced.bilibili.extend"
7 | }
8 |
9 | dependencies {
10 | compileOnly(projects.integrations.dummy)
11 | }
12 |
--------------------------------------------------------------------------------
/integrations/extend/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/integrations/extend/consumer-rules.pro
--------------------------------------------------------------------------------
/integrations/extend/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/integrations/extend/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/integrations/ksp/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/integrations/ksp/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias(libs.plugins.kotlin.jvm)
3 | }
4 |
5 | dependencies {
6 | implementation(libs.ksp.api)
7 | implementation(libs.kotlinpoet.ksp)
8 | }
9 |
--------------------------------------------------------------------------------
/integrations/ksp/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider:
--------------------------------------------------------------------------------
1 | app.revanced.bilibili.processors.SearchFragmentsProcessorProvider
2 |
--------------------------------------------------------------------------------
/patches/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | patches.json
3 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/generator/Main.kt:
--------------------------------------------------------------------------------
1 | @file:JvmName("Main")
2 |
3 | package app.revanced.generator
4 |
5 | import app.revanced.patcher.PatchBundleLoader
6 | import java.io.File
7 |
8 | internal fun main() = PatchBundleLoader.Jar(
9 | File("build/libs/").listFiles { it -> it.name.endsWith(".jar") }!!.first(),
10 | ).also { loader ->
11 | if (loader.isEmpty()) throw IllegalStateException("No patches found")
12 | }.let { bundle ->
13 | arrayOf(JsonPatchesFileGenerator()).forEach { generator -> generator.generate(bundle) }
14 | }
15 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/generator/PatchesFileGenerator.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.generator
2 |
3 | import app.revanced.patcher.PatchSet
4 |
5 | internal interface PatchesFileGenerator {
6 | fun generate(patches: PatchSet)
7 | }
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/all/interaction/gestures/PredictiveBackGesturePatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.all.interaction.gestures
2 |
3 | import app.revanced.patcher.data.ResourceContext
4 | import app.revanced.patcher.patch.ResourcePatch
5 | import app.revanced.patcher.patch.annotation.Patch
6 | import app.revanced.util.get
7 | import app.revanced.util.set
8 |
9 | @Patch(
10 | name = "Predictive back gesture",
11 | description = "Enables the predictive back gesture introduced on Android 13.",
12 | use = false
13 | )
14 | @Suppress("unused")
15 | object PredictiveBackGesturePatch : ResourcePatch() {
16 | override fun execute(context: ResourceContext) {
17 | context.document["AndroidManifest.xml"].use { dom ->
18 | dom["application"]["android:enableOnBackInvokedCallback"] = "true"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.all.misc.debugging
2 |
3 | import app.revanced.patcher.data.ResourceContext
4 | import app.revanced.patcher.patch.ResourcePatch
5 | import app.revanced.patcher.patch.annotation.Patch
6 | import app.revanced.util.get
7 | import app.revanced.util.set
8 |
9 | @Patch(
10 | name = "Enable Android debugging",
11 | description = "Enables Android debugging capabilities. This can slow down the app.",
12 | use = false
13 | )
14 | @Suppress("unused")
15 | object EnableAndroidDebuggingPatch : ResourcePatch() {
16 | override fun execute(context: ResourceContext) {
17 | context.document["AndroidManifest.xml"].use { dom ->
18 | dom["application"]["android:debuggable"] = "true"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/layout/fingerprints/FullStoryWidgetFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.layout.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | open class FullStoryWidgetFingerprint(tagName: String) : MethodFingerprint(
6 | strings = listOf(tagName, "player.player.story-button.0.player")
7 | )
8 |
9 | object PlayerFullStoryWidgetFingerprint : FullStoryWidgetFingerprint("PlayerFullStoryWidget")
10 | object GeminiPlayerFullStoryWidgetFingerprint : FullStoryWidgetFingerprint("GeminiPlayerFullStoryWidget")
11 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/config/fingerprints/ABSourceFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.config.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ABSourceFingerprint : MethodFingerprint(
6 | strings = listOf("getMBean()Lcom/bilibili/lib/blconfig/internal/ABBean;"),
7 | customFingerprint = { methodDef, _ ->
8 | methodDef.name == ""
9 | }
10 | )
11 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/config/fingerprints/ConfigSourceFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.config.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ConfigSourceFingerprint : MethodFingerprint(
6 | strings = listOf("AES/CBC/PKCS7Padding"),
7 | customFingerprint = { methodDef, classDef ->
8 | methodDef.name == "" && classDef.interfaces.isNotEmpty()
9 | }
10 | )
11 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/config/fingerprints/DDContractImplFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.config.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object DDContractImplFingerprint : MethodFingerprint(
6 | strings = listOf("public.dd.result"),
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/copy/fingerprints/Comment3CopyFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.copy.fingerprints
2 |
3 | object Comment3CopyFingerprint : BaseCommentCopyFingerprint(
4 | "Lcom/bilibili/app/comment3/data/model/CommentItem;"
5 | )
6 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/copy/fingerprints/Comment3DialogCopyFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.copy.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object Comment3DialogCopyFingerprint : MethodFingerprint(
6 | parameters = listOf("Lcom/bilibili/app/comment3/data/model/CommentItem\$MenuItem\$Action;"),
7 | returnType = "V",
8 | customFingerprint = { _, classDef ->
9 | classDef.fields.map { it.type }.run {
10 | contains("Landroid/content/Context;") && contains("Ljava/lang/String;")
11 | }
12 | }
13 | )
14 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/copy/fingerprints/CommentCopyNewFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.copy.fingerprints
2 |
3 | object CommentCopyNewFingerprint : BaseCommentCopyFingerprint(
4 | "Lcom/bilibili/app/comm/comment2/phoenix/view/CommentMessageWidget;"
5 | )
6 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/copy/fingerprints/CommentCopyOldFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.copy.fingerprints
2 |
3 | object CommentCopyOldFingerprint : BaseCommentCopyFingerprint("Landroid/view/View;")
4 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/copy/fingerprints/ConversationCopyFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.copy.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ConversationCopyFingerprint : MethodFingerprint(
6 | returnType = "V",
7 | strings = listOf("clipboard", "im.chat-group.msg.repost.click"),
8 | customFingerprint = { _, classDef ->
9 | classDef.type == "Lcom/bilibili/bplus/im/conversation/ConversationActivity;"
10 | }
11 | )
12 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/copy/fingerprints/DescCopyFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.copy.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object DescCopyFingerprint : MultiMethodFingerprint(
6 | returnType = "V",
7 | parameters = listOf("Z", "Ljava/lang/String;"),
8 | strings = listOf("clipboard", "text")
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/darkswitch/fingerprints/SwitchDarkModeFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.darkswitch.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object SwitchDarkModeFingerprint : MethodFingerprint(
6 | strings = listOf("default"),
7 | returnType = "V",
8 | parameters = listOf("Z"),
9 | customFingerprint = { _, classDef ->
10 | classDef.type.endsWith("HomeUserCenterFragment;")
11 | }
12 | )
13 |
14 | object HdNewSwitchDarkModeFingerprint : MethodFingerprint(
15 | strings = listOf("default"),
16 | returnType = "V",
17 | parameters = listOf("Z"),
18 | customFingerprint = { _, classDef ->
19 | classDef.type == "Ltv/danmaku/bilibilihd/ui/main/mine/common/HdCommonBaseFragment;"
20 | }
21 | )
22 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/drawer/fingerprints/DrawerIsOpenFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.drawer.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction11n
5 |
6 | object DrawerIsOpenFingerprint : MethodFingerprint(
7 | returnType = "Z",
8 | strings = listOf("is not a drawer"),
9 | parameters = listOf("Landroid/view/View;"),
10 | customFingerprint = { methodDef, _ ->
11 | methodDef.definingClass == "Landroidx/drawerlayout/widget/DrawerLayout;"
12 | && methodDef.implementation?.instructions?.find {
13 | it is Instruction11n
14 | }?.let {
15 | it as Instruction11n
16 | it.registerA == 0 && it.wideLiteral == 0x1L
17 | } ?: false
18 | }
19 | )
20 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/drawer/fingerprints/DrawerLayoutParamsFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.drawer.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object DrawerLayoutParamsFingerprint : MethodFingerprint(
6 | customFingerprint = { methodDef, classDef ->
7 | methodDef.definingClass.startsWith("Landroidx/drawerlayout/widget/DrawerLayout")
8 | && classDef.superclass == "Landroid/view/ViewGroup\$MarginLayoutParams;"
9 | }
10 | )
11 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/integrations/fingerprints/AppCompatActivityFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.integrations.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object AppCompatActivityFingerprint : MethodFingerprint(
6 | strings = listOf("androidx:appcompat"),
7 | parameters = listOf(),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/integrations/fingerprints/BLKVFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.integrations.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object BLKVFingerprint : MethodFingerprint(
6 | strings = listOf(".blkv"),
7 | parameters = listOf("Landroid/content/Context;", "Ljava/lang/String;", "Z", "I")
8 | )
9 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/integrations/fingerprints/BaseMainFrameFragmentFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.integrations.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object BaseMainFrameFragmentFingerprint : MethodFingerprint(
6 | strings = listOf("home.menu_update_enable"),
7 | parameters = listOf("Ljava/util/List;"),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/integrations/fingerprints/BrotliFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.integrations.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object BrotliFingerprint : MethodFingerprint(
6 | strings = listOf("Brotli decoder initialization failed")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/integrations/fingerprints/DanmakuFontSwitchPreferenceFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.integrations.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object DanmakuFontSwitchPreferenceFingerprint : MethodFingerprint(
6 | strings = listOf("danmaku_setting_use_recommend_font", "chronos_enable_dfm_v3"),
7 | parameters = listOf("Landroid/content/Context;"),
8 | customFingerprint = { methodDef, _ ->
9 | methodDef.name == ""
10 | }
11 | )
12 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/integrations/fingerprints/RecyclerViewHolderFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.integrations.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object RecyclerViewHolderFingerprint : MethodFingerprint(
6 | strings = listOf("itemView may not be null"),
7 | parameters = listOf("Landroid/view/View;"),
8 | returnType = "V",
9 | customFingerprint = { methodDef, _ -> methodDef.name == "" }
10 | )
11 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/json/fingerprints/CardClickProcessorFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.json.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object CardClickProcessorFingerprint : MethodFingerprint(
6 | strings = listOf("action:feed:dislike_reason", "action:feed:dislike_toast"),
7 | returnType = "V",
8 | customFingerprint = { methodDef, _ ->
9 | methodDef.parameterTypes.count {
10 | it == "Lcom/bilibili/app/comm/list/common/data/DislikeReason;"
11 | } == 2
12 | }
13 | )
14 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/json/fingerprints/CardClickProcessorNewFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.json.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object CardClickProcessorNewFingerprint : MethodFingerprint(
6 | strings = listOf("tm.recommend.0.0"),
7 | returnType = "V",
8 | customFingerprint = { methodDef, _ ->
9 | methodDef.parameterTypes.let {
10 | it.size == 4 && it[1] == "Lcom/bilibili/pegasus/data/FeedbackType;"
11 | && it[3] == "Lcom/bilibili/app/comm/list/common/data/DislikeReason;"
12 | }
13 | }
14 | )
15 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/json/fingerprints/JSONFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.json.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object JSONFingerprint : MethodFingerprint(strings = listOf("toJSON error"))
6 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/json/fingerprints/PegasusParserFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.json.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PegasusParserFingerprint : MethodFingerprint(
6 | strings = listOf("card_type is empty"),
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/notification/fingerprints/HeadsetMediaSessionCallbackFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.notification.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object HeadsetMediaSessionCallbackFingerprint : MethodFingerprint(
6 | strings = listOf("onMediaButtonEvent has a exception keyEventMessage:"),
7 | parameters = listOf("Landroid/content/Intent;"),
8 | returnType = "Z"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/notification/fingerprints/LiveNotificationHelperFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.notification.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object LiveNotificationHelperFingerprint : MethodFingerprint(
6 | strings = listOf("buildLiveNotification"),
7 | returnType = "Landroid/app/Notification;",
8 | parameters = listOf("Landroid/graphics/Bitmap;")
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/notification/fingerprints/MediaSessionCallbackApi21Fingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.notification.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MediaSessionCallbackApi21Fingerprint : MethodFingerprint(
6 | strings = listOf("android.support.v4.media.session.action.PLAY_FROM_URI", "Could not unparcel the data."),
7 | parameters = listOf("Ljava/lang/String;", "Landroid/os/Bundle;"),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/notification/fingerprints/NotificationStyleAbFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.notification.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object NotificationStyleAbFingerprint : MethodFingerprint(
6 | strings = listOf("ff_background_use_system_media_controls"),
7 | returnType = "Z",
8 | parameters = listOf()
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/BodyWrapperFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object BodyWrapperFingerprint : MultiMethodFingerprint(
6 | strings = listOf("Cannot read raw response body of a converted body."),
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/BufferFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object BufferFingerprint : MethodFingerprint(
6 | strings = listOf("(to read code point prefixed 0x"),
7 | parameters = listOf(),
8 | returnType = "I",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/HeadersFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object HeadersFingerprint : MethodFingerprint(
6 | strings = listOf("Expected alternating header names and values")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/HttpUrlFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object HttpUrlFingerprint : MethodFingerprint(strings = listOf("javaWhitespace"))
6 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/MediaTypeGetFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MediaTypeGetFingerprint : MethodFingerprint(strings = listOf("No subtype found for:"))
6 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/RealCallFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import com.android.tools.smali.dexlib2.Opcode
5 |
6 | object RealCallFingerprint : MethodFingerprint(
7 | strings = listOf("Canceled"),
8 | parameters = listOf(),
9 | opcodes = listOf(
10 | Opcode.NEW_INSTANCE,
11 | Opcode.INVOKE_DIRECT,
12 | Opcode.IGET_OBJECT,
13 | Opcode.INVOKE_VIRTUAL,
14 | Opcode.MOVE_RESULT_OBJECT,
15 | ),
16 | customFingerprint = { methodDef, _ ->
17 | methodDef.returnType == ResponseFingerprint.result!!.classDef.type
18 | }
19 | )
20 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/RequestFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object RequestFingerprint : MethodFingerprint(
6 | strings = listOf("Request{method=", "tags=", "callTimeout=")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/ResponseBodyFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ResponseBodyFingerprint : MethodFingerprint(
6 | strings = listOf("Cannot buffer entire body for content length: ")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/okhttp/fingerprints/ResponseFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.okhttp.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import app.revanced.patches.bilibili.utils.isNative
5 |
6 | object ResponseFingerprint : MethodFingerprint(
7 | strings = listOf("Response{protocol="),
8 | customFingerprint = { _, classDef ->
9 | classDef.interfaces == listOf("Ljava/io/Closeable;") && classDef.methods.none { it.accessFlags.isNative() }
10 | }
11 | )
12 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/AppendTrackingInfoFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object AppendTrackingInfoFingerprint : MethodFingerprint(
6 | strings = listOf("share_medium", "share_source", "bbid", "ts"),
7 | returnType = "Ljava/lang/String;",
8 | parameters = listOf("Ljava/lang/String;", "Ljava/lang/String;")
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/AttachChannelInfoFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object AttachChannelInfoFingerprint : MethodFingerprint(
6 | strings = listOf("Write channel info error."),
7 | returnType = "V"
8 | )
9 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/BLRouteBuilderFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object BLRouteBuilderFingerprint : MethodFingerprint(
6 | strings = listOf("Builder(targetUri=")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/CommentConfigFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object CommentConfigFingerprint : MethodFingerprint(
6 | strings = listOf("CommentConfig(themeMode=", "seekEnabled="),
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/CommentImageSetLayoutBindViewFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object CommentImageSetLayoutBindViewFingerprint : MethodFingerprint(
6 | strings = listOf("pic_scale"),
7 | parameters = listOf("Ljava/util/List;", "I"),
8 | returnType = "V",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/ConfigV3PreloadFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ConfigV3PreloadFingerprint : MethodFingerprint(
6 | strings = listOf("modDownloadingStartTime"),
7 | parameters = listOf(),
8 | returnType = "V",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/FavFolderOnDataSuccessFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import com.android.tools.smali.dexlib2.AccessFlags
5 | import com.android.tools.smali.dexlib2.Opcode
6 |
7 | object FavFolderOnDataSuccessFingerprint : MethodFingerprint(
8 | returnType = "V",
9 | parameters = listOf("Lcom/bilibili/playset/api/PlaySetPageData;"),
10 | accessFlags = AccessFlags.PUBLIC.value,
11 | opcodes = listOf(
12 | Opcode.IGET_OBJECT,
13 | Opcode.INVOKE_VIRTUAL,
14 | Opcode.CONST_4,
15 | Opcode.IF_EQZ,
16 | Opcode.IGET_OBJECT,
17 | Opcode.IF_EQZ,
18 | Opcode.INVOKE_INTERFACE,
19 | Opcode.MOVE_RESULT,
20 | Opcode.IF_EQZ,
21 | Opcode.GOTO_16,
22 | )
23 | )
24 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/FavFolderOnDataSuccessNewFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import com.android.tools.smali.dexlib2.AccessFlags
5 | import com.android.tools.smali.dexlib2.Opcode
6 |
7 | object FavFolderOnDataSuccessNewFingerprint : MethodFingerprint(
8 | returnType = "V",
9 | parameters = listOf("Lcom/bilibili/playerbizcommonv2/utils/PlaySetPageData;"),
10 | accessFlags = AccessFlags.PRIVATE.value or AccessFlags.FINAL.value,
11 | opcodes = listOf(
12 | Opcode.INVOKE_VIRTUAL,
13 | Opcode.IF_EQZ,
14 | Opcode.INVOKE_VIRTUAL,
15 | Opcode.MOVE_RESULT_OBJECT,
16 | Opcode.IF_EQZ,
17 | Opcode.INVOKE_STATIC,
18 | Opcode.MOVE_RESULT_OBJECT
19 | )
20 | )
21 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/LiveRoomSetFloatWindowFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object LiveRoomSetFloatWindowFingerprint : MethodFingerprint(
6 | strings = listOf("live_float_window_is_open", "bundle_key_player_params_controller_enable_live_window_play"),
7 | parameters = listOf("Z"),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/LiveRoomTouchDispatchViewModelFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object LiveRoomTouchDispatchViewModelFingerprint : MethodFingerprint(
6 | strings = listOf("LiveRoomTouchDispatchViewModel_slideRightToLeft")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/LogcatAdapterFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object LogcatAdapterFingerprint : MethodFingerprint(
6 | strings = listOf("BLOG-EVENT-"),
7 | returnType = "V",
8 | parameters = listOf("Ljava/lang/String;", "Ljava/lang/String;")
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/MainCommonServiceImplFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MainCommonServiceImplFingerprint : MethodFingerprint(
6 | strings = listOf("is_use_upload_image_api"),
7 | parameters = listOf(),
8 | returnType = "Z"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/MineBindAccountStateFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MineBindAccountStateFingerprint : MethodFingerprint(
6 | strings = listOf("-", "0"),
7 | parameters = listOf("Ltv/danmaku/bili/ui/main2/api/AccountMine;", "Z"),
8 | returnType = "V",
9 | customFingerprint = { _, classDef ->
10 | classDef.type == "Ltv/danmaku/bili/ui/main2/mine/HomeUserCenterFragment;" || classDef.type == "Ltv/danmaku/bilibilihd/ui/main/mine/HdHomeUserCenterFragment;"
11 | }
12 | )
13 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/OnOgvDownloadFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
5 |
6 | object OnOgvDownloadFingerprint : MultiMethodFingerprint(
7 | strings = listOf("pgc.pgc-video-detail.downloadbutton.0"),
8 | returnType = "V",
9 | customFingerprint = { methodDef, _ ->
10 | methodDef.parameterTypes.let {
11 | it.size == 2 && it[0] == "Landroid/content/Context;" && it[1].endsWith("OGVCacheFromType;")
12 | }
13 | }
14 | )
15 |
16 | object TheseusOnOgvDownloadFingerprint : MethodFingerprint(
17 | strings = listOf("pgc.pgc-video-detail.downloadbutton.0"),
18 | returnType = "V",
19 | parameters = listOf("Landroid/content/Context;"),
20 | )
21 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/PublishToFollowingConfigFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PublishToFollowingConfigFingerprint : MethodFingerprint(
6 | strings = listOf("PublishToFollowingConfig(visible=")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/QualityViewHolderFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object QualityViewHolderFingerprint : MultiMethodFingerprint(
6 | strings = listOf("last_4k_hint_show_timestamp", "player.qn_4k_tip")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/RouteRequestFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object RouteRequestFingerprint : MethodFingerprint(
6 | strings = listOf("RouteRequest(targetUri=")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/SectionFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object SectionFingerprint : MethodFingerprint(
6 | strings = listOf("ActionViewHolder")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/SetUnitedTabLayoutFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import com.android.tools.smali.dexlib2.Opcode
5 | import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
6 |
7 | object SetUnitedTabLayoutFingerprint : MethodFingerprint(
8 | parameters = listOf("Ljava/lang/Object;"),
9 | returnType = "Ljava/lang/Object;",
10 | customFingerprint = { methodDef, _ ->
11 | val instructions = methodDef.implementation?.instructions?.toList().orEmpty()
12 | instructions.any { it.opcode == Opcode.CONST_16 && (it as WideLiteralInstruction).wideLiteral == 0x19L }
13 | && instructions.any { it.opcode == Opcode.CONST_16 && (it as WideLiteralInstruction).wideLiteral == 0xcL }
14 | }
15 | )
16 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/SpaceBindAccountStateFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object SpaceBindAccountStateFingerprint : MethodFingerprint(
6 | strings = listOf("-", "0"),
7 | parameters = listOf("Lcom/bilibili/app/authorspace/api/BiliMemberCard;"),
8 | returnType = "V",
9 | customFingerprint = { _, classDef ->
10 | classDef.type == "Lcom/bilibili/app/authorspace/ui/SpaceHeaderFragment2;"
11 | }
12 | )
13 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/TeenagersModeFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object TeenagersModeFingerprint : MethodFingerprint(
6 | strings = listOf("restrictedmode.teenagers_alert_api_config", "teenagers_mode_show_dialog_interval"),
7 | returnType = "Z"
8 | )
9 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/UidCopyFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object UidCopyFingerprint : MethodFingerprint(
6 | strings = listOf("UID:%s", "main.space-total.uid.0.click")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/UniteDownloadMenuInvokeFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object UniteDownloadMenuInvokeFingerprint : MethodFingerprint(
6 | strings = listOf("click download"),
7 | parameters = listOf(),
8 | returnType = "V",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/other/fingerprints/WebConfigFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.other.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object WebConfigFingerprint : MethodFingerprint(
6 | strings = listOf("force_webview"),
7 | parameters = listOf(),
8 | returnType = "Z",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/protobuf/fingerprints/MossMiddlewareGaiaFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.protobuf.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MossMiddlewareGaiaFingerprint : MethodFingerprint(
6 | strings = listOf("moss.middleware.gaia", "Call onVoucher for")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/protobuf/fingerprints/MossServiceFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.protobuf.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MossServiceFingerprint : MethodFingerprint(
6 | strings = listOf("moss.service", "MossService start to build engine.")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/settings/fingerprints/PreferenceManagerFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.settings.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PreferenceManagerFingerprint : MethodFingerprint(
6 | strings = listOf("_has_set_default_values"),
7 | parameters = listOf("Landroid/content/Context;", "Ljava/lang/String;", "I", "I", "Z"),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/theme/fingerprints/SkinListFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.theme.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object SkinListFingerprint : MethodFingerprint(
6 | returnType = "V",
7 | parameters = listOf("Ltv/danmaku/bili/ui/theme/api/BiliSkinList;", "Z"),
8 | customFingerprint = { _, classDef ->
9 | classDef.type == "Ltv/danmaku/bili/ui/theme/ThemeStoreActivity;"
10 | }
11 | )
12 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/theme/fingerprints/ThemeClickFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.theme.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ThemeClickFingerprint : MethodFingerprint(
6 | strings = listOf("activity://main/login/"),
7 | returnType = "V",
8 | parameters = listOf("Landroid/view/View;"),
9 | customFingerprint = { methodDef, classDef ->
10 | methodDef.name == "onClick"
11 | && classDef.type.startsWith("Ltv/danmaku/bili/ui/theme/ThemeStoreActivity$")
12 | }
13 | )
14 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/theme/fingerprints/ThemeColorsFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.theme.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ThemeColorsFingerprint : MethodFingerprint(
6 | strings = listOf("GarbThemeColors(garb=")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/theme/fingerprints/ThemeHelperFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.theme.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ThemeHelperFingerprint : MethodFingerprint(
6 | strings = listOf("theme_entries_last_key"),
7 | returnType = "I",
8 | parameters = listOf("Landroid/content/Context;")
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/theme/fingerprints/ThemeProcessorFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.theme.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ThemeProcessorFingerprint : MethodFingerprint(
6 | strings = listOf("theme2-account"),
7 | parameters = listOf("Ltv/danmaku/bili/ui/theme/api/BiliSkinList;")
8 | )
9 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/misc/theme/fingerprints/WebActivityBuildUriFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.misc.theme.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object WebActivityBuildUriFingerprint : MethodFingerprint(
6 | strings = listOf("native.theme", "night"),
7 | customFingerprint = { _, classDef ->
8 | classDef.type == "Ltv/danmaku/bili/ui/webview/MWebActivity;"
9 | }
10 | )
11 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/patcher/patch/MultiMethodBytecodePatch.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.patcher.patch
2 |
3 | import app.revanced.patcher.data.BytecodeContext
4 | import app.revanced.patcher.fingerprint.MethodFingerprint
5 | import app.revanced.patcher.patch.BytecodePatch
6 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
7 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint.Companion.resolve
8 |
9 | abstract class MultiMethodBytecodePatch(
10 | val fingerprints: Set = setOf(),
11 | val multiFingerprints: Set = setOf()
12 | ) : BytecodePatch(fingerprints) {
13 | override fun execute(context: BytecodeContext) {
14 | multiFingerprints.resolve(context, context.classes)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/IjkMediaPlayerOptionsFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object IjkMediaPlayerOptionsFingerprint : MethodFingerprint(
6 | strings = listOf("enable-decoder-switch", "enable-use-https-when-forbidden"),
7 | parameters = listOf(),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/MenuFuncSegmentFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MenuFuncSegmentFingerprint : MethodFingerprint(
6 | strings = listOf("player.player.option-more.speed.player"),
7 | parameters = listOf("F"),
8 | returnType = "V",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/MenuServiceCreateSpeedFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object MenuServiceCreateSpeedFingerprint : MethodFingerprint(
6 | strings = listOf("MenuService\$createSpeed$1", "theseus-united"),
7 | parameters = listOf("I"),
8 | returnType = "V",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlaybackSpeedSettingFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object PlaybackSpeedSettingFingerprint : MultiMethodFingerprint(
6 | strings = listOf("player.player.full-more.speed.player")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlayerGestureListenerFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 | import com.android.tools.smali.dexlib2.Opcode
5 |
6 | object PlayerGestureListenerFingerprint : MethodFingerprint(
7 | parameters = listOf("Landroid/view/MotionEvent;"),
8 | returnType = "V",
9 | opcodes = listOf(
10 | Opcode.IGET_OBJECT,
11 | Opcode.IF_EQZ,
12 | Opcode.IGET_BOOLEAN,
13 | Opcode.IF_EQZ,
14 | Opcode.INVOKE_INTERFACE,
15 | Opcode.CONST_4,
16 | Opcode.IPUT_BOOLEAN,
17 | Opcode.RETURN_VOID,
18 | ),
19 | customFingerprint = { methodDef, classDef ->
20 | methodDef.name == "onLongPress"
21 | && classDef.superclass == "Landroid/view/GestureDetector\$SimpleOnGestureListener;"
22 | }
23 | )
24 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlayerOnPreparedFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PlayerOnPreparedFingerprint : MethodFingerprint(
6 | strings = listOf("PlayerCoreServiceV2", "[ijk][callback]player onPrepared")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlayerResizableGestureListenerFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PlayerResizableGestureListenerFingerprint : MethodFingerprint(
6 | strings = listOf("player.player.gesture.rotate.player")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlayerSeekToFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PlayerSeekToFingerprint : MethodFingerprint(
6 | strings = listOf("[player]seek to"),
7 | parameters = listOf("I", "Z"),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlayerSettingCreateSpeedFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PlayerSettingCreateSpeedFingerprint : MethodFingerprint(
6 | strings = listOf("option", "speed", "value"),
7 | parameters = listOf(),
8 | returnType = "V",
9 | customFingerprint = { methodDef, _ ->
10 | methodDef.name != ""
11 | }
12 | )
13 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlayerSpeedChooseWidgetFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object PlayerSpeedChooseWidgetFingerprint : MultiMethodFingerprint(
6 | strings = listOf("player.player.choose-speed.0.player"),
7 | parameters = listOf("F"),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/PlayerSpeedWidgetFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object PlayerSpeedWidgetFingerprint : MultiMethodFingerprint(
6 | strings = listOf("player.player.speed.0.player")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/RemoteServiceHandlerOnStartFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object RemoteServiceHandlerOnStartFingerprint : MethodFingerprint(
6 | strings = listOf("DanmakuMask", "pref_key_player_enable_keywords_block", "danmaku_fold"),
7 | parameters = listOf("Z"),
8 | returnType = "V",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/ResetResizeFunctionWidgetFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ResetResizeFunctionWidgetFingerprint : MethodFingerprint(
6 | strings = listOf("ResetResizeFunctionWidget")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/ShowPlayerToastFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object ShowPlayerToastFingerprint : MethodFingerprint(
6 | strings = listOf("extra_title", "player show toast:"),
7 | parameters = listOf("Ltv/danmaku/biliplayerv2/widget/toast/PlayerToast;"),
8 | returnType = "V"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/TripleSpeedServiceFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object TripleSpeedServiceFingerprint : MultiMethodFingerprint(
6 | strings = listOf("player.player.gesture.speedup.player"),
7 | returnType = "V",
8 | parameters = listOf()
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/TripleSpeedServiceUniteFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object TripleSpeedServiceUniteFingerprint : MethodFingerprint(
6 | strings = listOf("player.player.gesture.speedup.player"),
7 | returnType = "Ljava/lang/Object;",
8 | parameters = listOf("Ljava/lang/Object;")
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/player/fingerprints/UnitePlayerSetSpeedMenuFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.player.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object UnitePlayerSetSpeedMenuFingerprint : MultiMethodFingerprint(
6 | strings = listOf("0.5", "0.75", "1.0", "1.25", "1.5", "2.0")
7 | )
8 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/quality/fingerprints/PlayerSettingHelperFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.quality.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PlayerSettingHelperFingerprint : MethodFingerprint(
6 | returnType = "I",
7 | strings = listOf("PlayerSettingHelper", "get free data failed")
8 | )
9 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/subtitle/fingerprints/FunctionWidgetServiceFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.subtitle.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object FunctionWidgetServiceFingerprint : MethodFingerprint(
6 | strings = listOf("illegal function type"),
7 | parameters = listOf("I"),
8 | returnType = "I"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/subtitle/fingerprints/FunctionWidgetTokenFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.subtitle.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object FunctionWidgetTokenFingerprint : MethodFingerprint(
6 | strings = listOf("id=", ";clazz="),
7 | parameters = listOf(),
8 | returnType = "Ljava/lang/String;"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/subtitle/fingerprints/PlayerContainerFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.subtitle.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object PlayerContainerFingerprint : MethodFingerprint(
6 | strings = listOf("class=%s is not core service"),
7 | parameters = listOf("Ljava/lang/Class;"),
8 | )
9 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/subtitle/fingerprints/PlayerSubtitleFunctionWidgetFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.subtitle.fingerprints
2 |
3 | import app.revanced.patches.bilibili.patcher.fingerprint.MultiMethodFingerprint
4 |
5 | object PlayerSubtitleFunctionWidgetFingerprint : MultiMethodFingerprint(
6 | strings = listOf("PlayerSubtitleFunctionWidget"),
7 | parameters = listOf(),
8 | returnType = "Ljava/lang/String;"
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/subtitle/fingerprints/RecordSelectedSubtitleFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.subtitle.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object RecordSelectedSubtitleFingerprint : MethodFingerprint(
6 | strings = listOf(
7 | "danmaku_subtitle_multi",
8 | "danmaku_subtitle_lan_main",
9 | "danmaku_subtitle_lan_vice",
10 | "danmaku_user_changed_bilingual",
11 | ),
12 | parameters = listOf("Z"),
13 | returnType = "V",
14 | )
15 |
--------------------------------------------------------------------------------
/patches/src/main/kotlin/app/revanced/patches/bilibili/video/subtitle/fingerprints/SetDmViewReplyFingerprint.kt:
--------------------------------------------------------------------------------
1 | package app.revanced.patches.bilibili.video.subtitle.fingerprints
2 |
3 | import app.revanced.patcher.fingerprint.MethodFingerprint
4 |
5 | object SetDmViewReplyFingerprint : MethodFingerprint(
6 | strings = listOf("danmaku_switch", "player.damaku.senior.mode"),
7 | parameters = listOf("Lcom/bapis/bilibili/community/service/dm/v1/DmViewReply;"),
8 | returnType = "V",
9 | )
10 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon-hd/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_foreground_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_foreground_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/appicon/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/drawable/biliroaming_bg_transparent.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HSSkyBoy/BiliRoamingX/d5c80622145855db5fe0438e0a759daef7b3ef2b/patches/src/main/resources/bilibili/drawable/biliroaming_bg_transparent.webp
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/drawable/biliroaming_ic_clear.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/drawable/biliroaming_ic_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/host/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_locales_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_search_result.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_backup.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_block_follow.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
10 |
11 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_cover_ratio.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_customize_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_customize_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_customize_space.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
13 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_display_size.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_external_downloader.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_filter_dynamic_by_type.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_filter_home_by_type.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_filter_search_type.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
13 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_filter_story_by_type.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
13 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_full_screen_quality.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_full_screen_quality_mobile.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_half_screen_quality.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_home_tab.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
10 |
11 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_live_popups.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
10 |
11 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_player_version.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
13 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_purify_search_types.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
10 |
11 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_story_ui_style.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
13 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_subtitle_translate_server.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_upos.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/patches/src/main/resources/bilibili/xml/biliroaming_setting_video_popups.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
11 |
12 |
--------------------------------------------------------------------------------