├── .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 | 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 | --------------------------------------------------------------------------------