The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .gitattributes
├── .github
    ├── ISSUE_TEMPLATE
    │   ├── bug_report.yml
    │   ├── config.yml
    │   └── feature_request.yml
    ├── dependabot.yml
    └── workflows
    │   ├── core.yml
    │   └── crowdin.yml
├── .gitignore
├── .gitmodules
├── LICENSE
├── README.md
├── apache
    ├── build.gradle.kts
    └── local
    │   └── MemberUtilsX.java
├── app
    ├── .gitignore
    ├── build.gradle.kts
    ├── proguard-rules.pro
    └── src
    │   └── main
    │       ├── AndroidManifest.xml
    │       ├── assets
    │           └── webview
    │           │   ├── colors_dark.css
    │           │   ├── colors_light.css
    │           │   ├── markdown.css
    │           │   ├── syntax.css
    │           │   ├── syntax_dark.css
    │           │   ├── template.html
    │           │   └── template_dark.html
    │       ├── java
    │           ├── com
    │           │   └── google
    │           │   │   └── android
    │           │   │       └── material
    │           │   │           ├── appbar
    │           │   │               └── SubtitleCollapsingToolbarLayout.java
    │           │   │           └── internal
    │           │   │               └── SubtitleCollapsingTextHelper.java
    │           └── org
    │           │   └── lsposed
    │           │       └── manager
    │           │           ├── App.java
    │           │           ├── ConfigManager.java
    │           │           ├── Constants.java
    │           │           ├── adapters
    │           │               ├── AppHelper.java
    │           │               └── ScopeAdapter.java
    │           │           ├── receivers
    │           │               └── LSPManagerServiceHolder.java
    │           │           ├── repo
    │           │               ├── RepoLoader.java
    │           │               └── model
    │           │               │   ├── Collaborator.java
    │           │               │   ├── OnlineModule.java
    │           │               │   ├── Release.java
    │           │               │   └── ReleaseAsset.java
    │           │           ├── ui
    │           │               ├── activity
    │           │               │   ├── MainActivity.java
    │           │               │   └── base
    │           │               │   │   └── BaseActivity.java
    │           │               ├── dialog
    │           │               │   ├── BlurBehindDialogBuilder.java
    │           │               │   ├── FlashDialogBuilder.java
    │           │               │   └── WelcomeDialog.java
    │           │               ├── fragment
    │           │               │   ├── AppListFragment.java
    │           │               │   ├── BaseFragment.java
    │           │               │   ├── CompileDialogFragment.java
    │           │               │   ├── HomeFragment.java
    │           │               │   ├── LogsFragment.java
    │           │               │   ├── ModulesFragment.java
    │           │               │   ├── RecyclerViewDialogFragment.java
    │           │               │   ├── RepoFragment.java
    │           │               │   ├── RepoItemFragment.java
    │           │               │   └── SettingsFragment.java
    │           │               └── widget
    │           │               │   ├── EmptyStateRecyclerView.java
    │           │               │   ├── ExpandableTextView.java
    │           │               │   ├── LinkifyTextView.java
    │           │               │   ├── ScrollWebView.java
    │           │               │   └── StatefulRecyclerView.java
    │           │           └── util
    │           │               ├── AccessibilityUtils.java
    │           │               ├── AppIconModelLoader.java
    │           │               ├── AppModule.java
    │           │               ├── BackupUtils.java
    │           │               ├── CloudflareDNS.java
    │           │               ├── EmptyAccessibilityDelegate.java
    │           │               ├── ModuleUtil.java
    │           │               ├── NavUtil.java
    │           │               ├── NoSniFactory.java
    │           │               ├── ShortcutUtil.java
    │           │               ├── SimpleStatefulAdaptor.java
    │           │               ├── ThemeUtil.java
    │           │               ├── UpdateUtil.java
    │           │               └── chrome
    │           │                   ├── CustomTabsURLSpan.java
    │           │                   └── LinkTransformationMethod.java
    │       └── res
    │           ├── anim
    │               ├── fragment_enter.xml
    │               ├── fragment_enter_pop.xml
    │               ├── fragment_exit.xml
    │               └── fragment_exit_pop.xml
    │           ├── drawable
    │               ├── ic_assignment_checkable.xml
    │               ├── ic_attach_file.xml
    │               ├── ic_baseline_add_24.xml
    │               ├── ic_baseline_arrow_back_24.xml
    │               ├── ic_baseline_assignment_24.xml
    │               ├── ic_baseline_chat_24.xml
    │               ├── ic_baseline_extension_24.xml
    │               ├── ic_baseline_get_app_24.xml
    │               ├── ic_baseline_home_24.xml
    │               ├── ic_baseline_info_24.xml
    │               ├── ic_baseline_search_24.xml
    │               ├── ic_baseline_settings_24.xml
    │               ├── ic_baseline_settings_backup_restore_24.xml
    │               ├── ic_extension_checkable.xml
    │               ├── ic_get_app_checkable.xml
    │               ├── ic_home_checkable.xml
    │               ├── ic_keyboard_arrow_down.xml
    │               ├── ic_launcher.xml
    │               ├── ic_launcher_foreground.xml
    │               ├── ic_launcher_round.xml
    │               ├── ic_open_in_browser.xml
    │               ├── ic_outline_android_24.xml
    │               ├── ic_outline_app_shortcut_24.xml
    │               ├── ic_outline_assignment_24.xml
    │               ├── ic_outline_dark_mode_24.xml
    │               ├── ic_outline_dns_24.xml
    │               ├── ic_outline_extension_24.xml
    │               ├── ic_outline_format_color_fill_24.xml
    │               ├── ic_outline_get_app_24.xml
    │               ├── ic_outline_groups_24.xml
    │               ├── ic_outline_home_24.xml
    │               ├── ic_outline_invert_colors_24.xml
    │               ├── ic_outline_language_24.xml
    │               ├── ic_outline_merge_type_24.xml
    │               ├── ic_outline_palette_24.xml
    │               ├── ic_outline_restore_24.xml
    │               ├── ic_outline_settings_24.xml
    │               ├── ic_outline_shield_24.xml
    │               ├── ic_outline_speaker_notes_24.xml
    │               ├── ic_outline_translate_24.xml
    │               ├── ic_round_bug_report_24.xml
    │               ├── ic_round_check_circle_24.xml
    │               ├── ic_round_error_outline_24.xml
    │               ├── ic_round_settings_24.xml
    │               ├── ic_round_update_24.xml
    │               ├── ic_round_warning_24.xml
    │               ├── ic_save.xml
    │               ├── ic_settings_checkable.xml
    │               ├── shortcut_ic_logs.xml
    │               ├── shortcut_ic_modules.xml
    │               ├── shortcut_ic_repo.xml
    │               ├── shortcut_ic_settings.xml
    │               └── simple_menu_background.xml
    │           ├── layout-sw600dp
    │               └── activity_main.xml
    │           ├── layout
    │               ├── activity_main.xml
    │               ├── dialog_about.xml
    │               ├── dialog_item.xml
    │               ├── dialog_title.xml
    │               ├── fragment_app_list.xml
    │               ├── fragment_compile_dialog.xml
    │               ├── fragment_home.xml
    │               ├── fragment_pager.xml
    │               ├── fragment_repo.xml
    │               ├── fragment_settings.xml
    │               ├── item_log_textview.xml
    │               ├── item_master_switch.xml
    │               ├── item_module.xml
    │               ├── item_onlinemodule.xml
    │               ├── item_repo_loadmore.xml
    │               ├── item_repo_readme.xml
    │               ├── item_repo_recyclerview.xml
    │               ├── item_repo_release.xml
    │               ├── item_repo_title_description.xml
    │               ├── preference_recyclerview.xml
    │               ├── scrollable_dialog.xml
    │               └── swiperefresh_recyclerview.xml
    │           ├── menu-sw600dp
    │               └── navigation_menu.xml
    │           ├── menu
    │               ├── context_menu_modules.xml
    │               ├── menu_app_item.xml
    │               ├── menu_app_list.xml
    │               ├── menu_home.xml
    │               ├── menu_logs.xml
    │               ├── menu_modules.xml
    │               ├── menu_repo.xml
    │               ├── menu_repo_item.xml
    │               └── navigation_menu.xml
    │           ├── navigation
    │               ├── main_nav.xml
    │               ├── modules_nav.xml
    │               └── repo_nav.xml
    │           ├── values-af
    │               └── strings.xml
    │           ├── values-ar
    │               └── strings.xml
    │           ├── values-bg
    │               └── strings.xml
    │           ├── values-bn
    │               └── strings.xml
    │           ├── values-ca
    │               └── strings.xml
    │           ├── values-cs
    │               └── strings.xml
    │           ├── values-da
    │               └── strings.xml
    │           ├── values-de
    │               └── strings.xml
    │           ├── values-el
    │               └── strings.xml
    │           ├── values-es
    │               └── strings.xml
    │           ├── values-et
    │               └── strings.xml
    │           ├── values-fa
    │               └── strings.xml
    │           ├── values-fi
    │               └── strings.xml
    │           ├── values-fr
    │               └── strings.xml
    │           ├── values-hi
    │               └── strings.xml
    │           ├── values-hr
    │               └── strings.xml
    │           ├── values-hu
    │               └── strings.xml
    │           ├── values-in
    │               └── strings.xml
    │           ├── values-it
    │               └── strings.xml
    │           ├── values-iw
    │               └── strings.xml
    │           ├── values-ja
    │               └── strings.xml
    │           ├── values-ko
    │               └── strings.xml
    │           ├── values-ku
    │               └── strings.xml
    │           ├── values-lt
    │               └── strings.xml
    │           ├── values-night-v31
    │               └── colors.xml
    │           ├── values-night
    │               ├── colors.xml
    │               └── styles.xml
    │           ├── values-nl
    │               └── strings.xml
    │           ├── values-no
    │               └── strings.xml
    │           ├── values-pl
    │               └── strings.xml
    │           ├── values-pt-rBR
    │               └── strings.xml
    │           ├── values-pt
    │               └── strings.xml
    │           ├── values-ro
    │               └── strings.xml
    │           ├── values-ru
    │               └── strings.xml
    │           ├── values-si
    │               └── strings.xml
    │           ├── values-sk
    │               └── strings.xml
    │           ├── values-sv
    │               └── strings.xml
    │           ├── values-sw600dp
    │               └── integer.xml
    │           ├── values-th
    │               └── strings.xml
    │           ├── values-tr
    │               └── strings.xml
    │           ├── values-uk
    │               └── strings.xml
    │           ├── values-ur
    │               └── strings.xml
    │           ├── values-v28
    │               ├── dimens.xml
    │               └── themes.xml
    │           ├── values-v29
    │               └── settings.xml
    │           ├── values-v30
    │               └── themes.xml
    │           ├── values-v31
    │               └── colors.xml
    │           ├── values-vi
    │               └── strings.xml
    │           ├── values-zh-rCN
    │               └── strings.xml
    │           ├── values-zh-rHK
    │               └── strings.xml
    │           ├── values-zh-rTW
    │               └── strings.xml
    │           ├── values
    │               ├── arrays.xml
    │               ├── attrs.xml
    │               ├── colors.xml
    │               ├── dimens.xml
    │               ├── integer.xml
    │               ├── settings.xml
    │               ├── strings.xml
    │               ├── strings_untranslatable.xml
    │               ├── styles.xml
    │               ├── themes.xml
    │               ├── themes_custom.xml
    │               ├── themes_overlay.xml
    │               └── themes_override.xml
    │           └── xml
    │               ├── prefs.xml
    │               └── shortcuts.xml
├── axml
    ├── .gitignore
    └── build.gradle.kts
├── build.gradle.kts
├── core
    ├── .gitignore
    ├── build.gradle.kts
    ├── proguard-rules.pro
    └── src
    │   └── main
    │       ├── java
    │           ├── android
    │           │   ├── app
    │           │   │   └── AndroidAppHelper.java
    │           │   └── content
    │           │   │   └── res
    │           │   │       ├── XModuleResources.java
    │           │   │       ├── XResForwarder.java
    │           │   │       └── XResources.java
    │           ├── de
    │           │   └── robv
    │           │   │   └── android
    │           │   │       └── xposed
    │           │   │           ├── IXposedHookCmdInit.java
    │           │   │           ├── IXposedHookInitPackageResources.java
    │           │   │           ├── IXposedHookLoadPackage.java
    │           │   │           ├── IXposedHookZygoteInit.java
    │           │   │           ├── IXposedMod.java
    │           │   │           ├── SELinuxHelper.java
    │           │   │           ├── XC_MethodHook.java
    │           │   │           ├── XC_MethodReplacement.java
    │           │   │           ├── XSharedPreferences.java
    │           │   │           ├── XposedBridge.java
    │           │   │           ├── XposedHelpers.java
    │           │   │           ├── XposedInit.java
    │           │   │           ├── callbacks
    │           │   │               ├── IXUnhook.java
    │           │   │               ├── XC_InitPackageResources.java
    │           │   │               ├── XC_LayoutInflated.java
    │           │   │               ├── XC_LoadPackage.java
    │           │   │               └── XCallback.java
    │           │   │           └── services
    │           │   │               ├── BaseService.java
    │           │   │               ├── DirectAccessService.java
    │           │   │               └── FileResult.java
    │           └── org
    │           │   └── lsposed
    │           │       └── lspd
    │           │           ├── core
    │           │               ├── ApplicationServiceClient.java
    │           │               └── Startup.java
    │           │           ├── deopt
    │           │               ├── InlinedMethodCallers.java
    │           │               └── PrebuiltMethodsDeopter.java
    │           │           ├── hooker
    │           │               ├── AttachHooker.java
    │           │               ├── CrashDumpHooker.java
    │           │               ├── HandleSystemServerProcessHooker.java
    │           │               ├── LoadedApkCreateCLHooker.java
    │           │               ├── LoadedApkCtorHooker.java
    │           │               ├── OpenDexFileHooker.java
    │           │               └── StartBootstrapServicesHooker.java
    │           │           ├── impl
    │           │               ├── LSPosedBridge.java
    │           │               ├── LSPosedContext.java
    │           │               ├── LSPosedHelper.java
    │           │               ├── LSPosedHookCallback.java
    │           │               ├── LSPosedRemotePreferences.java
    │           │               └── utils
    │           │               │   └── LSPosedDexParser.java
    │           │           ├── nativebridge
    │           │               ├── DexParserBridge.java
    │           │               ├── HookBridge.java
    │           │               ├── NativeAPI.java
    │           │               └── ResourcesHook.java
    │           │           └── util
    │           │               ├── ClassPathURLStreamHandler.java
    │           │               ├── Hookers.java
    │           │               ├── LspModuleClassLoader.java
    │           │               └── MetaDataReader.java
    │       └── jni
    │           ├── CMakeLists.txt
    │           ├── include
    │               ├── config.h
    │               ├── config_bridge.h
    │               ├── context.h
    │               ├── elf_util.h
    │               ├── framework
    │               │   └── androidfw
    │               │   │   └── resource_types.h
    │               ├── logging.h
    │               ├── macros.h
    │               ├── native_util.h
    │               ├── symbol_cache.h
    │               └── utils.h
    │           ├── src
    │               ├── context.cpp
    │               ├── elf_util.cpp
    │               ├── jni
    │               │   ├── dex_parser.cpp
    │               │   ├── dex_parser.h
    │               │   ├── hook_bridge.cpp
    │               │   ├── hook_bridge.h
    │               │   ├── native_api.cpp
    │               │   ├── native_api.h
    │               │   ├── resources_hook.cpp
    │               │   └── resources_hook.h
    │               ├── native_api.cpp
    │               ├── native_api.h
    │               └── symbol_cache.cpp
    │           └── template
    │               └── config.cpp
├── crowdin.yml
├── daemon
    ├── .gitignore
    ├── build.gradle.kts
    ├── proguard-rules.pro
    └── src
    │   └── main
    │       ├── AndroidManifest.xml
    │       ├── java
    │           └── org
    │           │   └── lsposed
    │           │       └── lspd
    │           │           ├── Main.java
    │           │           ├── service
    │           │               ├── ActivityManagerService.java
    │           │               ├── BridgeService.java
    │           │               ├── ConfigFileManager.java
    │           │               ├── ConfigManager.java
    │           │               ├── Dex2OatService.java
    │           │               ├── LSPApplicationService.java
    │           │               ├── LSPInjectedModuleService.java
    │           │               ├── LSPManagerService.java
    │           │               ├── LSPModuleService.java
    │           │               ├── LSPNotificationManager.java
    │           │               ├── LSPSystemServerService.java
    │           │               ├── LSPosedService.java
    │           │               ├── LogcatService.java
    │           │               ├── ObfuscationManager.java
    │           │               ├── PackageService.java
    │           │               ├── PowerService.java
    │           │               ├── ServiceManager.java
    │           │               └── UserService.java
    │           │           └── util
    │           │               ├── FakeContext.java
    │           │               └── InstallerVerifier.java
    │       ├── jni
    │           ├── CMakeLists.txt
    │           ├── dex2oat.cpp
    │           ├── logcat.cpp
    │           ├── logcat.h
    │           ├── logging.h
    │           ├── obfuscation.cpp
    │           └── obfuscation.h
    │       └── res
    │           ├── drawable
    │               ├── ic_baseline_block_24.xml
    │               ├── ic_baseline_check_24.xml
    │               ├── ic_baseline_close_24.xml
    │               └── ic_notification.xml
    │           ├── values-af
    │               └── strings.xml
    │           ├── values-ar
    │               └── strings.xml
    │           ├── values-bg
    │               └── strings.xml
    │           ├── values-bn
    │               └── strings.xml
    │           ├── values-ca
    │               └── strings.xml
    │           ├── values-cs
    │               └── strings.xml
    │           ├── values-da
    │               └── strings.xml
    │           ├── values-de
    │               └── strings.xml
    │           ├── values-el
    │               └── strings.xml
    │           ├── values-es
    │               └── strings.xml
    │           ├── values-et
    │               └── strings.xml
    │           ├── values-fa
    │               └── strings.xml
    │           ├── values-fi
    │               └── strings.xml
    │           ├── values-fr
    │               └── strings.xml
    │           ├── values-hi
    │               └── strings.xml
    │           ├── values-hr
    │               └── strings.xml
    │           ├── values-hu
    │               └── strings.xml
    │           ├── values-in
    │               └── strings.xml
    │           ├── values-it
    │               └── strings.xml
    │           ├── values-iw
    │               └── strings.xml
    │           ├── values-ja
    │               └── strings.xml
    │           ├── values-ko
    │               └── strings.xml
    │           ├── values-ku
    │               └── strings.xml
    │           ├── values-lt
    │               └── strings.xml
    │           ├── values-nl
    │               └── strings.xml
    │           ├── values-no
    │               └── strings.xml
    │           ├── values-pl
    │               └── strings.xml
    │           ├── values-pt-rBR
    │               └── strings.xml
    │           ├── values-pt
    │               └── strings.xml
    │           ├── values-ro
    │               └── strings.xml
    │           ├── values-ru
    │               └── strings.xml
    │           ├── values-si
    │               └── strings.xml
    │           ├── values-sk
    │               └── strings.xml
    │           ├── values-sv
    │               └── strings.xml
    │           ├── values-th
    │               └── strings.xml
    │           ├── values-tr
    │               └── strings.xml
    │           ├── values-uk
    │               └── strings.xml
    │           ├── values-ur
    │               └── strings.xml
    │           ├── values-vi
    │               └── strings.xml
    │           ├── values-zh-rCN
    │               └── strings.xml
    │           ├── values-zh-rHK
    │               └── strings.xml
    │           ├── values-zh-rTW
    │               └── strings.xml
    │           └── values
    │               └── strings.xml
├── dex2oat
    ├── .gitignore
    ├── build.gradle.kts
    └── src
    │   └── main
    │       └── cpp
    │           ├── CMakeLists.txt
    │           ├── dex2oat.c
    │           ├── logging.h
    │           └── oat_hook.cpp
├── external
    └── CMakeLists.txt
├── gradle.properties
├── gradle
    ├── libs.versions.toml
    └── wrapper
    │   ├── gradle-wrapper.jar
    │   └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── hiddenapi
    ├── bridge
    │   ├── .gitignore
    │   ├── build.gradle.kts
    │   └── src
    │   │   └── main
    │   │       └── java
    │   │           └── hidden
    │   │               ├── ByteBufferDexClassLoader.java
    │   │               └── HiddenApiBridge.java
    └── stubs
    │   ├── .gitignore
    │   ├── build.gradle.kts
    │   └── src
    │       └── main
    │           └── java
    │               ├── android
    │                   ├── annotation
    │                   │   ├── NonNull.java
    │                   │   └── Nullable.java
    │                   ├── app
    │                   │   ├── ActivityManager.java
    │                   │   ├── ActivityThread.java
    │                   │   ├── Application.java
    │                   │   ├── ContentProviderHolder.java
    │                   │   ├── ContextImpl.java
    │                   │   ├── IActivityController.java
    │                   │   ├── IActivityManager.java
    │                   │   ├── IApplicationThread.java
    │                   │   ├── INotificationManager.java
    │                   │   ├── IServiceConnection.java
    │                   │   ├── IUidObserver.java
    │                   │   ├── LoadedApk.java
    │                   │   ├── Notification.java
    │                   │   ├── NotificationChannel.java
    │                   │   ├── ProfilerInfo.java
    │                   │   └── ResourcesManager.java
    │                   ├── content
    │                   │   ├── AttributionSource.java
    │                   │   ├── BroadcastReceiver.java
    │                   │   ├── ComponentName.java
    │                   │   ├── Context.java
    │                   │   ├── IContentProvider.java
    │                   │   ├── IIntentReceiver.java
    │                   │   ├── IIntentSender.java
    │                   │   ├── Intent.java
    │                   │   ├── IntentFilter.java
    │                   │   ├── IntentSender.java
    │                   │   ├── pm
    │                   │   │   ├── ApplicationInfo.java
    │                   │   │   ├── BaseParceledListSlice.java
    │                   │   │   ├── IPackageInstaller.java
    │                   │   │   ├── IPackageManager.java
    │                   │   │   ├── PackageInfo.java
    │                   │   │   ├── PackageInstaller.java
    │                   │   │   ├── PackageManager.java
    │                   │   │   ├── PackageParser.java
    │                   │   │   ├── ParceledListSlice.java
    │                   │   │   ├── ResolveInfo.java
    │                   │   │   ├── UserInfo.java
    │                   │   │   └── VersionedPackage.java
    │                   │   └── res
    │                   │   │   ├── AssetManager.java
    │                   │   │   ├── CompatibilityInfo.java
    │                   │   │   ├── Configuration.java
    │                   │   │   ├── Resources.java
    │                   │   │   ├── ResourcesImpl.java
    │                   │   │   ├── ResourcesKey.java
    │                   │   │   └── TypedArray.java
    │                   ├── ddm
    │                   │   └── DdmHandleAppName.java
    │                   ├── graphics
    │                   │   ├── Movie.java
    │                   │   └── drawable
    │                   │   │   └── Drawable.java
    │                   ├── os
    │                   │   ├── Binder.java
    │                   │   ├── Build.java
    │                   │   ├── Bundle.java
    │                   │   ├── Environment.java
    │                   │   ├── Handler.java
    │                   │   ├── IBinder.java
    │                   │   ├── IInterface.java
    │                   │   ├── IPowerManager.java
    │                   │   ├── IServiceCallback.java
    │                   │   ├── IServiceManager.java
    │                   │   ├── IUserManager.java
    │                   │   ├── Parcel.java
    │                   │   ├── Parcelable.java
    │                   │   ├── PersistableBundle.java
    │                   │   ├── RemoteException.java
    │                   │   ├── ResultReceiver.java
    │                   │   ├── SELinux.java
    │                   │   ├── ServiceManager.java
    │                   │   ├── ShellCallback.java
    │                   │   ├── ShellCommand.java
    │                   │   ├── SystemProperties.java
    │                   │   ├── UserHandle.java
    │                   │   └── UserManager.java
    │                   ├── permission
    │                   │   └── IPermissionManager.java
    │                   ├── system
    │                   │   ├── ErrnoException.java
    │                   │   ├── Int32Ref.java
    │                   │   └── Os.java
    │                   ├── util
    │                   │   ├── DisplayMetrics.java
    │                   │   ├── MutableInt.java
    │                   │   └── TypedValue.java
    │                   ├── view
    │                   │   └── IWindowManager.java
    │                   └── webkit
    │                   │   ├── WebViewDelegate.java
    │                   │   ├── WebViewFactory.java
    │                   │   └── WebViewFactoryProvider.java
    │               ├── androidx
    │                   └── annotation
    │                   │   ├── IntRange.java
    │                   │   └── RequiresApi.java
    │               ├── com
    │                   └── android
    │                   │   ├── internal
    │                   │       ├── os
    │                   │       │   ├── BinderInternal.java
    │                   │       │   └── ZygoteInit.java
    │                   │       └── util
    │                   │       │   └── XmlUtils.java
    │                   │   └── server
    │                   │       ├── LocalServices.java
    │                   │       ├── SystemService.java
    │                   │       ├── SystemServiceManager.java
    │                   │       └── am
    │                   │           ├── ActivityManagerService.java
    │                   │           └── ProcessRecord.java
    │               ├── dalvik
    │                   └── system
    │                   │   ├── BaseDexClassLoader.java
    │                   │   └── VMRuntime.java
    │               ├── org
    │                   └── xmlpull
    │                   │   └── v1
    │                   │       └── XmlPullParserException.java
    │               ├── sun
    │                   ├── misc
    │                   │   └── CompoundEnumeration.java
    │                   └── net
    │                   │   └── www
    │                   │       ├── ParseUtil.java
    │                   │       └── protocol
    │                   │           └── jar
    │                   │               └── Handler.java
    │               └── xposed
    │                   └── dummy
    │                       ├── XResourcesSuperClass.java
    │                       └── XTypedArraySuperClass.java
├── magisk-loader
    ├── .gitignore
    ├── build.gradle.kts
    ├── magisk_module
    │   ├── META-INF
    │   │   └── com
    │   │   │   └── google
    │   │   │       └── android
    │   │   │           ├── update-binary
    │   │   │           └── updater-script
    │   ├── action.sh
    │   ├── customize.sh
    │   ├── daemon
    │   ├── module.prop
    │   ├── post-fs-data.sh
    │   ├── sepolicy.rule
    │   ├── service.sh
    │   ├── system.prop
    │   ├── uninstall.sh
    │   ├── util_functions.sh
    │   └── verify.sh
    ├── proguard-rules.pro
    ├── src
    │   ├── main
    │   │   ├── AndroidManifest.xml
    │   │   ├── java
    │   │   │   └── org
    │   │   │   │   └── lsposed
    │   │   │   │       └── lspd
    │   │   │   │           ├── core
    │   │   │   │               └── Main.java
    │   │   │   │           ├── service
    │   │   │   │               ├── BridgeService.java
    │   │   │   │               └── ParcelUtils.java
    │   │   │   │           └── util
    │   │   │   │               ├── ParasiticManagerHooker.java
    │   │   │   │               └── ParasiticManagerSystemHooker.java
    │   │   └── jni
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── api
    │   │   │       ├── zygisk.hpp
    │   │   │       └── zygisk_main.cpp
    │   │   │   ├── include
    │   │   │       └── loader.h
    │   │   │   ├── src
    │   │   │       ├── config_impl.h
    │   │   │       ├── magisk_loader.cpp
    │   │   │       ├── magisk_loader.h
    │   │   │       ├── service.cpp
    │   │   │       └── service.h
    │   │   │   └── template
    │   │   │       └── loader.cpp
    │   └── webroot
    │   │   ├── index.html
    │   │   └── index.js
    └── update
    │   ├── changelog.md
    │   ├── riru.json
    │   └── zygisk.json
├── services
    ├── daemon-service
    │   ├── .gitignore
    │   ├── build.gradle.kts
    │   ├── proguard-rules.pro
    │   └── src
    │   │   └── main
    │   │       ├── AndroidManifest.xml
    │   │       ├── aidl
    │   │           └── org
    │   │           │   └── lsposed
    │   │           │       └── lspd
    │   │           │           ├── models
    │   │           │               ├── Module.aidl
    │   │           │               └── PreLoadedApk.aidl
    │   │           │           └── service
    │   │           │               ├── ILSPApplicationService.aidl
    │   │           │               ├── ILSPInjectedModuleService.aidl
    │   │           │               ├── ILSPSystemServerService.aidl
    │   │           │               ├── ILSPosedService.aidl
    │   │           │               └── IRemotePreferenceCallback.aidl
    │   │       └── java
    │   │           └── org
    │   │               └── lsposed
    │   │                   └── lspd
    │   │                       └── util
    │   │                           └── Utils.java
    └── manager-service
    │   ├── .gitignore
    │   ├── build.gradle.kts
    │   ├── proguard-rules.pro
    │   └── src
    │       └── main
    │           ├── AndroidManifest.xml
    │           └── aidl
    │               └── org
    │                   └── lsposed
    │                       └── lspd
    │                           ├── ILSPManagerService.aidl
    │                           └── models
    │                               ├── Application.aidl
    │                               └── UserInfo.aidl
└── settings.gradle.kts


/.gitattributes:
--------------------------------------------------------------------------------
 1 | # Set the default behavior, in case people don't have core.autocrlf set.
 2 | * text=auto eol=lf
 3 | 
 4 | # Declare files that will always have CRLF line endings on checkout.
 5 | *.cmd text eol=crlf
 6 | *.bat text eol=crlf
 7 | 
 8 | # Denote all files that are truly binary and should not be modified.
 9 | *.so binary
10 | *.dex binary
11 | *.jar binary
12 | *.png binary
13 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 |   - name: Ask a question/提问
4 |     url: https://github.com/JingMatrix/LSPosed/discussions/new?category=Q-A
5 |     about: Please ask and answer questions here./如果有任何疑问请在这里提问
6 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.yml:
--------------------------------------------------------------------------------
 1 | ---
 2 | name: Feature request/新特性请求
 3 | description: Suggest an idea./提出建议
 4 | labels: [enhancement]
 5 | body:
 6 |   - type: textarea
 7 |     attributes:
 8 |       label: Is your feature request related to a problem?/你的请求是否与某个问题相关?
 9 |       placeholder: A clear and concise description of what the problem is./请清晰准确表述该问题。
10 |     validations:
11 |       required: true
12 |   - type: textarea
13 |     attributes:
14 |       label: Describe the solution you'd like/描述你想要的解决方案
15 |       placeholder: A clear and concise description of what you want to happen./请清晰准确描述新特性的预期行为
16 |     validations:
17 |       required: true
18 |   - type: textarea
19 |     attributes:
20 |       label: Additional context/其他信息
21 |       placeholder: Add any other context or screenshots about the feature request here./其他关于新特性的信息或者截图
22 |     validations:
23 |       required: false
24 | 


--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
 1 | version: 2
 2 | updates:
 3 |   - package-ecosystem: github-actions
 4 |     directory: /
 5 |     schedule:
 6 |       interval: monthly
 7 |     groups:
 8 |       actions:
 9 |         patterns:
10 |           - "*"
11 |   - package-ecosystem: gitsubmodule
12 |     directory: /
13 |     schedule:
14 |       interval: monthly
15 |     groups:
16 |       submodule:
17 |         patterns:
18 |           - "*"
19 |   - package-ecosystem: gradle
20 |     directory: /
21 |     schedule:
22 |       interval: daily
23 |     groups:
24 |       maven:
25 |         patterns:
26 |           - "*"
27 | 


--------------------------------------------------------------------------------
/.github/workflows/crowdin.yml:
--------------------------------------------------------------------------------
 1 | name: Crowdin Action
 2 | 
 3 | on:
 4 |   workflow_dispatch:
 5 |   push:
 6 |     branches: [ master ]
 7 |     paths:
 8 |       - app/src/main/res/values/strings.xml
 9 |       - daemon/src/main/res/values/strings.xml
10 | 
11 | jobs:
12 |   synchronize-with-crowdin:
13 |     runs-on: ubuntu-latest
14 |     steps:
15 |     - name: Checkout
16 |       uses: actions/checkout@main
17 | 
18 |     - name: crowdin action
19 |       uses: crowdin/github-action@master
20 |       with:
21 |         upload_translations: true
22 |         download_translations: false
23 |         upload_sources: true
24 |         config: 'crowdin.yml'
25 |         crowdin_branch_name: master
26 |       env:
27 |         CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
28 |         CROWDIN_API_TOKEN: ${{ secrets.CROWDIN_API_TOKEN }}
29 | 


--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
 1 | apache/local/generated
 2 | .project
 3 | .settings
 4 | .cache
 5 | *.iml
 6 | .gradle
 7 | /local.properties
 8 | /.idea
 9 | .DS_Store
10 | /build
11 | /captures
12 | 


--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
 1 | [submodule "external/lsplant"]
 2 | 	path = external/lsplant
 3 | 	url = https://github.com/JingMatrix/LSPlant.git
 4 | [submodule "external/dobby"]
 5 | 	path = external/dobby
 6 | 	url = https://github.com/JingMatrix/Dobby.git
 7 | [submodule "external/fmt"]
 8 | 	path = external/fmt
 9 | 	url = https://github.com/fmtlib/fmt.git
10 | [submodule "patch/libs/manifest-editor"]
11 |     path = axml/libs/manifest-editor
12 |     url = https://github.com/JingMatrix/ManifestEditor.git
13 | [submodule "external/xz-embedded"]
14 | 	path = external/xz-embedded
15 | 	url = https://github.com/tukaani-project/xz-embedded
16 | [submodule "apache/commons-lang"]
17 | 	path = apache/commons-lang
18 | 	url = https://github.com/apache/commons-lang
19 | [submodule "external/lsplt"]
20 | 	path = external/lsplt
21 | 	url = https://github.com/JingMatrix/LSPlt
22 | 


--------------------------------------------------------------------------------
/apache/build.gradle.kts:
--------------------------------------------------------------------------------
 1 | val androidSourceCompatibility: JavaVersion by rootProject.extra
 2 | val androidTargetCompatibility: JavaVersion by rootProject.extra
 3 | 
 4 | plugins {
 5 |     id("java-library")
 6 | }
 7 | 
 8 | java {
 9 |     sourceCompatibility = androidSourceCompatibility
10 |     targetCompatibility = androidTargetCompatibility
11 |     sourceSets {
12 |         main {
13 |             java.srcDirs("commons-lang/src/main/java", "local")
14 |         }
15 |     }
16 | }
17 | 
18 | val lang3Src = "commons-lang/src/main/java/org/apache/commons/lang3"
19 | val localDir = "local/generated"
20 | 
21 | task<Copy>("ClassUtilsX") {
22 |     from("$lang3Src/ClassUtils.java")
23 |     into(localDir)
24 |     filter { line: String -> line.replace("ClassUtils", "ClassUtilsX") }
25 |     rename("(.+).java", "$1X.java")
26 | }
27 | 
28 | task<Copy>("SerializationUtilsX") {
29 |     from("$lang3Src/SerializationUtils.java")
30 |     into(localDir)
31 |     filter { line: String -> line.replace("SerializationUtils", "SerializationUtilsX") }
32 |     rename("(.+).java", "$1X.java")
33 | }
34 | 
35 | tasks.compileJava {
36 |     dependsOn("ClassUtilsX")
37 |     dependsOn("SerializationUtilsX")
38 | }
39 | 


--------------------------------------------------------------------------------
/apache/local/MemberUtilsX.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Licensed to the Apache Software Foundation (ASF) under one or more
 3 |  * contributor license agreements.  See the NOTICE file distributed with
 4 |  * this work for additional information regarding copyright ownership.
 5 |  * The ASF licenses this file to You under the Apache License, Version 2.0
 6 |  * (the "License"); you may not use this file except in compliance with
 7 |  * the License.  You may obtain a copy of the License at
 8 |  *
 9 |  *      http://www.apache.org/licenses/LICENSE-2.0
10 |  *
11 |  * Unless required by applicable law or agreed to in writing, software
12 |  * distributed under the License is distributed on an "AS IS" BASIS,
13 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 |  * See the License for the specific language governing permissions and
15 |  * limitations under the License.
16 |  */
17 | 
18 | package org.apache.commons.lang3.reflect;
19 | 
20 | import java.lang.reflect.Constructor;
21 | import java.lang.reflect.Method;
22 | 
23 | public class MemberUtilsX {
24 |     public static int compareConstructorFit(final Constructor<?> left, final Constructor<?> right, final Class<?>[] actual) {
25 |         return MemberUtils.compareConstructorFit(left, right, actual);
26 |     }
27 | 
28 |     public static int compareMethodFit(final Method left, final Method right, final Class<?>[] actual) {
29 |         return MemberUtils.compareMethodFit(left, right, actual);
30 |     }
31 | }
32 | 


--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | 


--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
 1 | -keep class org.lsposed.manager.Constants {
 2 |     public static boolean setBinder(android.os.IBinder);
 3 | }
 4 | -assumenosideeffects class kotlin.jvm.internal.Intrinsics {
 5 |     public static void check*(...);
 6 |     public static void throw*(...);
 7 | }
 8 | -assumenosideeffects class android.util.Log {
 9 |     public static *** v(...);
10 |     public static *** d(...);
11 | }
12 | 
13 | -keepclasseswithmembers,allowobfuscation class * {
14 |   @com.google.gson.annotations.SerializedName <fields>;
15 | }
16 | 
17 | -repackageclasses
18 | -allowaccessmodification
19 | -overloadaggressively
20 | 
21 | # Gson uses generic type information stored in a class file when working with fields. Proguard
22 | # removes such information by default, so configure it to keep all of it.
23 | -keepattributes Signature,InnerClasses,EnclosingMethod
24 | 
25 | -dontwarn org.jetbrains.annotations.NotNull
26 | -dontwarn org.jetbrains.annotations.Nullable
27 | -dontwarn org.bouncycastle.jsse.BCSSLParameters
28 | -dontwarn org.bouncycastle.jsse.BCSSLSocket
29 | -dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
30 | -dontwarn org.conscrypt.Conscrypt*
31 | -dontwarn org.conscrypt.ConscryptHostnameVerifier
32 | -dontwarn org.openjsse.javax.net.ssl.SSLParameters
33 | -dontwarn org.openjsse.javax.net.ssl.SSLSocket
34 | -dontwarn org.openjsse.net.ssl.OpenJSSE
35 | 
36 | -keepclassmembers class * implements android.os.Parcelable {
37 |     public static final ** CREATOR;
38 | }
39 | 


--------------------------------------------------------------------------------
/app/src/main/assets/webview/template.html:
--------------------------------------------------------------------------------
 1 | <!DOCTYPE html>
 2 | <html dir="@dir@">
 3 | <head>
 4 |     <meta charset="utf-8">
 5 |     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
 6 |     <meta name="HandheldFriendly" content="true">
 7 |     <link rel="stylesheet" type="text/css" href="file:///android_asset/webview/colors_light.css"/>
 8 |     <link rel="stylesheet" type="text/css" href="file:///android_asset/webview/markdown.css"/>
 9 |     <link rel="stylesheet" type="text/css" href="file:///android_asset/webview/syntax.css"/>
10 | </head>
11 | <body>
12 |     <main id="content" class="markdown-body">@body@</main>
13 | </body>
14 | </html>
15 | 


--------------------------------------------------------------------------------
/app/src/main/assets/webview/template_dark.html:
--------------------------------------------------------------------------------
 1 | <!DOCTYPE html>
 2 | <html dir="@dir@">
 3 | <head>
 4 |     <meta charset="utf-8">
 5 |     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
 6 |     <meta name="HandheldFriendly" content="true">
 7 |     <link rel="stylesheet" type="text/css" href="file:///android_asset/webview/colors_dark.css"/>
 8 |     <link rel="stylesheet" type="text/css" href="file:///android_asset/webview/markdown.css"/>
 9 |     <link rel="stylesheet" type="text/css" href="file:///android_asset/webview/syntax_dark.css"/>
10 | </head>
11 | <body>
12 |     <main id="content" class="markdown-body">@body@</main>
13 | </body>
14 | </html>
15 | 


--------------------------------------------------------------------------------
/app/src/main/java/org/lsposed/manager/Constants.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 LSPosed Contributors
19 |  */
20 | 
21 | package org.lsposed.manager;
22 | 
23 | import android.os.IBinder;
24 | 
25 | import org.lsposed.manager.receivers.LSPManagerServiceHolder;
26 | 
27 | public class Constants {
28 |     public static boolean setBinder(IBinder binder) {
29 |         LSPManagerServiceHolder.init(binder);
30 |         return LSPManagerServiceHolder.getService().asBinder().isBinderAlive();
31 |     }
32 | }
33 | 


--------------------------------------------------------------------------------
/app/src/main/java/org/lsposed/manager/util/AccessibilityUtils.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.manager.util;
 2 | 
 3 | import android.content.ContentResolver;
 4 | import android.provider.Settings;
 5 | 
 6 | public class AccessibilityUtils {
 7 |   public static boolean isAnimationEnabled(ContentResolver cr) {
 8 |     return !(Settings.Global.getFloat(cr, Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f) == 0.0f
 9 |         && Settings.Global.getFloat(cr, Settings.Global.TRANSITION_ANIMATION_SCALE, 1.0f) == 0.0f
10 |         && Settings.Global.getFloat(cr, Settings.Global.WINDOW_ANIMATION_SCALE, 1.0f) == 0.0f);
11 |   }
12 | }
13 | 


--------------------------------------------------------------------------------
/app/src/main/java/org/lsposed/manager/util/chrome/CustomTabsURLSpan.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 LSPosed Contributors
19 |  */
20 | 
21 | package org.lsposed.manager.util.chrome;
22 | 
23 | import android.app.Activity;
24 | import android.text.style.URLSpan;
25 | import android.view.View;
26 | 
27 | import org.lsposed.manager.util.NavUtil;
28 | 
29 | public class CustomTabsURLSpan extends URLSpan {
30 | 
31 |     private final Activity activity;
32 | 
33 |     public CustomTabsURLSpan(Activity activity, String url) {
34 |         super(url);
35 |         this.activity = activity;
36 |     }
37 | 
38 |     @Override
39 |     public void onClick(View widget) {
40 |         String url = getURL();
41 |         NavUtil.startURL(activity, url);
42 |     }
43 | }
44 | 


--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_enter.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <set xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <alpha
22 |         android:duration="@android:integer/config_shortAnimTime"
23 |         android:fromAlpha="0"
24 |         android:toAlpha="1" />
25 |     <scale
26 |         android:duration="@android:integer/config_shortAnimTime"
27 |         android:fromXScale="0.9"
28 |         android:fromYScale="0.9"
29 |         android:pivotX="50%p"
30 |         android:pivotY="50%p"
31 |         android:toXScale="1"
32 |         android:toYScale="1" />
33 | </set>
34 | 


--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_enter_pop.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <set xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <alpha
22 |         android:duration="@android:integer/config_shortAnimTime"
23 |         android:fromAlpha="0"
24 |         android:toAlpha="1" />
25 |     <scale
26 |         android:duration="@android:integer/config_shortAnimTime"
27 |         android:fromXScale="1.1"
28 |         android:fromYScale="1.1"
29 |         android:pivotX="50%p"
30 |         android:pivotY="50%p"
31 |         android:toXScale="1"
32 |         android:toYScale="1" />
33 | </set>
34 | 


--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_exit.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <set xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <alpha
22 |         android:duration="@android:integer/config_shortAnimTime"
23 |         android:fromAlpha="1"
24 |         android:toAlpha="0" />
25 |     <scale
26 |         android:duration="@android:integer/config_shortAnimTime"
27 |         android:fromXScale="1"
28 |         android:fromYScale="1"
29 |         android:pivotX="50%p"
30 |         android:pivotY="50%p"
31 |         android:toXScale="1.1"
32 |         android:toYScale="1.1" />
33 | </set>
34 | 


--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_exit_pop.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <set xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <alpha
22 |         android:duration="@android:integer/config_shortAnimTime"
23 |         android:fromAlpha="1"
24 |         android:toAlpha="0" />
25 |     <scale
26 |         android:duration="@android:integer/config_shortAnimTime"
27 |         android:fromXScale="1"
28 |         android:fromYScale="1"
29 |         android:pivotX="50%p"
30 |         android:pivotY="50%p"
31 |         android:toXScale="0.9"
32 |         android:toYScale="0.9" />
33 | </set>
34 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_assignment_checkable.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <selector xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <item android:drawable="@drawable/ic_baseline_assignment_24" android:state_checked="true" />
23 |     <item android:drawable="@drawable/ic_outline_assignment_24" />
24 | </selector>
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_attach_file.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
22 |     android:width="24dp"
23 |     android:height="24dp"
24 |     android:viewportWidth="24"
25 |     android:viewportHeight="24"
26 |     android:tint="?attr/colorControlNormal">
27 |     <path
28 |         android:fillColor="@android:color/white"
29 |         android:pathData="M16.5,6v11.5c0,2.21 -1.79,4 -4,4s-4,-1.79 -4,-4V5c0,-1.38 1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5v10.5c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1V6H10v9.5c0,1.38 1.12,2.5 2.5,2.5s2.5,-1.12 2.5,-2.5V5c0,-2.21 -1.79,-4 -4,-4S7,2.79 7,5v12.5c0,3.04 2.46,5.5 5.5,5.5s5.5,-2.46 5.5,-5.5V6h-1.5z" />
30 | </vector>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_add_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |     <path
27 |         android:fillColor="@android:color/white"
28 |         android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_arrow_back_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal"
26 |     android:autoMirrored="true">
27 |     <path
28 |         android:fillColor="@android:color/white"
29 |         android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" />
30 | </vector>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_assignment_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal"
26 |     android:autoMirrored="true">
27 |   <path
28 |       android:fillColor="@color/ic_launcher_foreground"
29 |       android:pathData="M19,3h-4.18C14.4,1.84 13.3,1 12,1c-1.3,0 -2.4,0.84 -2.82,2L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM12,3c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM14,17L7,17v-2h7v2zM17,13L7,13v-2h10v2zM17,9L7,9L7,7h10v2z"/>
30 | </vector>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_chat_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM6,9h12v2L6,11L6,9zM14,14L6,14v-2h8v2zM18,8L6,8L6,6h12v2z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_extension_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@color/ic_launcher_foreground"
28 |       android:pathData="M20.5,11H19V7c0,-1.1 -0.9,-2 -2,-2h-4V3.5C13,2.12 11.88,1 10.5,1S8,2.12 8,3.5V5H4c-1.1,0 -1.99,0.9 -1.99,2v3.8H3.5c1.49,0 2.7,1.21 2.7,2.7s-1.21,2.7 -2.7,2.7H2V20c0,1.1 0.9,2 2,2h3.8v-1.5c0,-1.49 1.21,-2.7 2.7,-2.7 1.49,0 2.7,1.21 2.7,2.7V22H17c1.1,0 2,-0.9 2,-2v-4h1.5c1.38,0 2.5,-1.12 2.5,-2.5S21.88,11 20.5,11z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_get_app_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@color/ic_launcher_foreground"
28 |       android:pathData="M19,9h-4V3H9v6H5l7,7 7,-7zM5,18v2h14v-2H5z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_home_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_info_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_search_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |     <path
27 |         android:fillColor="@android:color/white"
28 |         android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_settings_backup_restore_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M14,12c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2 0.9,2 2,2 2,-0.9 2,-2zM12,3c-4.97,0 -9,4.03 -9,9L0,12l4,4 4,-4L5,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.51,0 -2.91,-0.49 -4.06,-1.3l-1.42,1.44C8.04,20.3 9.94,21 12,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_extension_checkable.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | 
22 | <selector xmlns:android="http://schemas.android.com/apk/res/android">
23 |     <item android:drawable="@drawable/ic_baseline_extension_24" android:state_checked="true" />
24 |     <item android:drawable="@drawable/ic_outline_extension_24" />
25 | </selector>
26 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_get_app_checkable.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <selector xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <item android:drawable="@drawable/ic_baseline_get_app_24" android:state_checked="true" />
23 |     <item android:drawable="@drawable/ic_outline_get_app_24" />
24 | </selector>
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home_checkable.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <selector xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <item android:drawable="@drawable/ic_baseline_home_24" android:state_checked="true" />
23 |     <item android:drawable="@drawable/ic_outline_home_24" />
24 | </selector>
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_keyboard_arrow_down.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
22 |     android:width="24dp"
23 |     android:height="24dp"
24 |     android:viewportWidth="24"
25 |     android:viewportHeight="24"
26 |     android:tint="?attr/colorControlNormal">
27 |     <path
28 |         android:fillColor="@android:color/white"
29 |         android:pathData="M7.41,8.59L12,13.17l4.59,-4.58L18,10l-6,6 -6,-6 1.41,-1.41z" />
30 | </vector>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <background android:drawable="@color/ic_launcher_background" />
23 |     <foreground android:drawable="@drawable/ic_launcher_foreground" />
24 | </adaptive-icon>
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_round.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <item>
22 |         <shape android:shape="oval">
23 |             <solid android:color="@color/ic_launcher_background" />
24 |             <size
25 |                 android:width="32dp"
26 |                 android:height="32dp" />
27 |         </shape>
28 |     </item>
29 |     <item
30 |         android:width="32dp"
31 |         android:height="32dp">
32 |         <inset
33 |             android:inset="-8dp"
34 |             android:drawable="@drawable/ic_launcher_foreground" />
35 |     </item>
36 | </layer-list>
37 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_open_in_browser.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
22 |     android:width="24dp"
23 |     android:height="24dp"
24 |     android:viewportWidth="24"
25 |     android:viewportHeight="24"
26 |     android:tint="?attr/colorControlNormal">
27 |     <path
28 |         android:fillColor="@android:color/white"
29 |         android:pathData="M19,4L5,4c-1.11,0 -2,0.9 -2,2v12c0,1.1 0.89,2 2,2h4v-2L5,18L5,8h14v10h-4v2h4c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.89,-2 -2,-2zM12,10l-4,4h3v6h2v-6h3l-4,-4z" />
30 | </vector>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_format_color_fill_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M16.56,8.94L7.62,0L6.21,1.41l2.38,2.38L3.44,8.94c-0.59,0.59 -0.59,1.54 0,2.12l5.5,5.5C9.23,16.85 9.62,17 10,17s0.77,-0.15 1.06,-0.44l5.5,-5.5C17.15,10.48 17.15,9.53 16.56,8.94zM5.21,10L10,5.21L14.79,10H5.21zM19,11.5c0,0 -2,2.17 -2,3.5c0,1.1 0.9,2 2,2s2,-0.9 2,-2C21,13.67 19,11.5 19,11.5zM2,20h20v4H2V20z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_get_app_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M13,5v6h1.17L12,13.17 9.83,11L11,11L11,5h2m2,-2L9,3v6L5,9l7,7 7,-7h-4L15,3zM19,18L5,18v2h14v-2z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_home_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M12,5.69l5,4.5V18h-2v-6H9v6H7v-7.81l5,-4.5M12,3L2,12h3v8h6v-6h2v6h6v-8h3L12,3z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_invert_colors_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M17.66,7.93L12,2.27 6.34,7.93c-3.12,3.12 -3.12,8.19 0,11.31C7.9,20.8 9.95,21.58 12,21.58s4.1,-0.78 5.66,-2.34c3.12,-3.12 3.12,-8.19 0,-11.31zM12,19.59c-1.6,0 -3.11,-0.62 -4.24,-1.76C6.62,16.69 6,15.19 6,13.59s0.62,-3.11 1.76,-4.24L12,5.1v14.49z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_merge_type_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M17,20.41L18.41,19 15,15.59 13.59,17 17,20.41zM7.5,8H11v5.59L5.59,19 7,20.41l6,-6V8h3.5L12,3.5 7.5,8z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_restore_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M13,3c-4.97,0 -9,4.03 -9,9L1,12l4,3.99L9,12L6,12c0,-3.87 3.13,-7 7,-7s7,3.13 7,7 -3.13,7 -7,7c-1.93,0 -3.68,-0.79 -4.94,-2.06l-1.42,1.42C8.27,19.99 10.51,21 13,21c4.97,0 9,-4.03 9,-9s-4.03,-9 -9,-9zM12,8v5l4.25,2.52 0.77,-1.28 -3.52,-2.09L13.5,8z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_shield_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |     <path
27 |         android:fillColor="@android:color/white"
28 |         android:pathData="M12 2L4 5v6.09c0 5.05 3.41 9.76 8 10.91c4.59-1.15 8-5.86 8-10.91V5l-8-3zm6 9.09c0 4-2.55 7.7-6 8.83c-3.45-1.13-6-4.82-6-8.83v-4.7l6-2.25l6 2.25v4.7z" />
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_speaker_notes_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:autoMirrored="true"
24 |     android:tint="?attr/colorControlNormal"
25 |     android:viewportWidth="24"
26 |     android:viewportHeight="24">
27 |     <path
28 |         android:fillColor="@android:color/white"
29 |         android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM20,16L5.17,16l-0.59,0.59 -0.58,0.58L4,4h16v12zM6,12h2v2L6,14zM6,9h2v2L6,11zM6,6h2v2L6,8zM10,12h5v2h-5zM10,9h8v2h-8zM10,6h8v2h-8z" />
30 | </vector>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_outline_translate_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |   <path
27 |       android:fillColor="@android:color/white"
28 |       android:pathData="M12.87,15.07l-2.54,-2.51 0.03,-0.03c1.74,-1.94 2.98,-4.17 3.71,-6.53L17,6L17,4h-7L10,2L8,2v2L1,4v1.99h11.17C11.5,7.92 10.44,9.75 9,11.35 8.07,10.32 7.3,9.19 6.69,8h-2c0.73,1.63 1.73,3.17 2.98,4.56l-5.09,5.02L4,19l5,-5 3.11,3.11 0.76,-2.04zM18.5,10h-2L12,22h2l1.12,-3h4.75L21,22h2l-4.5,-12zM15.88,17l1.62,-4.33L19.12,17h-3.24z"/>
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_round_check_circle_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |     <path
27 |         android:fillColor="@android:color/white"
28 |         android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM9.29,16.29L5.7,12.7c-0.39,-0.39 -0.39,-1.02 0,-1.41 0.39,-0.39 1.02,-0.39 1.41,0L10,14.17l6.88,-6.88c0.39,-0.39 1.02,-0.39 1.41,0 0.39,0.39 0.39,1.02 0,1.41l-7.59,7.59c-0.38,0.39 -1.02,0.39 -1.41,0z" />
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_round_error_outline_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |     <path
27 |         android:fillColor="@android:color/white"
28 |         android:pathData="M12,7c0.55,0 1,0.45 1,1v4c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1L11,8c0,-0.55 0.45,-1 1,-1zM11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8zM13,17h-2v-2h2v2z" />
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_round_warning_24.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:width="24dp"
22 |     android:height="24dp"
23 |     android:viewportWidth="24"
24 |     android:viewportHeight="24"
25 |     android:tint="?attr/colorControlNormal">
26 |     <path
27 |         android:fillColor="@android:color/white"
28 |         android:pathData="M4.47,21h15.06c1.54,0 2.5,-1.67 1.73,-3L13.73,4.99c-0.77,-1.33 -2.69,-1.33 -3.46,0L2.74,18c-0.77,1.33 0.19,3 1.73,3zM12,14c-0.55,0 -1,-0.45 -1,-1v-2c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v2c0,0.55 -0.45,1 -1,1zM13,18h-2v-2h2v2z" />
29 | </vector>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_save.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <vector xmlns:android="http://schemas.android.com/apk/res/android"
22 |     android:width="24dp"
23 |     android:height="24dp"
24 |     android:tint="?attr/colorControlNormal"
25 |     android:viewportWidth="24"
26 |     android:viewportHeight="24">
27 |     <path
28 |         android:fillColor="@android:color/white"
29 |         android:pathData="M17,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7l-4,-4zM19,19L5,19L5,5h11.17L19,7.83L19,19zM12,12c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3zM6,6h9v4L6,10z" />
30 | </vector>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_settings_checkable.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <selector xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <item android:drawable="@drawable/ic_baseline_settings_24" android:state_checked="true" />
23 |     <item android:drawable="@drawable/ic_outline_settings_24" />
24 | </selector>
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/shortcut_ic_logs.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <background android:drawable="@color/ic_launcher_background" />
23 |     <foreground>
24 |         <!-- 44dp icon scaled to 52dp in 72dp, padding = (1-52/44*24/72)/2 -->
25 |         <inset
26 |             android:drawable="@drawable/ic_baseline_assignment_24"
27 |             android:inset="30.303%" />
28 |     </foreground>
29 | </adaptive-icon>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/shortcut_ic_modules.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <background android:drawable="@color/ic_launcher_background" />
23 |     <foreground>
24 |         <!-- 44dp icon scaled to 52dp in 72dp, padding = (1-52/44*24/72)/2 -->
25 |         <inset
26 |             android:drawable="@drawable/ic_baseline_extension_24"
27 |             android:inset="30.303%" />
28 |     </foreground>
29 | </adaptive-icon>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/shortcut_ic_repo.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <background android:drawable="@color/ic_launcher_background" />
22 |     <foreground>
23 |         <!-- 44dp icon scaled to 52dp in 72dp, padding = (1-52/44*24/72)/2 -->
24 |         <inset
25 |             android:drawable="@drawable/ic_baseline_get_app_24"
26 |             android:inset="30.303%" />
27 |     </foreground>
28 | </adaptive-icon>
29 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/shortcut_ic_settings.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <background android:drawable="@color/ic_launcher_background" />
22 |     <foreground>
23 |         <!-- 44dp icon scaled to 52dp in 72dp, padding = (1-52/44*24/72)/2 -->
24 |         <inset
25 |             android:drawable="@drawable/ic_baseline_settings_24"
26 |             android:inset="30.303%" />
27 |     </foreground>
28 | </adaptive-icon>
29 | 


--------------------------------------------------------------------------------
/app/src/main/res/drawable/simple_menu_background.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
20 |     <item>
21 |         <shape>
22 |             <solid android:color="?attr/colorSurface" />
23 |             <corners android:radius="?popupBackgroundRadius" />
24 |         </shape>
25 |     </item>
26 |     <item>
27 |         <shape>
28 |             <solid android:color="@color/m3_popupmenu_overlay_color" />
29 |             <corners android:radius="?popupBackgroundRadius" />
30 |         </shape>
31 |     </item>
32 | </layer-list>
33 | 


--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_item.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | <com.google.android.material.textview.MaterialTextView xmlns:android="http://schemas.android.com/apk/res/android"
20 |     android:id="@+id/item"
21 |     style="@style/TextAppearance.MaterialComponents.Body2"
22 |     android:layout_width="match_parent"
23 |     android:layout_height="wrap_content"
24 |     android:gravity="center_vertical|start"
25 |     android:minHeight="?attr/listPreferredItemHeight"
26 |     android:paddingStart="?attr/listPreferredItemPaddingStart"
27 |     android:paddingEnd="?attr/listPreferredItemPaddingEnd"
28 |     android:textAlignment="viewStart" />
29 | 


--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_title.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | <com.google.android.material.textview.MaterialTextView xmlns:android="http://schemas.android.com/apk/res/android"
20 |     android:id="@+id/title"
21 |     style="@style/MaterialAlertDialog.Material3.Title.Text.CenterStacked"
22 |     android:layout_width="match_parent"
23 |     android:layout_height="wrap_content"
24 |     android:paddingTop="?attr/dialogPreferredPadding"
25 |     android:paddingBottom="?attr/dialogPreferredPadding" />
26 | 


--------------------------------------------------------------------------------
/app/src/main/res/layout/item_log_textview.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | <com.google.android.material.textview.MaterialTextView xmlns:android="http://schemas.android.com/apk/res/android"
20 |     android:id="@+id/log_item"
21 |     style="@style/TextAppearance.AppCompat.Small"
22 |     android:layout_width="wrap_content"
23 |     android:layout_height="wrap_content"
24 |     android:clipToPadding="false"
25 |     android:fontFamily="monospace"
26 |     android:hyphenationFrequency="fullFast"
27 |     android:paddingHorizontal="@dimen/m3_appbar_expanded_title_margin_horizontal"
28 |     android:textColor="?attr/colorOnSurface"
29 |     android:textSize="12sp" />
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/layout/item_master_switch.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <rikka.widget.mainswitchbar.MainSwitchBar xmlns:android="http://schemas.android.com/apk/res/android"
22 |     android:id="@+id/master_switch"
23 |     android:layout_width="match_parent"
24 |     android:layout_height="wrap_content"
25 |     android:text="@string/enable_module" />
26 | 


--------------------------------------------------------------------------------
/app/src/main/res/layout/scrollable_dialog.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <rikka.widget.borderview.BorderNestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
21 |     android:layout_width="match_parent"
22 |     android:layout_height="wrap_content">
23 | 
24 |     <LinearLayout
25 |         android:id="@+id/dialog_container"
26 |         android:layout_width="match_parent"
27 |         android:layout_height="wrap_content"
28 |         android:orientation="vertical"
29 |         android:paddingHorizontal="?dialogPreferredPadding"
30 |         android:paddingTop="?dialogPreferredPadding">
31 | 
32 |     </LinearLayout>
33 | </rikka.widget.borderview.BorderNestedScrollView>
34 | 


--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_home.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <menu xmlns:android="http://schemas.android.com/apk/res/android">
21 |     <item
22 |         android:id="@+id/menu_issue"
23 |         android:actionViewClass="androidx.appcompat.widget.SearchView"
24 |         android:icon="@drawable/ic_baseline_chat_24"
25 |         android:showAsAction="never"
26 |         android:title="@string/feedback_or_suggestion" />
27 | 
28 |     <item
29 |         android:id="@+id/menu_about"
30 |         android:actionViewClass="androidx.appcompat.widget.SearchView"
31 |         android:icon="@drawable/ic_baseline_info_24"
32 |         android:showAsAction="never"
33 |         android:title="@string/About" />
34 | </menu>
35 | 


--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_modules.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <menu xmlns:android="http://schemas.android.com/apk/res/android">
22 | 
23 |     <item
24 |         android:id="@+id/menu_search"
25 |         android:actionViewClass="androidx.appcompat.widget.SearchView"
26 |         android:icon="@drawable/ic_baseline_search_24"
27 |         android:showAsAction="ifRoom|collapseActionView"
28 |         android:title="@android:string/search_go" />
29 | 
30 | </menu>
31 | 


--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_repo_item.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <menu xmlns:android="http://schemas.android.com/apk/res/android">
22 |     <item
23 |         android:id="@+id/menu_open_in_browser"
24 |         android:title="@string/menu_open_in_browser"
25 |         android:icon="@drawable/ic_open_in_browser"
26 |         android:showAsAction="ifRoom" />
27 | </menu>
28 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-night-v31/colors.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2023 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <color name="ic_launcher_foreground">@android:color/system_accent1_800</color>
23 |     <color name="ic_launcher_background">@android:color/system_accent1_200</color>
24 | </resources>
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2023 LSPosed Contributors
18 |   -->
19 | 
20 | <resources>
21 |     <color name="primary_text_material_inverse">@color/abc_primary_text_material_light</color>
22 |     <color name="primary_text_material">@color/abc_primary_text_material_dark</color>
23 | 
24 |     <color name="ic_launcher_foreground">#F06292</color>
25 |     <color name="ic_launcher_background">#E1F5FE</color>
26 | </resources>
27 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-sw600dp/integer.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <integer name="internal_fragment_bottom_insets">0x50</integer> <!-- bottom -->
23 | </resources>
24 | 
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-v28/dimens.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <resources>
21 |     <dimen name="home_primary_elevation">12dp</dimen>
22 | </resources>
23 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-v28/themes.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <resources>
21 |     <style name="Theme.Light" parent="Base.AppTheme.Light">
22 |         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
23 |     </style>
24 | 
25 |     <style name="Theme" parent="Base.AppTheme">
26 |         <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
27 |     </style>
28 | 
29 | </resources>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-v29/settings.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <bool name="show_system_settings">true</bool>
23 | </resources>
24 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-v30/themes.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <resources>
21 |     <style name="Theme.Light" parent="Base.AppTheme.Light">
22 |         <item name="android:windowLayoutInDisplayCutoutMode">always</item>
23 |     </style>
24 | 
25 |     <style name="Theme" parent="Base.AppTheme">
26 |         <item name="android:windowLayoutInDisplayCutoutMode">always</item>
27 |     </style>
28 | 
29 | </resources>
30 | 


--------------------------------------------------------------------------------
/app/src/main/res/values-v31/colors.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2023 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <color name="ic_launcher_foreground">@android:color/system_accent1_0</color>
23 |     <color name="ic_launcher_background">@android:color/system_accent1_600</color>
24 | </resources>
25 | 


--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?><!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2023 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <color name="primary_text_material_inverse">@color/abc_primary_text_material_dark</color>
23 | 
24 |     <color name="primary_text_material">@color/abc_primary_text_material_light</color>
25 | 
26 |     <color name="ic_launcher_foreground">#FFFFFF</color>
27 |     <color name="ic_launcher_background">#F48FB1</color>
28 | </resources>
29 | 


--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2020 EdXposed Contributors
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <dimen name="app_icon_size">48dp</dimen>
23 |     <dimen name="tab_layout_height">48dp</dimen>
24 | 
25 |     <dimen name="home_primary_elevation">6dp</dimen>
26 | </resources>
27 | 


--------------------------------------------------------------------------------
/app/src/main/res/values/integer.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <integer name="internal_fragment_insets">0x00800007</integer> <!-- start|end -->
23 |     <integer name="internal_fragment_top_insets">0x30</integer> <!-- top -->
24 |     <integer name="internal_fragment_bottom_insets">0</integer> <!-- null -->
25 | </resources>
26 | 


--------------------------------------------------------------------------------
/app/src/main/res/values/settings.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2022 LSPosed Contributors
19 |   -->
20 | 
21 | <resources>
22 |     <bool name="show_system_settings">false</bool>
23 | </resources>
24 | 


--------------------------------------------------------------------------------
/app/src/main/res/values/strings_untranslatable.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | 
20 | <resources>
21 |     <string name="app_name" translatable="false">LSPosed</string>
22 |     <string name="install_url" translatable="false">https://github.com/JingMatrix/LSPosed#install</string>
23 |     <string name="latest_url" translatable="false">https://github.com/JingMatrix/LSPosed/releases/latest</string>
24 |     <string name="settings_group_repo" translatable="false">@string/module_repo</string>
25 | </resources>
26 | 


--------------------------------------------------------------------------------
/app/src/main/res/values/themes_overlay.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2021 LSPosed Contributors
18 |   -->
19 | <resources>
20 | 
21 |     <style name="ThemeOverlay" />
22 | 
23 |     <style name="ThemeOverlay.Black">
24 |         <item name="colorSurface">@android:color/black</item>
25 |         <item name="android:colorBackground">@android:color/black</item>
26 |     </style>
27 | </resources>
28 | 


--------------------------------------------------------------------------------
/axml/.gitignore:
--------------------------------------------------------------------------------
1 | /build


--------------------------------------------------------------------------------
/axml/build.gradle.kts:
--------------------------------------------------------------------------------
 1 | val androidSourceCompatibility: JavaVersion by rootProject.extra
 2 | val androidTargetCompatibility: JavaVersion by rootProject.extra
 3 | 
 4 | plugins {
 5 |     id("java-library")
 6 | }
 7 | 
 8 | java {
 9 |     sourceCompatibility = androidSourceCompatibility
10 |     targetCompatibility = androidTargetCompatibility
11 |     sourceSets {
12 |         main {
13 |             java.srcDirs("libs/manifest-editor/lib/src/main/java")
14 |             resources.srcDirs("libs/manifest-editor/lib/src/main")
15 |         }
16 |     }
17 | }
18 | 


--------------------------------------------------------------------------------
/core/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /.cxx
3 | /src/main/jni/src/config.cpp
4 | 


--------------------------------------------------------------------------------
/core/proguard-rules.pro:
--------------------------------------------------------------------------------
 1 | -keep class android.** { *; }
 2 | -keep class de.robv.android.xposed.** {*;}
 3 | -keep class io.github.libxposed.** {*;}
 4 | -keep class org.lsposed.lspd.core.* {*;}
 5 | -keep class org.lsposed.lspd.hooker.HandleSystemServerProcessHooker {*;}
 6 | -keep class org.lsposed.lspd.hooker.HandleSystemServerProcessHooker$Callback {*;}
 7 | -keep class org.lsposed.lspd.impl.LSPosedBridge$NativeHooker {*;}
 8 | -keep class org.lsposed.lspd.impl.LSPosedBridge$HookerCallback {*;}
 9 | -keep class org.lsposed.lspd.util.Hookers {*;}
10 | 
11 | -keepnames class org.lsposed.lspd.impl.LSPosedHelper {
12 |     public <methods>;
13 | }
14 | 
15 | -keepattributes RuntimeVisibleAnnotations
16 | -keepclasseswithmembers,includedescriptorclasses class * {
17 |     native <methods>;
18 | }
19 | -keepclassmembers class org.lsposed.lspd.impl.LSPosedContext {
20 |     public <methods>;
21 | }
22 | -keepclassmembers class org.lsposed.lspd.impl.LSPosedHookCallback {
23 |     public <methods>;
24 | }
25 | -keep,allowoptimization,allowobfuscation @io.github.libxposed.api.annotations.* class * {
26 |     @io.github.libxposed.api.annotations.BeforeInvocation <methods>;
27 |     @io.github.libxposed.api.annotations.AfterInvocation <methods>;
28 | }
29 | -assumenosideeffects class android.util.Log {
30 |     public static *** v(...);
31 |     public static *** d(...);
32 | }
33 | -repackageclasses
34 | -allowaccessmodification
35 | 


--------------------------------------------------------------------------------
/core/src/main/java/de/robv/android/xposed/IXposedHookLoadPackage.java:
--------------------------------------------------------------------------------
 1 | package de.robv.android.xposed;
 2 | 
 3 | import android.app.Application;
 4 | 
 5 | import de.robv.android.xposed.callbacks.XC_LoadPackage;
 6 | import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
 7 | 
 8 | /**
 9 |  * Get notified when an app ("Android package") is loaded.
10 |  * This is especially useful to hook some app-specific methods.
11 |  *
12 |  * <p>This interface should be implemented by the module's main class. Xposed will take care of
13 |  * registering it as a callback automatically.
14 |  */
15 | public interface IXposedHookLoadPackage extends IXposedMod {
16 |     /**
17 |      * This method is called when an app is loaded. It's called very early, even before
18 |      * {@link Application#onCreate} is called.
19 |      * Modules can set up their app-specific hooks here.
20 |      *
21 |      * @param lpparam Information about the app.
22 |      * @throws Throwable Everything the callback throws is caught and logged.
23 |      */
24 |     void handleLoadPackage(LoadPackageParam lpparam) throws Throwable;
25 | 
26 |     /** @hide */
27 |     final class Wrapper extends XC_LoadPackage {
28 |         private final IXposedHookLoadPackage instance;
29 |         public Wrapper(IXposedHookLoadPackage instance) {
30 |             this.instance = instance;
31 |         }
32 |         @Override
33 |         public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
34 |             instance.handleLoadPackage(lpparam);
35 |         }
36 |     }
37 | }
38 | 


--------------------------------------------------------------------------------
/core/src/main/java/de/robv/android/xposed/IXposedMod.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 LSPosed Contributors
19 |  */
20 | 
21 | package de.robv.android.xposed;
22 | 
23 | /**
24 |  * Marker interface for Xposed modules. Cannot be implemented directly.
25 |  */
26 | /* package */ interface IXposedMod {
27 | }
28 | 


--------------------------------------------------------------------------------
/core/src/main/java/org/lsposed/lspd/hooker/AttachHooker.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.hooker;
 2 | 
 3 | import android.app.ActivityThread;
 4 | 
 5 | import de.robv.android.xposed.XposedInit;
 6 | import io.github.libxposed.api.XposedInterface;
 7 | import io.github.libxposed.api.annotations.AfterInvocation;
 8 | import io.github.libxposed.api.annotations.XposedHooker;
 9 | 
10 | @XposedHooker
11 | public class AttachHooker implements XposedInterface.Hooker {
12 | 
13 |     @AfterInvocation
14 |     public static void afterHookedMethod(XposedInterface.AfterHookCallback callback) {
15 |         XposedInit.loadModules((ActivityThread) callback.getThisObject());
16 |     }
17 | }
18 | 


--------------------------------------------------------------------------------
/core/src/main/java/org/lsposed/lspd/hooker/CrashDumpHooker.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.hooker;
 2 | 
 3 | import org.lsposed.lspd.impl.LSPosedBridge;
 4 | import org.lsposed.lspd.util.Utils.Log;
 5 | 
 6 | import io.github.libxposed.api.XposedInterface;
 7 | import io.github.libxposed.api.annotations.BeforeInvocation;
 8 | import io.github.libxposed.api.annotations.XposedHooker;
 9 | 
10 | @XposedHooker
11 | public class CrashDumpHooker implements XposedInterface.Hooker {
12 | 
13 |     @BeforeInvocation
14 |     public static void beforeHookedMethod(XposedInterface.BeforeHookCallback callback) {
15 |         try {
16 |             var e = (Throwable) callback.getArgs()[0];
17 |             LSPosedBridge.log("Crash unexpectedly: " + Log.getStackTraceString(e));
18 |         } catch (Throwable ignored) {
19 |         }
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/core/src/main/java/org/lsposed/lspd/hooker/OpenDexFileHooker.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.hooker;
 2 | 
 3 | import android.os.Build;
 4 | 
 5 | import org.lsposed.lspd.impl.LSPosedBridge;
 6 | import org.lsposed.lspd.nativebridge.HookBridge;
 7 | 
 8 | import io.github.libxposed.api.XposedInterface;
 9 | import io.github.libxposed.api.annotations.AfterInvocation;
10 | import io.github.libxposed.api.annotations.XposedHooker;
11 | 
12 | @XposedHooker
13 | public class OpenDexFileHooker implements XposedInterface.Hooker {
14 | 
15 |     @AfterInvocation
16 |     public static void afterHookedMethod(XposedInterface.AfterHookCallback callback) {
17 |         ClassLoader classLoader = null;
18 |         for (var arg : callback.getArgs()) {
19 |             if (arg instanceof ClassLoader) {
20 |                 classLoader = (ClassLoader) arg;
21 |             }
22 |         }
23 |         if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P && classLoader == null) {
24 |             classLoader = LSPosedBridge.class.getClassLoader();
25 |         }
26 |         while (classLoader != null) {
27 |             if (classLoader == LSPosedBridge.class.getClassLoader()) {
28 |                 HookBridge.setTrusted(callback.getResult());
29 |                 return;
30 |             } else {
31 |                 classLoader = classLoader.getParent();
32 |             }
33 |         }
34 |     }
35 | }
36 | 


--------------------------------------------------------------------------------
/core/src/main/java/org/lsposed/lspd/nativebridge/DexParserBridge.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.nativebridge;
 2 | 
 3 | import java.io.IOException;
 4 | import java.lang.reflect.Method;
 5 | import java.nio.ByteBuffer;
 6 | 
 7 | import dalvik.annotation.optimization.FastNative;
 8 | import io.github.libxposed.api.utils.DexParser;
 9 | 
10 | public class DexParserBridge {
11 |     @FastNative
12 |     public static native Object openDex(ByteBuffer data, long[] args) throws IOException;
13 | 
14 |     @FastNative
15 |     public static native void closeDex(long cookie);
16 | 
17 |     @FastNative
18 |     public static native void visitClass(long cookie, Object visitor, Class<DexParser.FieldVisitor> fieldVisitorClass, Class<DexParser.MethodVisitor> methodVisitorClass, Method classVisitMethod, Method fieldVisitMethod, Method methodVisitMethod, Method methodBodyVisitMethod, Method stopMethod);
19 | }
20 | 


--------------------------------------------------------------------------------
/core/src/main/java/org/lsposed/lspd/nativebridge/HookBridge.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.nativebridge;
 2 | 
 3 | import java.lang.reflect.Executable;
 4 | import java.lang.reflect.InvocationTargetException;
 5 | 
 6 | import dalvik.annotation.optimization.FastNative;
 7 | 
 8 | public class HookBridge {
 9 |     public static native boolean hookMethod(boolean useModernApi, Executable hookMethod, Class<?> hooker, int priority, Object callback);
10 | 
11 |     public static native boolean unhookMethod(boolean useModernApi, Executable hookMethod, Object callback);
12 | 
13 |     public static native boolean deoptimizeMethod(Executable method);
14 | 
15 |     public static native <T> T allocateObject(Class<T> clazz) throws InstantiationException;
16 | 
17 |     public static native Object invokeOriginalMethod(Executable method, Object thisObject, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException;
18 | 
19 |     public static native <T> Object invokeSpecialMethod(Executable method, char[] shorty, Class<T> clazz, Object thisObject, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException;
20 | 
21 |     @FastNative
22 |     public static native boolean instanceOf(Object obj, Class<?> clazz);
23 | 
24 |     @FastNative
25 |     public static native boolean setTrusted(Object cookie);
26 | 
27 |     public static native Object[][] callbackSnapshot(Class<?> hooker_callback, Executable method);
28 | }
29 | 


--------------------------------------------------------------------------------
/core/src/main/java/org/lsposed/lspd/nativebridge/NativeAPI.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 LSPosed Contributors
19 |  */
20 | 
21 | package org.lsposed.lspd.nativebridge;
22 | 
23 | public class NativeAPI {
24 |     public static native void recordNativeEntrypoint(String library_name);
25 | }
26 | 


--------------------------------------------------------------------------------
/core/src/main/java/org/lsposed/lspd/util/Hookers.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 LSPosed Contributors
19 |  */
20 | 
21 | package org.lsposed.lspd.util;
22 | 
23 | import android.app.ActivityThread;
24 | 
25 | public class Hookers {
26 | 
27 |     public static void logD(String prefix) {
28 |         Utils.logD(String.format("%s: pkg=%s, prc=%s", prefix, ActivityThread.currentPackageName(),
29 |             ActivityThread.currentProcessName()));
30 |     }
31 | 
32 |     public static void logE(String prefix, Throwable throwable) {
33 |         Utils.logE(String.format("%s: pkg=%s, prc=%s", prefix, ActivityThread.currentPackageName(),
34 |             ActivityThread.currentProcessName()), throwable);
35 |     }
36 | 
37 | }
38 | 


--------------------------------------------------------------------------------
/core/src/main/jni/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | cmake_minimum_required(VERSION 3.10)
 2 | project(core)
 3 | 
 4 | set(CMAKE_CXX_STANDARD 23)
 5 | 
 6 | add_subdirectory(${EXTERNAL_ROOT} external)
 7 | 
 8 | aux_source_directory(src SRC_LIST)
 9 | aux_source_directory(src/jni SRC_LIST)
10 | aux_source_directory(src/xz SRC_LIST)
11 | 
12 | add_library(${PROJECT_NAME} STATIC ${SRC_LIST})
13 | 
14 | set(IGNORED_WARNINGS
15 | 	-Wno-c99-extensions
16 | 	-Wno-gnu-zero-variadic-macro-arguments
17 | 	-Wno-gnu-flexible-array-initializer
18 | 	-Wno-variadic-macros
19 | 	-Wno-zero-length-array)
20 | 
21 | target_include_directories(${PROJECT_NAME} PUBLIC include)
22 | target_include_directories(${PROJECT_NAME} PRIVATE src ${EXTERNAL_ROOT}/xz-embedded/linux/include)
23 | target_compile_options(${PROJECT_NAME} PRIVATE -Wpedantic ${IGNORED_WARNINGS})
24 | 
25 | target_link_libraries(${PROJECT_NAME} PUBLIC dobby_static lsplant_static xz_static log fmt-header-only)
26 | target_link_libraries(${PROJECT_NAME} PRIVATE dex_builder_static)
27 | 


--------------------------------------------------------------------------------
/core/src/main/jni/include/macros.h:
--------------------------------------------------------------------------------
 1 | #pragma once
 2 | 
 3 | #include <stddef.h>  // for size_t
 4 | #include <unistd.h>  // for TEMP_FAILURE_RETRY
 5 | #include <utility>
 6 | // The arraysize(arr) macro returns the # of elements in an array arr.
 7 | // The expression is a compile-time constant, and therefore can be
 8 | // used in defining new arrays, for example.  If you use arraysize on
 9 | // a pointer by mistake, you will get a compile-time error.
10 | template<typename T, size_t N>
11 | [[gnu::always_inline]] constexpr inline size_t arraysize(T(&)[N]) {
12 |   return N;
13 | }
14 | 


--------------------------------------------------------------------------------
/core/src/main/jni/include/symbol_cache.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 LSPosed Contributors
19 |  */
20 | 
21 | //
22 | // Created by kotori on 2/7/21.
23 | //
24 | 
25 | #ifndef LSPOSED_SYMBOL_CACHE_H
26 | #define LSPOSED_SYMBOL_CACHE_H
27 | 
28 | #include <memory>
29 | 
30 | namespace SandHook {
31 |     class ElfImg;
32 | }
33 | 
34 | namespace lspd {
35 |     std::unique_ptr<const SandHook::ElfImg> &GetArt(bool release=false);
36 |     std::unique_ptr<const SandHook::ElfImg> &GetLibBinder(bool release=false);
37 |     std::unique_ptr<const SandHook::ElfImg> &GetLinker(bool release=false);
38 | }
39 | 
40 | #endif //LSPOSED_SYMBOL_CACHE_H
41 | 


--------------------------------------------------------------------------------
/core/src/main/jni/src/jni/dex_parser.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2023 LSPosed Contributors
18 |  */
19 | #pragma once
20 | 
21 | #include <jni.h>
22 | 
23 | namespace lspd {
24 |     void RegisterDexParserBridge(JNIEnv *env);
25 | }
26 | 


--------------------------------------------------------------------------------
/core/src/main/jni/src/jni/hook_bridge.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2022 LSPosed Contributors
18 |  */
19 | #pragma once
20 | 
21 | #include <jni.h>
22 | 
23 | namespace lspd {
24 |     void RegisterHookBridge(JNIEnv *env);
25 | }
26 | 


--------------------------------------------------------------------------------
/core/src/main/jni/src/jni/native_api.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 LSPosed Contributors
19 |  */
20 | 
21 | #pragma once
22 | 
23 | #include <jni.h>
24 | 
25 | namespace lspd {
26 |     void RegisterNativeAPI(JNIEnv *);
27 | }
28 | 


--------------------------------------------------------------------------------
/core/src/main/jni/src/jni/resources_hook.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2020 EdXposed Contributors
18 |  * Copyright (C) 2021 - 2022 LSPosed Contributors
19 |  */
20 | 
21 | #pragma once
22 | 
23 | #include "jni.h"
24 | 
25 | namespace lspd {
26 |     void RegisterResourcesHook(JNIEnv *);
27 | 
28 | } // namespace lspd
29 | 


--------------------------------------------------------------------------------
/core/src/main/jni/template/config.cpp:
--------------------------------------------------------------------------------
1 | #include "config.h"
2 | 
3 | namespace lspd {
4 | const int versionCode = ${VERSION_CODE};
5 | const char* const versionName = "${VERSION_NAME}";
6 | }
7 | 


--------------------------------------------------------------------------------
/crowdin.yml:
--------------------------------------------------------------------------------
 1 | project_id_env: CROWDIN_PROJECT_ID
 2 | api_token_env: CROWDIN_API_TOKEN
 3 | base_path: .
 4 | base_url: 'https://api.crowdin.com'
 5 | pull_request_title: '[translation] Update translation from Crowdin'
 6 | preserve_hierarchy: 1
 7 | files:
 8 |   - source: /app/src/main/res/values/strings.xml
 9 |     translation: /app/src/main/res/values-%two_letters_code%/%original_file_name%
10 |     type: android
11 |     dest: /app/strings.xml
12 |   - source: /daemon/src/main/res/values/strings.xml
13 |     translation: /daemon/src/main/res/values-%two_letters_code%/%original_file_name%
14 |     type: android
15 |     dest: /daemon/strings.xml
16 | 


--------------------------------------------------------------------------------
/daemon/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /.cxx
3 | 


--------------------------------------------------------------------------------
/daemon/proguard-rules.pro:
--------------------------------------------------------------------------------
 1 | -keepclasseswithmembers,includedescriptorclasses class * {
 2 |     native <methods>;
 3 | }
 4 | -keepclasseswithmembers class org.lsposed.lspd.Main {
 5 |     public static void main(java.lang.String[]);
 6 | }
 7 | -keepclasseswithmembers class org.lsposed.lspd.service.Dex2OatService {
 8 |     private java.lang.String devTmpDir;
 9 |     private java.lang.String magiskPath;
10 |     private java.lang.String fakeBin32;
11 |     private java.lang.String fakeBin64;
12 |     private java.lang.String[] dex2oatBinaries;
13 | }
14 | -keepclasseswithmembers class org.lsposed.lspd.service.LogcatService {
15 |     private int refreshFd(boolean);
16 | }
17 | -keepclassmembers class ** implements android.content.ContextWrapper {
18 |     public int getUserId();
19 |     public android.os.UserHandle getUser();
20 | }
21 | -assumenosideeffects class android.util.Log {
22 |     public static *** v(...);
23 |     public static *** d(...);
24 | }
25 | -repackageclasses
26 | -allowaccessmodification
27 | 


--------------------------------------------------------------------------------
/daemon/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <manifest />
3 | 


--------------------------------------------------------------------------------
/daemon/src/main/java/org/lsposed/lspd/Main.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd;
 2 | 
 3 | import org.lsposed.lspd.service.ServiceManager;
 4 | 
 5 | public class Main {
 6 | 
 7 |     public static void main(String[] args) {
 8 |         ServiceManager.start(args);
 9 |     }
10 | }
11 | 


--------------------------------------------------------------------------------
/daemon/src/main/java/org/lsposed/lspd/service/ObfuscationManager.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.service;
 2 | 
 3 | import android.os.SharedMemory;
 4 | 
 5 | import java.util.HashMap;
 6 | 
 7 | public class ObfuscationManager {
 8 |     // For module dexes
 9 |     static native SharedMemory obfuscateDex(SharedMemory memory);
10 | 
11 |     // generates signature
12 |     static native HashMap<String, String> getSignatures();
13 | }
14 | 


--------------------------------------------------------------------------------
/daemon/src/main/java/org/lsposed/lspd/util/InstallerVerifier.java:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.util;
 2 | 
 3 | import static org.lsposed.lspd.util.SignInfo.CERTIFICATE;
 4 | 
 5 | import com.android.apksig.ApkVerifier;
 6 | 
 7 | import java.io.File;
 8 | import java.io.IOException;
 9 | import java.util.Arrays;
10 | 
11 | public class InstallerVerifier {
12 | 
13 |     public static void verifyInstallerSignature(String path) throws IOException {
14 |         ApkVerifier verifier = new ApkVerifier.Builder(new File(path))
15 |                 .setMinCheckedPlatformVersion(27)
16 |                 .build();
17 |         try {
18 |             ApkVerifier.Result result = verifier.verify();
19 |             if (!result.isVerified()) {
20 |                 throw new IOException("apk signature not verified");
21 |             }
22 |             var mainCert = result.getSignerCertificates().get(0);
23 |             if (!Arrays.equals(mainCert.getEncoded(), CERTIFICATE)) {
24 |                 var dname = mainCert.getSubjectX500Principal().getName();
25 |                 throw new IOException("apk signature mismatch: " + dname);
26 |             }
27 |         } catch (Exception t) {
28 |             throw new IOException(t);
29 |         }
30 |     }
31 | }
32 | 


--------------------------------------------------------------------------------
/daemon/src/main/jni/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | cmake_minimum_required(VERSION 3.10)
 2 | project(daemon)
 3 | 
 4 | add_subdirectory(${EXTERNAL_ROOT} external)
 5 | 
 6 | set(SOURCES
 7 |         dex2oat.cpp
 8 |         logcat.cpp
 9 |         obfuscation.cpp
10 |         )
11 | 
12 | add_library(${PROJECT_NAME} SHARED ${SOURCES})
13 | 
14 | target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
15 | 
16 | target_link_libraries(${PROJECT_NAME} PRIVATE lsplant_static dex_builder_static android log)
17 | 
18 | if (DEFINED DEBUG_SYMBOLS_PATH)
19 |     message(STATUS "Debug symbols will be placed at ${DEBUG_SYMBOLS_PATH}")
20 |     add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
21 |             COMMAND ${CMAKE_COMMAND} -E make_directory ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}
22 |             COMMAND ${CMAKE_OBJCOPY} --only-keep-debug 
lt;TARGET_FILE:${PROJECT_NAME}>
23 |             ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}/${PROJECT_NAME}.debug
24 |             COMMAND ${CMAKE_STRIP} --strip-all 
lt;TARGET_FILE:${PROJECT_NAME}>
25 |             COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}/${PROJECT_NAME}.debug
26 |             
lt;TARGET_FILE:${PROJECT_NAME}>)
27 | endif()
28 | 


--------------------------------------------------------------------------------
/daemon/src/main/res/drawable/ic_baseline_block_24.xml:
--------------------------------------------------------------------------------
1 | <vector android:height="24dp" android:tint="#000000"
2 |     android:viewportHeight="24" android:viewportWidth="24"
3 |     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4 |     <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM4,12c0,-4.42 3.58,-8 8,-8 1.85,0 3.55,0.63 4.9,1.69L5.69,16.9C4.63,15.55 4,13.85 4,12zM12,20c-1.85,0 -3.55,-0.63 -4.9,-1.69L18.31,7.1C19.37,8.45 20,10.15 20,12c0,4.42 -3.58,8 -8,8z"/>
5 | </vector>
6 | 


--------------------------------------------------------------------------------
/daemon/src/main/res/drawable/ic_baseline_check_24.xml:
--------------------------------------------------------------------------------
1 | <vector android:height="24dp" android:tint="#000000"
2 |     android:viewportHeight="24" android:viewportWidth="24"
3 |     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4 |     <path android:fillColor="@android:color/white" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
5 | </vector>
6 | 


--------------------------------------------------------------------------------
/daemon/src/main/res/drawable/ic_baseline_close_24.xml:
--------------------------------------------------------------------------------
1 | <vector android:height="24dp" android:tint="#000000"
2 |     android:viewportHeight="24" android:viewportWidth="24"
3 |     android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4 |     <path android:fillColor="@android:color/white" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
5 | </vector>
6 | 


--------------------------------------------------------------------------------
/daemon/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <resources>
 3 |     <!-- Notification -->
 4 |     <string name="module_is_not_activated_yet">Xposed 模块尚未激活</string>
 5 |     <string name="module_is_not_activated_yet_main_user_detailed">%1$s 已安装,但尚未激活</string>
 6 |     <string name="module_is_not_activated_yet_multi_user_detailed">%1$s 已安装到用户 %2$s,但尚未激活</string>
 7 |     <string name="xposed_module_updated_notification_title">Xposed 模块已更新</string>
 8 |     <string name="xposed_module_updated_notification_content">%s 已更新,请强行停止并重新打开其作用域内的应用</string>
 9 |     <string name="xposed_module_updated_notification_title_system">Xposed 模块已更新,需要重新启动</string>
10 |     <string name="xposed_module_updated_notification_content_system">%s 已更新,由于作用域包含系统框架,需重启以应用更改</string>
11 |     <string name="module_updated_channel_name">模块更新完成</string>
12 |     <string name="status_channel_name">LSPosed 状态</string>
13 |     <string name="lsposed_running_notification_title">LSPosed 已加载</string>
14 |     <string name="lsposed_running_notification_content">点按通知以打开管理器</string>
15 |     <string name="xposed_module_request_scope_title">作用域请求</string>
16 |     <string name="xposed_module_request_scope_content">用户 %2$s 上的 %1$s 请求将 %3$s 添加至其作用域。</string>
17 |     <string name="scope_channel_name">作用域请求</string>
18 |     <string name="scope_approve">允许</string>
19 |     <string name="scope_deny">拒绝</string>
20 |     <string name="nerver_ask_again">不再询问</string>
21 | </resources>
22 | 


--------------------------------------------------------------------------------
/daemon/src/main/res/values-zh-rHK/strings.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <resources>
 3 |     <!-- Notification -->
 4 |     <string name="module_is_not_activated_yet">Xposed 模組尚未啟用</string>
 5 |     <string name="module_is_not_activated_yet_main_user_detailed">%1$s 已安裝,但尚未啟用</string>
 6 |     <string name="module_is_not_activated_yet_multi_user_detailed">%1$s 已安裝到用戶 %2$s,但尚未啟用</string>
 7 |     <string name="xposed_module_updated_notification_title">Xposed 模組已更新</string>
 8 |     <string name="xposed_module_updated_notification_content">%s 已更新,請強制停止並重新開啟其作用範圍內的應用程式</string>
 9 |     <string name="xposed_module_updated_notification_title_system">Xposed 模組已更新,需要重新啟動。</string>
10 |     <string name="xposed_module_updated_notification_content_system">%s 已更新,由於作用範圍包含系統架構,需要重新啟動以套用修改。</string>
11 |     <string name="module_updated_channel_name">模块更新完成</string>
12 |     <string name="status_channel_name">LSPosed 狀態</string>
13 |     <string name="lsposed_running_notification_title">LSPosed 已載入</string>
14 |     <string name="lsposed_running_notification_content">輕觸通知以開啟管理員</string>
15 |     <string name="xposed_module_request_scope_title">作用範圍要求</string>
16 |     <string name="xposed_module_request_scope_content">用戶 %2$s 上的 %1$s 要求將 %3$s 新增至其作用範圍。</string>
17 |     <string name="scope_channel_name">作用範圍要求</string>
18 |     <string name="scope_approve">核准</string>
19 |     <string name="scope_deny">拒絕</string>
20 |     <string name="nerver_ask_again">永不詢問</string>
21 | </resources>
22 | 


--------------------------------------------------------------------------------
/daemon/src/main/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <resources>
 3 |     <!-- Notification -->
 4 |     <string name="module_is_not_activated_yet">Xposed 模組尚未啟用</string>
 5 |     <string name="module_is_not_activated_yet_main_user_detailed">%1$s 已安裝,但尚未啟用</string>
 6 |     <string name="module_is_not_activated_yet_multi_user_detailed">%1$s 已安裝到使用者 %2$s,但尚未啟用</string>
 7 |     <string name="xposed_module_updated_notification_title">Xposed 模組已更新</string>
 8 |     <string name="xposed_module_updated_notification_content">%s 已更新,請強制停止並重新打開其作用域內的程式</string>
 9 |     <string name="xposed_module_updated_notification_title_system">Xposed 模組已更新,需要重新啟動。</string>
10 |     <string name="xposed_module_updated_notification_content_system">%s 已更新,由於作用域包含系統框架,需要重新啟動以套用修改。</string>
11 |     <string name="module_updated_channel_name">模組更新完成</string>
12 |     <string name="status_channel_name">LSPosed 狀態</string>
13 |     <string name="lsposed_running_notification_title">LSPosed 已載入</string>
14 |     <string name="lsposed_running_notification_content">輕觸通知以開啟管理員</string>
15 |     <string name="xposed_module_request_scope_title">作用範圍要求</string>
16 |     <string name="xposed_module_request_scope_content">使用者 %2$s 上的 %1$s 要求將 %3$s 新增至其作用範圍。</string>
17 |     <string name="scope_channel_name">作用範圍要求</string>
18 |     <string name="scope_approve">核准</string>
19 |     <string name="scope_deny">拒絕</string>
20 |     <string name="nerver_ask_again">永不詢問</string>
21 | </resources>
22 | 


--------------------------------------------------------------------------------
/dex2oat/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /.cxx
3 | 


--------------------------------------------------------------------------------
/dex2oat/build.gradle.kts:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2022 LSPosed Contributors
18 |  */
19 | 
20 | plugins {
21 |     alias(libs.plugins.agp.lib)
22 | }
23 | 
24 | android {
25 |     namespace = "org.lsposed.dex2oat"
26 | 
27 |     buildFeatures {
28 |         androidResources = false
29 |         buildConfig = false
30 |         prefab = true
31 |         prefabPublishing = true
32 |     }
33 | 
34 |     defaultConfig {
35 |         minSdk = 29
36 |     }
37 | 
38 |     externalNativeBuild {
39 |         cmake {
40 |             path("src/main/cpp/CMakeLists.txt")
41 |         }
42 |     }
43 | 
44 |     prefab {
45 |         register("dex2oat")
46 |     }
47 | }
48 | 


--------------------------------------------------------------------------------
/dex2oat/src/main/cpp/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | cmake_minimum_required(VERSION 3.10)
 2 | project(dex2oat)
 3 | 
 4 | add_executable(dex2oat dex2oat.c)
 5 | add_library(oat_hook SHARED oat_hook.cpp)
 6 | 
 7 | OPTION(LSPLT_BUILD_SHARED OFF)
 8 | add_subdirectory(${EXTERNAL_ROOT}/lsplt/lsplt/src/main/jni external)
 9 | 
10 | target_link_libraries(dex2oat log)
11 | target_link_libraries(oat_hook log lsplt_static)
12 | 
13 | if (DEFINED DEBUG_SYMBOLS_PATH)
14 |     message(STATUS "Debug symbols will be placed at ${DEBUG_SYMBOLS_PATH}")
15 |     add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
16 |             COMMAND ${CMAKE_COMMAND} -E make_directory ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}
17 |             COMMAND ${CMAKE_OBJCOPY} --only-keep-debug 
lt;TARGET_FILE:${PROJECT_NAME}>
18 |             ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}/${PROJECT_NAME}.debug
19 |             COMMAND ${CMAKE_STRIP} --strip-all 
lt;TARGET_FILE:${PROJECT_NAME}>
20 |             COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}/${PROJECT_NAME}.debug
21 |             
lt;TARGET_FILE:${PROJECT_NAME}>)
22 | endif()
23 | 


--------------------------------------------------------------------------------
/external/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | project(external)
 2 | 
 3 | macro(SET_OPTION option value)
 4 |     set(${option} ${value} CACHE INTERNAL "" FORCE)
 5 | endmacro()
 6 | 
 7 | SET_OPTION(Plugin.SymbolResolver OFF)
 8 | SET_OPTION(FMT_INSTALL OFF)
 9 | 
10 | set(XZ_SOURCES
11 | 	xz_crc32.c
12 | 	xz_crc64.c
13 | 	# xz_dec_bcj.c
14 | 	xz_dec_lzma2.c
15 | 	xz_dec_stream.c)
16 | set(XZ_INCLUDES xz-embedded/linux/include/linux xz-embedded/userspace)
17 | list(TRANSFORM XZ_SOURCES PREPEND xz-embedded/linux/lib/xz/)
18 | add_library(xz_static STATIC ${XZ_SOURCES})
19 | target_compile_options(xz_static PRIVATE -DXZ_USE_CRC64)
20 | target_include_directories(xz_static PRIVATE ${XZ_INCLUDES})
21 | 
22 | OPTION(LSPLANT_BUILD_SHARED OFF)
23 | add_subdirectory(dobby)
24 | add_subdirectory(fmt)
25 | add_subdirectory(lsplant/lsplant/src/main/jni)
26 | target_compile_options(lsplant_static PUBLIC -Wno-gnu-anonymous-struct)
27 | target_compile_definitions(fmt-header-only INTERFACE FMT_USE_LOCALE=0 FMT_USE_FLOAT=0 FMT_USE_DOUBLE=0 FMT_USE_LONG_DOUBLE=0 FMT_USE_BITINT=0)
28 | 


--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
 1 | ## For more details on how to configure your build environment visit
 2 | # http://www.gradle.org/docs/current/userguide/build_environment.html
 3 | #
 4 | # Specifies the JVM arguments used for the daemon process.
 5 | # The setting is particularly useful for tweaking memory settings.
 6 | # Default value: -Xmx1024m -XX:MaxPermSize=256m
 7 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
 8 | #
 9 | # When configured, Gradle will run in incubating parallel mode.
10 | # This option should only be used with decoupled projects. More details, visit
11 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
12 | # org.gradle.parallel=true
13 | 
14 | android.useAndroidX=true
15 | android.nonFinalResIds=false
16 | 


--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JingMatrix/LSPosed/5e040f97e85c2414a32ad4514a2ba22a3309f5be/gradle/wrapper/gradle-wrapper.jar


--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 | 


--------------------------------------------------------------------------------
/hiddenapi/bridge/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | 


--------------------------------------------------------------------------------
/hiddenapi/bridge/build.gradle.kts:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | plugins {
21 |     `java-library`
22 | }
23 | 
24 | dependencies {
25 |     compileOnly(projects.hiddenapi.stubs)
26 | }
27 | 


--------------------------------------------------------------------------------
/hiddenapi/bridge/src/main/java/hidden/ByteBufferDexClassLoader.java:
--------------------------------------------------------------------------------
 1 | package hidden;
 2 | 
 3 | import java.nio.ByteBuffer;
 4 | 
 5 | import dalvik.system.BaseDexClassLoader;
 6 | 
 7 | public class ByteBufferDexClassLoader extends BaseDexClassLoader {
 8 | 
 9 |     public ByteBufferDexClassLoader(ByteBuffer[] dexFiles, ClassLoader parent) {
10 |         super(dexFiles, parent);
11 |     }
12 | 
13 |     public ByteBufferDexClassLoader(ByteBuffer[] dexFiles, String librarySearchPath, ClassLoader parent) {
14 |         super(dexFiles, librarySearchPath, parent);
15 |     }
16 | 
17 |     public String getLdLibraryPath() {
18 |         return super.getLdLibraryPath();
19 |     }
20 | }
21 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/build.gradle.kts:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | plugins {
21 |     `java-library`
22 | }
23 | 
24 | java {
25 |     sourceCompatibility = JavaVersion.VERSION_1_8
26 |     targetCompatibility = JavaVersion.VERSION_1_8
27 | }
28 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/annotation/NonNull.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * Copyright (C) 2013 The Android Open Source Project
 3 |  *
 4 |  * Licensed under the Apache License, Version 2.0 (the "License");
 5 |  * you may not use this file except in compliance with the License.
 6 |  * You may obtain a copy of the License at
 7 |  *
 8 |  *      http://www.apache.org/licenses/LICENSE-2.0
 9 |  *
10 |  * Unless required by applicable law or agreed to in writing, software
11 |  * distributed under the License is distributed on an "AS IS" BASIS,
12 |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 |  * See the License for the specific language governing permissions and
14 |  * limitations under the License.
15 |  */
16 | package android.annotation;
17 | 
18 | import java.lang.annotation.Retention;
19 | import java.lang.annotation.Target;
20 | 
21 | import static java.lang.annotation.ElementType.FIELD;
22 | import static java.lang.annotation.ElementType.METHOD;
23 | import static java.lang.annotation.ElementType.PARAMETER;
24 | import static java.lang.annotation.RetentionPolicy.SOURCE;
25 | 
26 | /**
27 |  * Denotes that a parameter, field or method return value can never be null.
28 |  * <p>
29 |  * This is a marker annotation and it has no specific attributes.
30 |  *
31 |  * @paramDoc This value must never be {@code null}.
32 |  * @returnDoc This value will never be {@code null}.
33 |  * @hide
34 |  */
35 | @Retention(SOURCE)
36 | @Target({METHOD, PARAMETER, FIELD})
37 | public @interface NonNull {
38 | }
39 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/ActivityManager.java:
--------------------------------------------------------------------------------
 1 | package android.app;
 2 | 
 3 | public class ActivityManager {
 4 |     public static int UID_OBSERVER_GONE;
 5 |     public static int UID_OBSERVER_ACTIVE;
 6 |     public static int UID_OBSERVER_IDLE;
 7 |     public static int UID_OBSERVER_CACHED;
 8 |     public static int PROCESS_STATE_UNKNOWN;
 9 | }
10 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/Application.java:
--------------------------------------------------------------------------------
1 | package android.app;
2 | 
3 | public class Application {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/ContentProviderHolder.java:
--------------------------------------------------------------------------------
1 | package android.app;
2 | 
3 | import android.content.IContentProvider;
4 | 
5 | public class ContentProviderHolder {
6 |     public IContentProvider provider;
7 | }
8 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/ContextImpl.java:
--------------------------------------------------------------------------------
1 | package android.app;
2 | 
3 | import android.content.Context;
4 | 
5 | public class ContextImpl extends Context {
6 | }
7 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/IApplicationThread.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | package android.app;
21 | 
22 | import android.os.Binder;
23 | import android.os.IBinder;
24 | import android.os.IInterface;
25 | 
26 | public interface IApplicationThread extends IInterface {
27 |     abstract class Stub extends Binder implements IApplicationThread {
28 |         public static IApplicationThread asInterface(IBinder obj) {
29 |             throw new UnsupportedOperationException();
30 |         }
31 |     }
32 | }
33 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/IServiceConnection.java:
--------------------------------------------------------------------------------
 1 | package android.app;
 2 | 
 3 | import android.content.ComponentName;
 4 | import android.os.Binder;
 5 | import android.os.IBinder;
 6 | import android.os.IInterface;
 7 | 
 8 | public interface IServiceConnection extends IInterface {
 9 |     void connected(ComponentName name, IBinder service, boolean dead);
10 | 
11 |     abstract class Stub extends Binder implements IServiceConnection {
12 | 
13 |         public static IServiceConnection asInterface(IBinder obj) {
14 |             throw new UnsupportedOperationException();
15 |         }
16 | 
17 |         @Override
18 |         public IBinder asBinder() {
19 |             throw new UnsupportedOperationException();
20 |         }
21 |     }
22 | }
23 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/IUidObserver.java:
--------------------------------------------------------------------------------
 1 | package android.app;
 2 | 
 3 | import android.os.Binder;
 4 | 
 5 | public interface IUidObserver {
 6 | 
 7 |     void onUidGone(int uid, boolean disabled);
 8 | 
 9 |     void onUidActive(int uid);
10 | 
11 |     void onUidIdle(int uid, boolean disabled);
12 | 
13 |     void onUidCachedChanged(int uid, boolean cached);
14 | 
15 |     abstract class Stub extends Binder implements IUidObserver {
16 |     }
17 | }
18 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/LoadedApk.java:
--------------------------------------------------------------------------------
 1 | package android.app;
 2 | 
 3 | import android.content.pm.ApplicationInfo;
 4 | 
 5 | public final class LoadedApk {
 6 | 	private ClassLoader mDefaultClassLoader;
 7 | 
 8 | 	public ApplicationInfo getApplicationInfo() {
 9 | 		throw new UnsupportedOperationException("STUB");
10 | 	}
11 | 
12 | 	public ClassLoader getClassLoader() {
13 | 		throw new UnsupportedOperationException("STUB");
14 | 	}
15 | 
16 | 	public String getPackageName() {
17 | 		throw new UnsupportedOperationException("STUB");
18 | 	}
19 | 
20 | 	public String getResDir() {
21 | 		throw new UnsupportedOperationException("STUB");
22 | 	}
23 | }
24 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/Notification.java:
--------------------------------------------------------------------------------
1 | package android.app;
2 | 
3 | public class Notification {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/NotificationChannel.java:
--------------------------------------------------------------------------------
1 | package android.app;
2 | 
3 | public class NotificationChannel {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/ProfilerInfo.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | package android.app;
21 | 
22 | public class ProfilerInfo {
23 | }
24 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/app/ResourcesManager.java:
--------------------------------------------------------------------------------
1 | package android.app;
2 | 
3 | public class ResourcesManager {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/AttributionSource.java:
--------------------------------------------------------------------------------
1 | package android.content;
2 | 
3 | public class AttributionSource {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/BroadcastReceiver.java:
--------------------------------------------------------------------------------
1 | package android.content;
2 | 
3 | public abstract class BroadcastReceiver {
4 |     public abstract void onReceive(Context context, Intent intent);
5 | }
6 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/ComponentName.java:
--------------------------------------------------------------------------------
1 | package android.content;
2 | 
3 | public final class ComponentName {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/Context.java:
--------------------------------------------------------------------------------
 1 | package android.content;
 2 | 
 3 | import android.os.Handler;
 4 | import android.os.IBinder;
 5 | import android.os.UserHandle;
 6 | 
 7 | public class Context {
 8 |     public IBinder getActivityToken() {
 9 |         throw new UnsupportedOperationException("STUB");
10 |     }
11 |     public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
12 |                                          IntentFilter filter, String broadcastPermission, Handler scheduler) {
13 |         throw new UnsupportedOperationException("STUB");
14 |     }
15 | }
16 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/IContentProvider.java:
--------------------------------------------------------------------------------
 1 | package android.content;
 2 | 
 3 | import android.os.Bundle;
 4 | import android.os.IInterface;
 5 | import android.os.RemoteException;
 6 | 
 7 | import androidx.annotation.RequiresApi;
 8 | 
 9 | public interface IContentProvider extends IInterface {
10 |     Bundle call(String callingPkg, String method,
11 |                 String arg, Bundle extras) throws RemoteException;
12 | 
13 |     @RequiresApi(29)
14 |     Bundle call(String callingPkg, String authority, String method,
15 |                 String arg, Bundle extras) throws RemoteException;
16 | 
17 |     @RequiresApi(30)
18 |     Bundle call(String callingPkg, String attributionTag, String authority,
19 |                 String method, String arg, Bundle extras) throws RemoteException;
20 | 
21 |     @RequiresApi(31)
22 |     Bundle call(AttributionSource attributionSource, String authority,
23 |                 String method, String arg, Bundle extras) throws RemoteException;
24 | }
25 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/IIntentSender.java:
--------------------------------------------------------------------------------
 1 | package android.content;
 2 | 
 3 | import android.os.Binder;
 4 | import android.os.Bundle;
 5 | import android.os.IBinder;
 6 | import android.os.IInterface;
 7 | 
 8 | import androidx.annotation.RequiresApi;
 9 | 
10 | public interface IIntentSender extends IInterface {
11 | 
12 |     int send(int code, Intent intent, String resolvedType,
13 |              IIntentReceiver finishedReceiver, String requiredPermission, Bundle options);
14 | 
15 |     @RequiresApi(26)
16 |     void send(int code, Intent intent, String resolvedType, IBinder whitelistToken,
17 |               IIntentReceiver finishedReceiver, String requiredPermission, Bundle options);
18 | 
19 |     abstract class Stub extends Binder implements IIntentSender {
20 | 
21 |         public Stub() {
22 |             throw new UnsupportedOperationException();
23 |         }
24 | 
25 |         @Override
26 |         public android.os.IBinder asBinder() {
27 |             throw new UnsupportedOperationException();
28 |         }
29 | 
30 |         public static IIntentSender asInterface(IBinder binder) {
31 |             throw new UnsupportedOperationException();
32 |         }
33 |     }
34 | }
35 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/Intent.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | package android.content;
21 | 
22 | public class Intent {
23 | }
24 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/IntentFilter.java:
--------------------------------------------------------------------------------
1 | package android.content;
2 | 
3 | public class IntentFilter {
4 | 
5 | }
6 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/IntentSender.java:
--------------------------------------------------------------------------------
1 | package android.content;
2 | 
3 | public class IntentSender {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/ApplicationInfo.java:
--------------------------------------------------------------------------------
 1 | package android.content.pm;
 2 | 
 3 | import androidx.annotation.RequiresApi;
 4 | 
 5 | public class ApplicationInfo {
 6 |     public String credentialProtectedDataDir;
 7 | 
 8 |     public String[] resourceDirs;
 9 | 
10 |     @RequiresApi(31)
11 |     public String[] overlayPaths;
12 | }
13 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/BaseParceledListSlice.java:
--------------------------------------------------------------------------------
 1 | package android.content.pm;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | abstract class BaseParceledListSlice<T> {
 6 | 
 7 |     public List<T> getList() {
 8 |         throw new RuntimeException("STUB");
 9 |     }
10 | }
11 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/IPackageInstaller.java:
--------------------------------------------------------------------------------
 1 | package android.content.pm;
 2 | 
 3 | import android.os.Binder;
 4 | import android.os.IBinder;
 5 | import android.os.IInterface;
 6 | 
 7 | public interface IPackageInstaller extends IInterface {
 8 | 
 9 |     void uninstall(android.content.pm.VersionedPackage versionedPackage, java.lang.String callerPackageName, int flags, android.content.IntentSender statusReceiver, int userId) throws android.os.RemoteException;
10 | 
11 |     abstract class Stub extends Binder implements IPackageInstaller {
12 |         public static IPackageInstaller asInterface(IBinder obj) {
13 |             throw new UnsupportedOperationException();
14 |         }
15 |     }
16 | }
17 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/PackageInfo.java:
--------------------------------------------------------------------------------
1 | package android.content.pm;
2 | 
3 | public class PackageInfo {
4 | 
5 |     public String overlayTarget;
6 | }
7 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/PackageInstaller.java:
--------------------------------------------------------------------------------
1 | package android.content.pm;
2 | 
3 | public class PackageInstaller {
4 |     public static class SessionParams {
5 |         public int installFlags = 0;
6 |     }
7 | }
8 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/PackageManager.java:
--------------------------------------------------------------------------------
 1 | package android.content.pm;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | public class PackageManager {
 6 |     public List<PackageInfo> getInstalledPackagesAsUser(int flags, int userId) {
 7 |         throw new UnsupportedOperationException("STUB");
 8 |     }
 9 | 
10 | }
11 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/PackageParser.java:
--------------------------------------------------------------------------------
 1 | package android.content.pm;
 2 | 
 3 | import java.io.File;
 4 | 
 5 | public class PackageParser {
 6 | 	public static class PackageLite {
 7 | 		public final String packageName = null;
 8 | 	}
 9 | 
10 | 	public final static class Package {
11 |         public ApplicationInfo applicationInfo;
12 | 	}
13 | 
14 | 	/** Before SDK21 */
15 | 	public static PackageLite parsePackageLite(String packageFile, int flags) {
16 | 		throw new UnsupportedOperationException("STUB");
17 | 	}
18 | 
19 | 	/** Since SDK21 */
20 | 	public static PackageLite parsePackageLite(File packageFile, int flags) throws PackageParserException {
21 | 		throw new UnsupportedOperationException("STUB");
22 | 	}
23 | 
24 | 	public Package parsePackage(File packageFile, int flags, boolean useCaches)
25 | 			throws PackageParserException {
26 | 		throw new UnsupportedOperationException("STUB");
27 | 	}
28 | 
29 | 	/** Since SDK21 */
30 | 	public static class PackageParserException extends Exception {
31 | 	}
32 | }
33 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/ParceledListSlice.java:
--------------------------------------------------------------------------------
 1 | package android.content.pm;
 2 | 
 3 | import java.util.List;
 4 | 
 5 | public class ParceledListSlice<T> extends BaseParceledListSlice<T> {
 6 |     public ParceledListSlice(List<T> list) {
 7 |         throw new IllegalArgumentException("STUB");
 8 |     }
 9 | 
10 | }
11 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/ResolveInfo.java:
--------------------------------------------------------------------------------
1 | package android.content.pm;
2 | 
3 | public class ResolveInfo {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/UserInfo.java:
--------------------------------------------------------------------------------
1 | package android.content.pm;
2 | 
3 | public class UserInfo {
4 |     public int id;
5 |     public String name;
6 | }
7 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/pm/VersionedPackage.java:
--------------------------------------------------------------------------------
1 | package android.content.pm;
2 | 
3 | public class VersionedPackage {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/res/AssetManager.java:
--------------------------------------------------------------------------------
 1 | package android.content.res;
 2 | 
 3 | import java.io.IOException;
 4 | import java.io.InputStream;
 5 | 
 6 | public final class AssetManager {
 7 | 	public final int addAssetPath(String path) {
 8 | 		throw new UnsupportedOperationException("STUB");
 9 | 	}
10 | 
11 | 	public void close() {
12 | 		throw new UnsupportedOperationException("STUB");
13 | 	}
14 | 
15 | 	public final InputStream open(String fileName) throws IOException {
16 | 		throw new UnsupportedOperationException("STUB");
17 | 	}
18 | }
19 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/res/CompatibilityInfo.java:
--------------------------------------------------------------------------------
1 | package android.content.res;
2 | 
3 | public class CompatibilityInfo {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/res/Configuration.java:
--------------------------------------------------------------------------------
1 | package android.content.res;
2 | 
3 | public class Configuration {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/res/Resources.java:
--------------------------------------------------------------------------------
 1 | package android.content.res;
 2 | 
 3 | import android.util.DisplayMetrics;
 4 | 
 5 | public class Resources {
 6 | 	public Resources(AssetManager assets, DisplayMetrics metrics, Configuration config) {
 7 | 		throw new UnsupportedOperationException("STUB");
 8 | 	}
 9 | 
10 | 	public Resources(ClassLoader classLoader) {
11 | 		throw new UnsupportedOperationException("STUB");
12 | 	}
13 | 
14 | 	public void setImpl(ResourcesImpl impl) {
15 | 		throw new UnsupportedOperationException("STUB");
16 | 	}
17 | 
18 | 	public CompatibilityInfo getCompatibilityInfo() {
19 | 	    throw new UnsupportedOperationException("STUB");
20 | 	}
21 | }
22 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/res/ResourcesImpl.java:
--------------------------------------------------------------------------------
1 | package android.content.res;
2 | 
3 | public class ResourcesImpl {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/res/ResourcesKey.java:
--------------------------------------------------------------------------------
1 | package android.content.res;
2 | 
3 | public class ResourcesKey {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/content/res/TypedArray.java:
--------------------------------------------------------------------------------
1 | package android.content.res;
2 | 
3 | public class TypedArray {
4 | 	protected TypedArray(Resources resources) {
5 | 		throw new UnsupportedOperationException("STUB");
6 | 	}
7 | }
8 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/ddm/DdmHandleAppName.java:
--------------------------------------------------------------------------------
1 | package android.ddm;
2 | 
3 | public class DdmHandleAppName {
4 |     public static void setAppName(String name, int userId) {
5 |         throw new RuntimeException("STUB");
6 |     }
7 | }
8 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/graphics/Movie.java:
--------------------------------------------------------------------------------
1 | package android.graphics;
2 | 
3 | public class Movie {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/graphics/drawable/Drawable.java:
--------------------------------------------------------------------------------
1 | package android.graphics.drawable;
2 | 
3 | public class Drawable {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/Build.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | public class Build {
 4 |     public static class VERSION {
 5 |         public final static int SDK_INT = SystemProperties.getInt(
 6 |                 "ro.build.version.sdk", 0);
 7 |     }
 8 |     public static class VERSION_CODES {
 9 |         public static final int O_MR1 = 27;
10 |         public static final int P = 28;
11 |         public static final int Q = 29;
12 |         public static final int R = 30;
13 |         public static final int S = 31;
14 |     }
15 | }
16 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/Bundle.java:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | package android.os;
21 | 
22 | public class Bundle {
23 | }
24 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/Environment.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import java.io.File;
 4 | 
 5 | public class Environment {
 6 |     public static File getDataProfilesDePackageDirectory(int userId, String packageName) {
 7 |         throw new IllegalArgumentException("STUB");
 8 |     }
 9 | }
10 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/Handler.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 | 
3 | public class Handler {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/IBinder.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import android.annotation.NonNull;
 4 | import android.annotation.Nullable;
 5 | 
 6 | import java.io.FileDescriptor;
 7 | 
 8 | public interface IBinder {
 9 | 
10 |     boolean transact(int code, @NonNull Parcel data, @Nullable Parcel reply, int flags);
11 | 
12 |     @Nullable
13 |     String getInterfaceDescriptor();
14 | 
15 |     boolean pingBinder();
16 | 
17 |     boolean isBinderAlive();
18 | 
19 |     @Nullable
20 |     IInterface queryLocalInterface(@NonNull String descriptor);
21 | 
22 |     void dump(@NonNull FileDescriptor fd, @Nullable String[] args);
23 | 
24 |     void dumpAsync(@NonNull FileDescriptor fd, @Nullable String[] args);
25 | 
26 |     void linkToDeath(@NonNull DeathRecipient recipient, int flags);
27 | 
28 |     boolean unlinkToDeath(@NonNull DeathRecipient recipient, int flags);
29 | 
30 |     interface DeathRecipient {
31 |         void binderDied();
32 |     }
33 | }
34 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/IInterface.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 | 
3 | public interface IInterface {
4 | 
5 |     IBinder asBinder();
6 | }
7 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/IPowerManager.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | public interface IPowerManager extends IInterface {
 4 |     void reboot(boolean confirm, String reason, boolean wait) throws RemoteException;
 5 | 
 6 |     abstract class Stub extends Binder implements IPowerManager {
 7 | 
 8 |         public static IPowerManager asInterface(IBinder obj) {
 9 |             throw new UnsupportedOperationException();
10 |         }
11 |     }
12 | }
13 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/IServiceCallback.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | public interface IServiceCallback extends IInterface
 3 | {
 4 |     public static abstract class Stub extends android.os.Binder implements android.os.IServiceCallback {
 5 |     }
 6 |     /**
 7 |      * Called when a service is registered.
 8 |      *
 9 |      * @param name the service name that has been registered with
10 |      * @param binder the binder that is registered
11 |      */
12 |     public void onRegistration(java.lang.String name, android.os.IBinder binder) throws android.os.RemoteException;
13 | }
14 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/IServiceManager.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | public interface IServiceManager extends IInterface {
 4 | 
 5 |     void tryUnregisterService(java.lang.String name, android.os.IBinder service);
 6 | 
 7 |     IBinder getService(String name);
 8 | 
 9 |     public void registerForNotifications(String name, IServiceCallback cb);
10 | 
11 |     abstract class Stub extends Binder implements IServiceManager {
12 |         public static IServiceManager asInterface(IBinder obj) {
13 |             throw new UnsupportedOperationException();
14 |         }
15 |     }
16 | }
17 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/IUserManager.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import android.content.pm.UserInfo;
 4 | 
 5 | import androidx.annotation.RequiresApi;
 6 | 
 7 | import java.util.List;
 8 | 
 9 | public interface IUserManager extends IInterface {
10 |     @RequiresApi(26)
11 |     boolean isUserUnlocked(int userId)
12 |             throws RemoteException;
13 | 
14 |     List<UserInfo> getUsers(boolean excludeDying)
15 |             throws RemoteException;
16 | 
17 |     List<UserInfo> getUsers(boolean excludePartial, boolean excludeDying, boolean excludePreCreated)
18 |             throws RemoteException;
19 | 
20 |     UserInfo getUserInfo(int userHandle) throws RemoteException;
21 | 
22 |     UserInfo getProfileParent(int userId) throws RemoteException;
23 | 
24 |     boolean isUserUnlockingOrUnlocked(int userId) throws RemoteException;
25 | 
26 |     abstract class Stub extends Binder implements IUserManager {
27 | 
28 |         public static IUserManager asInterface(IBinder obj) {
29 |             throw new RuntimeException("STUB");
30 |         }
31 |     }
32 | }
33 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/Parcel.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 | 
3 | public class Parcel {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/Parcelable.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | public interface Parcelable {
 4 |     interface Creator<T>{
 5 |         public T createFromParcel(Parcel source);
 6 |         public T[] newArray(int size);
 7 |     }
 8 |     void writeToParcel(Parcel dest, int flags);
 9 |     int describeContents();
10 | }
11 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/PersistableBundle.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 | 
3 | public class PersistableBundle {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/RemoteException.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 | 
3 | public class RemoteException extends Exception {
4 | 
5 |     public RemoteException(String message) {
6 |         throw new RuntimeException("STUB");
7 |     }
8 | }
9 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/ResultReceiver.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 | 
3 | public class ResultReceiver {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/SELinux.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | public class SELinux {
 4 |     public static boolean checkSELinuxAccess(String scon, String tcon, String tclass, String perm) {
 5 |         throw new UnsupportedOperationException("Stub");
 6 |     }
 7 | 
 8 |     public static boolean setFileContext(String path, String context) {
 9 |         throw new UnsupportedOperationException("Stub");
10 |     }
11 | 
12 |     public static boolean setFSCreateContext(String context){
13 |         throw new UnsupportedOperationException("Stub");
14 |     }
15 | }
16 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/ServiceManager.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import android.annotation.Nullable;
 4 | 
 5 | public class ServiceManager {
 6 | 
 7 |     /**
 8 |      * Returns a reference to a service with the given name.
 9 |      *
10 |      * @param name the name of the service to get
11 |      * @return a reference to the service, or <code>null</code> if the service doesn't exist
12 |      */
13 |     @Nullable
14 |     public static IBinder getService(String name) {
15 |         throw new RuntimeException("STUB");
16 |     }
17 | 
18 |     /**
19 |      * Place a new @a service called @a name into the service
20 |      * manager.
21 |      *
22 |      * @param name the name of the new service
23 |      * @param service the service object
24 |      */
25 |     public static void addService(String name, IBinder service) {
26 |         throw new RuntimeException("STUB");
27 |     }
28 | }
29 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/ShellCallback.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | public class ShellCallback implements Parcelable {
 4 |     public static final Parcelable.Creator<ShellCallback> CREATOR = new Creator<ShellCallback>() {
 5 |         @Override
 6 |         public ShellCallback createFromParcel(Parcel source) {
 7 |             throw new IllegalArgumentException("STUB");
 8 |         }
 9 | 
10 |         @Override
11 |         public ShellCallback[] newArray(int size) {
12 |             throw new IllegalArgumentException("STUB");
13 |         }
14 |     };
15 | 
16 |     @Override
17 |     public void writeToParcel(Parcel dest, int flags) {
18 |         throw new IllegalArgumentException("STUB");
19 |     }
20 | 
21 |     @Override
22 |     public int describeContents() {
23 |         throw new IllegalArgumentException("STUB");
24 |     }
25 | }
26 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/ShellCommand.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import java.io.FileDescriptor;
 4 | import java.io.InputStream;
 5 | import java.io.PrintWriter;
 6 | 
 7 | public abstract class ShellCommand {
 8 |     public int exec(Binder target, FileDescriptor in, FileDescriptor out, FileDescriptor err,
 9 |                     String[] args, ShellCallback callback, ResultReceiver resultReceiver) {
10 |         throw new IllegalArgumentException("STUB!");
11 |     }
12 | 
13 |     public abstract int onCommand(String cmd);
14 |     public abstract void onHelp();
15 | 
16 |     public String getNextOption(){
17 |         throw new IllegalArgumentException("STUB!");
18 |     }
19 | 
20 |     public String getNextArgRequired() {
21 |         throw new IllegalArgumentException("STUB!");
22 |     }
23 | 
24 |     public PrintWriter getErrPrintWriter() {
25 |         throw new IllegalArgumentException("STUB!");
26 |     }
27 |     public PrintWriter getOutPrintWriter() {
28 |         throw new IllegalArgumentException("STUB!");
29 |     }
30 |     public InputStream getRawInputStream() {
31 |         throw new IllegalArgumentException("STUB!");
32 |     }
33 | }
34 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/SystemProperties.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import android.annotation.NonNull;
 4 | import android.annotation.Nullable;
 5 | 
 6 | public class SystemProperties {
 7 |     public static String get(@NonNull String key) {
 8 |         throw new UnsupportedOperationException("Stub");
 9 |     }
10 | 
11 |     public static String get(@NonNull String key, @Nullable String def) {
12 |         throw new UnsupportedOperationException("Stub");
13 |     }
14 | 
15 |     public static void set(@NonNull String key, @Nullable String val) {
16 |         throw new UnsupportedOperationException("Stub");
17 |     }
18 | 
19 |     public static boolean getBoolean(@NonNull String key, boolean def) {
20 |         throw new UnsupportedOperationException("Stub");
21 |     }
22 | 
23 |     public static int getInt(@NonNull String key, int def) {
24 |         throw new UnsupportedOperationException("Stub");
25 |     }
26 | }
27 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/UserHandle.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import android.annotation.NonNull;
 4 | 
 5 | public class UserHandle {
 6 | 
 7 |     public UserHandle(int h) {
 8 |         throw new RuntimeException("STUB");
 9 |     }
10 | 
11 |     public int getIdentifier() {
12 |         throw new RuntimeException("STUB");
13 |     }
14 | 
15 |     public static final @NonNull
16 |     UserHandle ALL = null;
17 | }
18 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/os/UserManager.java:
--------------------------------------------------------------------------------
 1 | package android.os;
 2 | 
 3 | import android.content.pm.UserInfo;
 4 | 
 5 | import java.util.List;
 6 | 
 7 | public class UserManager {
 8 |     public List<UserInfo> getUsers() {
 9 |         throw new UnsupportedOperationException("STUB");
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/permission/IPermissionManager.java:
--------------------------------------------------------------------------------
1 | package android.permission;
2 | 
3 | import java.util.List;
4 | 
5 | public interface IPermissionManager {
6 | 
7 |     List<?> getSplitPermissions();
8 | }
9 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/system/ErrnoException.java:
--------------------------------------------------------------------------------
1 | package android.system;
2 | 
3 | public final class ErrnoException extends Exception {
4 | 
5 | }
6 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/system/Int32Ref.java:
--------------------------------------------------------------------------------
 1 | package android.system;
 2 | 
 3 | import java.util.Objects;
 4 | 
 5 | public class Int32Ref {
 6 |     public int value;
 7 | 
 8 |     public Int32Ref(int value) {
 9 |         this.value = value;
10 |     }
11 | 
12 |     @Override public String toString() {
13 |         return Objects.toString(this);
14 |     }
15 | }
16 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/system/Os.java:
--------------------------------------------------------------------------------
 1 | package android.system;
 2 | 
 3 | import android.util.MutableInt;
 4 | 
 5 | import androidx.annotation.RequiresApi;
 6 | 
 7 | import java.io.FileDescriptor;
 8 | 
 9 | public class Os {
10 |     public static int ioctlInt(FileDescriptor fd, int cmd, MutableInt arg) throws ErrnoException {
11 |         throw new ErrnoException();
12 |     }
13 | 
14 |     @RequiresApi(27)
15 |     public static int ioctlInt(FileDescriptor fd, int cmd, Int32Ref arg) throws ErrnoException {
16 |         throw new ErrnoException();
17 |     }
18 | 
19 |     @RequiresApi(31)
20 |     public static int ioctlInt(FileDescriptor fd, int cmd) throws ErrnoException {
21 |         throw new ErrnoException();
22 |     }
23 | }
24 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/util/DisplayMetrics.java:
--------------------------------------------------------------------------------
1 | package android.util;
2 | 
3 | public class DisplayMetrics {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/util/MutableInt.java:
--------------------------------------------------------------------------------
 1 | package android.util;
 2 | 
 3 | public final class MutableInt {
 4 |     public int value;
 5 | 
 6 |     public MutableInt(int value) {
 7 |         this.value = value;
 8 |     }
 9 | }
10 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/util/TypedValue.java:
--------------------------------------------------------------------------------
1 | package android.util;
2 | 
3 | public class TypedValue {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/view/IWindowManager.java:
--------------------------------------------------------------------------------
 1 | package android.view;
 2 | 
 3 | import android.app.IActivityManager;
 4 | import android.os.Binder;
 5 | import android.os.Bundle;
 6 | import android.os.IBinder;
 7 | import android.os.IInterface;
 8 | 
 9 | public interface IWindowManager extends IInterface {
10 |     void lockNow(Bundle options);
11 | 
12 |     abstract class Stub extends Binder implements IWindowManager {
13 |         public static IWindowManager asInterface(IBinder obj) {
14 |             throw new UnsupportedOperationException();
15 |         }
16 |     }
17 | }
18 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/webkit/WebViewDelegate.java:
--------------------------------------------------------------------------------
1 | package android.webkit;
2 | 
3 | public class WebViewDelegate {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/webkit/WebViewFactory.java:
--------------------------------------------------------------------------------
1 | package android.webkit;
2 | 
3 | public class WebViewFactory {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/android/webkit/WebViewFactoryProvider.java:
--------------------------------------------------------------------------------
1 | package android.webkit;
2 | 
3 | public class WebViewFactoryProvider {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/com/android/internal/os/BinderInternal.java:
--------------------------------------------------------------------------------
1 | package com.android.internal.os;
2 | 
3 | import android.os.IBinder;
4 | 
5 | public class BinderInternal {
6 |     public static final native IBinder getContextObject();
7 | }
8 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/com/android/internal/os/ZygoteInit.java:
--------------------------------------------------------------------------------
1 | package com.android.internal.os;
2 | 
3 | public class ZygoteInit {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/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.IOException;
 6 | import java.io.InputStream;
 7 | import java.util.HashMap;
 8 | 
 9 | public class XmlUtils {
10 | 	@SuppressWarnings("rawtypes")
11 | 	public static final HashMap readMapXml(InputStream in) throws XmlPullParserException, IOException {
12 | 		throw new UnsupportedOperationException("STUB");
13 | 	}
14 | }
15 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/com/android/server/LocalServices.java:
--------------------------------------------------------------------------------
1 | package com.android.server;
2 | 
3 | public class LocalServices {
4 | 
5 |     public static <T> T getService(Class<T> type) {
6 |         throw new UnsupportedOperationException("STUB");
7 |     }
8 | }
9 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/com/android/server/SystemService.java:
--------------------------------------------------------------------------------
1 | package com.android.server;
2 | 
3 | public abstract class SystemService {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/com/android/server/SystemServiceManager.java:
--------------------------------------------------------------------------------
1 | package com.android.server;
2 | 
3 | import java.util.ArrayList;
4 | 
5 | public class SystemServiceManager {
6 |     private final ArrayList<SystemService> mServices = new ArrayList<>();
7 | }
8 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/com/android/server/am/ActivityManagerService.java:
--------------------------------------------------------------------------------
 1 | package com.android.server.am;
 2 | 
 3 | import com.android.server.SystemService;
 4 | 
 5 | public class ActivityManagerService {
 6 |     public static final class Lifecycle extends SystemService {
 7 |         public ActivityManagerService getService() {
 8 |             throw new UnsupportedOperationException("STUB");
 9 |         }
10 |         private ProcessRecord findProcessLocked(String process, int userId, String callName) {
11 |             throw new UnsupportedOperationException("STUB");
12 |         }
13 |     }
14 | }
15 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/com/android/server/am/ProcessRecord.java:
--------------------------------------------------------------------------------
1 | package com.android.server.am;
2 | 
3 | public class ProcessRecord {
4 |     String processName = null;
5 | }
6 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/dalvik/system/BaseDexClassLoader.java:
--------------------------------------------------------------------------------
 1 | package dalvik.system;
 2 | 
 3 | import java.nio.ByteBuffer;
 4 | 
 5 | public class BaseDexClassLoader extends ClassLoader {
 6 |     public BaseDexClassLoader(ByteBuffer[] dexFiles, ClassLoader parent) {
 7 |         throw new RuntimeException("Stub!");
 8 |     }
 9 | 
10 |     public BaseDexClassLoader(ByteBuffer[] dexFiles, String librarySearchPath, ClassLoader parent) {
11 |         throw new RuntimeException("Stub!");
12 |     }
13 | 
14 |     public String getLdLibraryPath() {
15 |         throw new RuntimeException("Stub!");
16 |     }
17 | }
18 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/dalvik/system/VMRuntime.java:
--------------------------------------------------------------------------------
 1 | package dalvik.system;
 2 | 
 3 | public class VMRuntime {
 4 | 
 5 |     public static VMRuntime getRuntime() {
 6 |         throw new RuntimeException("Stub!");
 7 |     }
 8 | 
 9 |     // Use `Process.is64Bit()` instead
10 |     public native boolean is64Bit();
11 | 
12 |     public native String vmInstructionSet();
13 | 
14 |     public native boolean isJavaDebuggable();
15 | }
16 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/org/xmlpull/v1/XmlPullParserException.java:
--------------------------------------------------------------------------------
1 | package org.xmlpull.v1;
2 | 
3 | public class XmlPullParserException extends Throwable {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/sun/misc/CompoundEnumeration.java:
--------------------------------------------------------------------------------
 1 | package sun.misc;
 2 | 
 3 | import java.util.Enumeration;
 4 | import java.util.NoSuchElementException;
 5 | 
 6 | public class CompoundEnumeration<E> implements Enumeration<E> {
 7 |     private final Enumeration<E>[] enums;
 8 |     private int index = 0;
 9 | 
10 |     public CompoundEnumeration(Enumeration<E>[] enums) {
11 |         this.enums = enums;
12 |     }
13 | 
14 |     private boolean next() {
15 |         while (index < enums.length) {
16 |             if (enums[index] != null && enums[index].hasMoreElements()) {
17 |                 return true;
18 |             }
19 |             index++;
20 |         }
21 |         return false;
22 |     }
23 | 
24 |     public boolean hasMoreElements() {
25 |         return next();
26 |     }
27 | 
28 |     public E nextElement() {
29 |         if (!next()) {
30 |             throw new NoSuchElementException();
31 |         }
32 |         return enums[index].nextElement();
33 |     }
34 | }
35 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/sun/net/www/ParseUtil.java:
--------------------------------------------------------------------------------
1 | package sun.net.www;
2 | 
3 | public class ParseUtil {
4 |     public static String encodePath(String path, boolean flag) {
5 |         throw new RuntimeException("Stub!");
6 |     }
7 | }
8 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/sun/net/www/protocol/jar/Handler.java:
--------------------------------------------------------------------------------
1 | package sun.net.www.protocol.jar;
2 | 
3 | public abstract class Handler extends java.net.URLStreamHandler {
4 | }
5 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/xposed/dummy/XResourcesSuperClass.java:
--------------------------------------------------------------------------------
 1 | package xposed.dummy;
 2 | 
 3 | import android.content.res.Resources;
 4 | 
 5 | /**
 6 |  * This class is used as super class of XResources.
 7 |  *
 8 |  * This implementation isn't included in the .dex file. Instead, it's created on the device.
 9 |  * Usually, it will extend Resources, but some ROMs use their own Resources subclass.
10 |  * In that case, XResourcesSuperClass will extend the ROM's subclass in an attempt to increase
11 |  * compatibility.
12 |  */
13 | public class XResourcesSuperClass extends Resources {
14 | 	/** Dummy, will never be called (objects are transferred to this class only). */
15 | 	protected XResourcesSuperClass() {
16 | 		super(null, null, null);
17 | 		throw new UnsupportedOperationException();
18 | 	}
19 | 
20 | 	protected XResourcesSuperClass(ClassLoader classLoader) {
21 | 		super(classLoader);
22 | 		throw new UnsupportedOperationException();
23 | 	}
24 | }
25 | 


--------------------------------------------------------------------------------
/hiddenapi/stubs/src/main/java/xposed/dummy/XTypedArraySuperClass.java:
--------------------------------------------------------------------------------
 1 | package xposed.dummy;
 2 | 
 3 | import android.content.res.Resources;
 4 | import android.content.res.TypedArray;
 5 | 
 6 | /**
 7 |  * This class is used as super class of XResources.XTypedArray.
 8 |  *
 9 |  * This implementation isn't included in the .dex file. Instead, it's created on the device.
10 |  * Usually, it will extend TypedArray, but some ROMs use their own TypedArray subclass.
11 |  * In that case, XTypedArraySuperClass will extend the ROM's subclass in an attempt to increase
12 |  * compatibility.
13 |  */
14 | public class XTypedArraySuperClass extends TypedArray {
15 | 	/** Dummy, will never be called (objects are transferred to this class only). */
16 | 	protected XTypedArraySuperClass(Resources resources) {
17 | 		super(resources);
18 | 		throw new UnsupportedOperationException();
19 | 	}
20 | }
21 | 


--------------------------------------------------------------------------------
/magisk-loader/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /release
3 | /.cxx
4 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/META-INF/com/google/android/update-binary:
--------------------------------------------------------------------------------
 1 | #################
 2 | # Initialization
 3 | #################
 4 | 
 5 | umask 022
 6 | 
 7 | # echo before loading util_functions
 8 | ui_print() { echo "$1"; }
 9 | 
10 | require_new_magisk() {
11 |   ui_print "*******************************"
12 |   ui_print " Please install Magisk v20.4+! "
13 |   ui_print "*******************************"
14 |   exit 1
15 | }
16 | 
17 | #########################
18 | # Load util_functions.sh
19 | #########################
20 | 
21 | OUTFD=$2
22 | ZIPFILE=$3
23 | 
24 | [ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk
25 | . /data/adb/magisk/util_functions.sh
26 | [ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk
27 | 
28 | install_module
29 | exit 0
30 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/META-INF/com/google/android/updater-script:
--------------------------------------------------------------------------------
1 | #MAGISK
2 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/action.sh:
--------------------------------------------------------------------------------
1 | DEFAULT_MANAGER_PACKAGE_NAME=org.lsposed.manager
2 | INJECTED_PACKAGE_NAME=com.android.shell
3 | 
4 | am start -c "${DEFAULT_MANAGER_PACKAGE_NAME}.LAUNCH_MANAGER" "${INJECTED_PACKAGE_NAME}/.BugreportWarningActivity"
5 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/daemon:
--------------------------------------------------------------------------------
 1 | #!/system/bin/sh
 2 | 
 3 | dir=${0%/*}
 4 | tmpLspdApk="/data/local/tmp/daemon.apk"
 5 | debug=@DEBUG@
 6 | flavor=@FLAVOR@
 7 | 
 8 | if [ -r $tmpLspdApk ]; then
 9 |   java_options="-Djava.class.path=$tmpLspdApk"
10 |   debug="true"
11 | else
12 |   java_options="-Djava.class.path=$dir/daemon.apk"
13 | fi
14 | 
15 | if [ $debug = "true" ]; then
16 |   os_version=$(getprop ro.build.version.sdk)
17 |   if [ "$os_version" -eq "27" ]; then
18 |     java_options="$java_options -Xrunjdwp:transport=dt_android_adb,suspend=n,server=y -Xcompiler-option --debuggable"
19 |   elif [ "$os_version" -eq "28" ]; then
20 |     java_options="$java_options -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y -Xcompiler-option --debuggable"
21 |   else
22 |     java_options="$java_options -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y"
23 |   fi
24 | fi
25 | 
26 | mount tmpfs -t tmpfs /data/resource-cache
27 | 
28 | if [ ! -S "/dev/socket/zygote" ]; then
29 |   timeout 0.5 inotifyd - /dev/socket:near | while read -r line; do
30 |     $debug && log -p v -t "LSPosed" "inotify: $line"
31 |     if [ -S "/dev/socket/zygote" ]; then
32 |       $debug && log -p v -t "LSPosed" "zygote started"
33 |       touch /dev/socket&
34 |       exit
35 |     fi
36 |   done
37 | fi
38 | $debug && log -p d -t "LSPosed" "start $flavor daemon $*"
39 | 
40 | # shellcheck disable=SC2086
41 | exec /system/bin/app_process $java_options /system/bin --nice-name=lspd org.lsposed.lspd.Main "$@" >/dev/null 2>&1
42 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/module.prop:
--------------------------------------------------------------------------------
1 | id=${moduleId}
2 | name=${api} - LSPosed
3 | version=${versionName} (${versionCode})
4 | versionCode=${versionCode}
5 | author=${authorList}
6 | description=Another enhanced implementation of Xposed Framework. Supports Android 8.1 ~ 16. ${requirement}.
7 | updateJson=${updateJson}
8 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/post-fs-data.sh:
--------------------------------------------------------------------------------
 1 | #
 2 | # This file is part of LSPosed.
 3 | #
 4 | # LSPosed is free software: you can redistribute it and/or modify
 5 | # it under the terms of the GNU General Public License as published by
 6 | # the Free Software Foundation, either version 3 of the License, or
 7 | # (at your option) any later version.
 8 | #
 9 | # LSPosed is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 | #
17 | # Copyright (C) 2021 LSPosed Contributors
18 | #
19 | 
20 | MODDIR=${0%/*}
21 | 
22 | rm -f "/data/local/tmp/daemon.apk"
23 | rm -f "/data/local/tmp/manager.apk"
24 | 
25 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/sepolicy.rule:
--------------------------------------------------------------------------------
 1 | allow dex2oat dex2oat_exec file execute_no_trans
 2 | 
 3 | allow shell shell dir write
 4 | 
 5 | type xposed_file file_type
 6 | typeattribute xposed_file mlstrustedobject
 7 | allow {dex2oat installd isolated_app shell} xposed_file {file dir} *
 8 | 
 9 | allow dex2oat unlabeled file *
10 | 
11 | type xposed_data file_type
12 | typeattribute xposed_data mlstrustedobject
13 | allow * xposed_data {file dir} *
14 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/service.sh:
--------------------------------------------------------------------------------
 1 | #
 2 | # This file is part of LSPosed.
 3 | #
 4 | # LSPosed is free software: you can redistribute it and/or modify
 5 | # it under the terms of the GNU General Public License as published by
 6 | # the Free Software Foundation, either version 3 of the License, or
 7 | # (at your option) any later version.
 8 | #
 9 | # LSPosed is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 | #
17 | # Copyright (C) 2021 LSPosed Contributors
18 | #
19 | 
20 | MODDIR=${0%/*}
21 | 
22 | cd "$MODDIR"
23 | 
24 | # To avoid breaking Play Integrity in certain cases, we start LSPosed service daemon in late_start service mode instead of post-fs-data mode
25 | unshare --propagation slave -m sh -c "$MODDIR/daemon $@&"
26 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/system.prop:
--------------------------------------------------------------------------------
1 | dalvik.vm.dex2oat-flags=--inline-max-code-units=0
2 | 


--------------------------------------------------------------------------------
/magisk-loader/magisk_module/uninstall.sh:
--------------------------------------------------------------------------------
 1 | #
 2 | # This file is part of LSPosed.
 3 | #
 4 | # LSPosed is free software: you can redistribute it and/or modify
 5 | # it under the terms of the GNU General Public License as published by
 6 | # the Free Software Foundation, either version 3 of the License, or
 7 | # (at your option) any later version.
 8 | #
 9 | # LSPosed is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 | #
17 | # Copyright (C) 2021 LSPosed Contributors
18 | #
19 | 
20 | MODDIR=${0%/*}
21 | MODSDIR=$(dirname "$MODDIR")
22 | if [ -d "$MODSDIR/riru_lsposed" ] && [ -d "$MODSDIR/zygisk_lsposed" ]; then
23 |   if [ -f "$MODSDIR/riru_lsposed/remove" ] && [ -f "$MODSDIR/zygisk_lsposed/remove" ]; then
24 |     rm -rf /data/adb/lspd
25 |   fi
26 | else
27 |   rm -rf /data/adb/lspd
28 | fi
29 | 
30 | rm -rf /data/adb/riru/modules/lspd
31 | 


--------------------------------------------------------------------------------
/magisk-loader/proguard-rules.pro:
--------------------------------------------------------------------------------
 1 | -keepclasseswithmembers class org.lsposed.lspd.core.Main {
 2 |     public static void forkCommon(boolean, java.lang.String, java.lang.String, android.os.IBinder);
 3 | }
 4 | -keepclasseswithmembers,includedescriptorclasses class * {
 5 |     native <methods>;
 6 | }
 7 | -keepclasseswithmembers class org.lsposed.lspd.service.BridgeService {
 8 |     public static boolean *(android.os.IBinder, int, long, long, int);
 9 | }
10 | 
11 | -assumenosideeffects class android.util.Log {
12 |     public static *** v(...);
13 |     public static *** d(...);
14 | }
15 | -repackageclasses
16 | -allowaccessmodification
17 | -dontwarn org.lsposed.lspd.core.*
18 | -dontwarn org.lsposed.lspd.util.Hookers
19 | 


--------------------------------------------------------------------------------
/magisk-loader/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   ~ This file is part of LSPosed.
 3 |   ~
 4 |   ~ LSPosed is free software: you can redistribute it and/or modify
 5 |   ~ it under the terms of the GNU General Public License as published by
 6 |   ~ the Free Software Foundation, either version 3 of the License, or
 7 |   ~ (at your option) any later version.
 8 |   ~
 9 |   ~ LSPosed is distributed in the hope that it will be useful,
10 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |   ~ GNU General Public License for more details.
13 |   ~
14 |   ~ You should have received a copy of the GNU General Public License
15 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |   ~
17 |   ~ Copyright (C) 2022 LSPosed Contributors
18 |   -->
19 | 
20 | <manifest />
21 | 


--------------------------------------------------------------------------------
/magisk-loader/src/main/jni/CMakeLists.txt:
--------------------------------------------------------------------------------
 1 | cmake_minimum_required(VERSION 3.10)
 2 | project(lspd)
 3 | 
 4 | add_subdirectory(${CORE_ROOT} core)
 5 | 
 6 | configure_file(template/loader.cpp src/loader.cpp)
 7 | 
 8 | aux_source_directory(src SRC_LIST)
 9 | if (${API} STREQUAL "zygisk")
10 |     set(SRC_LIST ${SRC_LIST} api/zygisk_main.cpp)
11 | endif()
12 | 
13 | add_library(${PROJECT_NAME} SHARED ${SRC_LIST} ${CMAKE_CURRENT_BINARY_DIR}/src/loader.cpp)
14 | 
15 | target_include_directories(${PROJECT_NAME} PUBLIC include)
16 | target_include_directories(${PROJECT_NAME} PRIVATE src)
17 | 
18 | target_link_libraries(${PROJECT_NAME} core log)
19 | 
20 | if (DEFINED DEBUG_SYMBOLS_PATH)
21 |     set(DEBUG_SYMBOLS_PATH ${DEBUG_SYMBOLS_PATH}/${API})
22 |     message(STATUS "Debug symbols will be placed at ${DEBUG_SYMBOLS_PATH}")
23 |     add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
24 |             COMMAND ${CMAKE_COMMAND} -E make_directory ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}
25 |             COMMAND ${CMAKE_OBJCOPY} --only-keep-debug 
lt;TARGET_FILE:${PROJECT_NAME}>
26 |             ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}/${PROJECT_NAME}.debug
27 |             COMMAND ${CMAKE_STRIP} --strip-all 
lt;TARGET_FILE:${PROJECT_NAME}>
28 |             COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink ${DEBUG_SYMBOLS_PATH}/${ANDROID_ABI}/${PROJECT_NAME}.debug
29 |             
lt;TARGET_FILE:${PROJECT_NAME}>)
30 | endif()
31 | 


--------------------------------------------------------------------------------
/magisk-loader/src/main/jni/include/loader.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2022 LSPosed Contributors
18 |  */
19 | 
20 | //
21 | // Created by Nullptr on 2022/3/16.
22 | //
23 | 
24 | #pragma once
25 | 
26 | #include "config.h"
27 | 
28 | namespace lspd {
29 |     extern const int apiVersion;
30 |     extern const char* const moduleName;
31 | }
32 | 


--------------------------------------------------------------------------------
/magisk-loader/src/main/jni/src/config_impl.h:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2022 LSPosed Contributors
18 |  */
19 | 
20 | #pragma once
21 | 
22 | #include "config_bridge.h"
23 | #include "service.h"
24 | 
25 | namespace lspd {
26 |     class ConfigImpl : public ConfigBridge {
27 |     public:
28 |         inline static void Init() {
29 |             instance_ = std::make_unique<ConfigImpl>();
30 |         }
31 | 
32 |         virtual obfuscation_map_t &obfuscation_map() override { return obfuscation_map_; }
33 | 
34 |         virtual void
35 |         obfuscation_map(obfuscation_map_t m) override { obfuscation_map_ = std::move(m); }
36 | 
37 |     private:
38 |         inline static std::map<std::string, std::string> obfuscation_map_;
39 |     };
40 | }
41 | 


--------------------------------------------------------------------------------
/magisk-loader/src/main/jni/template/loader.cpp:
--------------------------------------------------------------------------------
1 | #include "loader.h"
2 | 
3 | namespace lspd {
4 | const int apiVersion = ${API_VERSION};
5 | const char* const moduleName = "${MODULE_NAME}";
6 | }
7 | 


--------------------------------------------------------------------------------
/magisk-loader/src/webroot/index.html:
--------------------------------------------------------------------------------
 1 | <!doctype html>
 2 | <html lang="en">
 3 |   <head>
 4 |     <meta charset="utf-8"/>
 5 |     <title>JingMatrix/LSPosed</title>
 6 |     <script type="module" src="index.js"></script>
 7 |   </head>
 8 |   <body></body>
 9 | </html>
10 | 


--------------------------------------------------------------------------------
/magisk-loader/src/webroot/index.js:
--------------------------------------------------------------------------------
 1 | import { exec } from "kernelsu";
 2 | import { toast } from "kernelsu";
 3 | 
 4 | async function open_manager() {
 5 |   toast("LSPosed Manager starting...");
 6 |   const { errno, stdout, stderr } = await exec(
 7 |     "am start -c org.lsposed.manager.LAUNCH_MANAGER com.android.shell/.BugreportWarningActivity",
 8 |     { cwd: "/system" }
 9 |   );
10 | }
11 | 
12 | open_manager();
13 | 


--------------------------------------------------------------------------------
/magisk-loader/update/riru.json:
--------------------------------------------------------------------------------
1 | {
2 | 	"version": "v1.10.0",
3 | 	"versionCode": 7068,
4 | 	"zipUrl": "https://github.com/JingMatrix/LSPosed/releases/download/v1.10.0/LSPosed-v1.10.0-7068-riru-release.zip",
5 | 	"changelog": "https://raw.githubusercontent.com/JingMatrix/LSPosed/master/magisk-loader/update/changelog.md"
6 | }
7 | 


--------------------------------------------------------------------------------
/magisk-loader/update/zygisk.json:
--------------------------------------------------------------------------------
1 | {
2 | 	"version": "v1.10.2",
3 | 	"versionCode": 7182,
4 | 	"zipUrl": "https://github.com/JingMatrix/LSPosed/releases/download/v1.10.2/LSPosed-v1.10.2-7182-zygisk-release.zip",
5 | 	"changelog": "https://raw.githubusercontent.com/JingMatrix/LSPosed/master/magisk-loader/update/changelog.md"
6 | }
7 | 


--------------------------------------------------------------------------------
/services/daemon-service/.gitignore:
--------------------------------------------------------------------------------
1 | /build


--------------------------------------------------------------------------------
/services/daemon-service/build.gradle.kts:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | plugins {
21 |     alias(libs.plugins.agp.lib)
22 | }
23 | 
24 | android {
25 |     buildFeatures {
26 |         aidl = true
27 |     }
28 | 
29 |     defaultConfig {
30 |         consumerProguardFiles("proguard-rules.pro")
31 |     }
32 | 
33 |     buildTypes {
34 |         release {
35 |             isMinifyEnabled = false
36 |         }
37 |     }
38 | 
39 |     aidlPackagedList += "org/lsposed/lspd/models/Module.aidl"
40 |     aidlPackagedList += "org/lsposed/lspd/models/PreloadedApk.aidl"
41 |     namespace = "org.lsposed.lspd.daemonservice"
42 | }
43 | 
44 | dependencies {
45 |     compileOnly(projects.hiddenapi.stubs)
46 | }
47 | 


--------------------------------------------------------------------------------
/services/daemon-service/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


--------------------------------------------------------------------------------
/services/daemon-service/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <manifest />
3 | 


--------------------------------------------------------------------------------
/services/daemon-service/src/main/aidl/org/lsposed/lspd/models/Module.aidl:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.models;
 2 | import org.lsposed.lspd.models.PreLoadedApk;
 3 | import org.lsposed.lspd.service.ILSPInjectedModuleService;
 4 | 
 5 | parcelable Module {
 6 |     String packageName;
 7 |     int appId;
 8 |     String apkPath;
 9 |     PreLoadedApk file;
10 |     ApplicationInfo applicationInfo;
11 |     ILSPInjectedModuleService service;
12 | }
13 | 


--------------------------------------------------------------------------------
/services/daemon-service/src/main/aidl/org/lsposed/lspd/models/PreLoadedApk.aidl:
--------------------------------------------------------------------------------
1 | package org.lsposed.lspd.models;
2 | 
3 | parcelable PreLoadedApk {
4 |     List<SharedMemory> preLoadedDexes;
5 |     List<String> moduleClassNames;
6 |     List<String> moduleLibraryNames;
7 |     boolean legacy;
8 | }
9 | 


--------------------------------------------------------------------------------
/services/daemon-service/src/main/aidl/org/lsposed/lspd/service/ILSPApplicationService.aidl:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.service;
 2 | 
 3 | import org.lsposed.lspd.models.Module;
 4 | 
 5 | interface ILSPApplicationService {
 6 |     boolean isLogMuted();
 7 | 
 8 |     List<Module> getLegacyModulesList();
 9 | 
10 |     List<Module> getModulesList();
11 | 
12 |     String getPrefsPath(String packageName);
13 | 
14 |     ParcelFileDescriptor requestInjectedManagerBinder(out List<IBinder> binder);
15 | }
16 | 


--------------------------------------------------------------------------------
/services/daemon-service/src/main/aidl/org/lsposed/lspd/service/ILSPInjectedModuleService.aidl:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.service;
 2 | 
 3 | import org.lsposed.lspd.service.IRemotePreferenceCallback;
 4 | 
 5 | interface ILSPInjectedModuleService {
 6 |     int getFrameworkPrivilege();
 7 | 
 8 |     Bundle requestRemotePreferences(String group, IRemotePreferenceCallback callback);
 9 | 
10 |     ParcelFileDescriptor openRemoteFile(String path);
11 | 
12 |     String[] getRemoteFileList();
13 | }
14 | 


--------------------------------------------------------------------------------
/services/daemon-service/src/main/aidl/org/lsposed/lspd/service/ILSPSystemServerService.aidl:
--------------------------------------------------------------------------------
1 | package org.lsposed.lspd.service;
2 | 
3 | import org.lsposed.lspd.service.ILSPApplicationService;
4 | 
5 | interface ILSPSystemServerService {
6 |     ILSPApplicationService requestApplicationService(int uid, int pid, String processName, IBinder heartBeat);
7 | }
8 | 


--------------------------------------------------------------------------------
/services/daemon-service/src/main/aidl/org/lsposed/lspd/service/ILSPosedService.aidl:
--------------------------------------------------------------------------------
 1 | package org.lsposed.lspd.service;
 2 | 
 3 | import org.lsposed.lspd.service.ILSPApplicationService;
 4 | 
 5 | interface ILSPosedService {
 6 |     ILSPApplicationService requestApplicationService(int uid, int pid, String processName, IBinder heartBeat);
 7 | 
 8 |     oneway void dispatchSystemServerContext(in IBinder activityThread, in IBinder activityToken, String api);
 9 | 
10 |     boolean preStartManager();
11 | 
12 |     boolean setManagerEnabled(boolean enabled);
13 | }
14 | 


--------------------------------------------------------------------------------
/services/daemon-service/src/main/aidl/org/lsposed/lspd/service/IRemotePreferenceCallback.aidl:
--------------------------------------------------------------------------------
1 | package org.lsposed.lspd.service;
2 | 
3 | interface IRemotePreferenceCallback {
4 |     oneway void onUpdate(in Bundle map);
5 | }
6 | 


--------------------------------------------------------------------------------
/services/manager-service/.gitignore:
--------------------------------------------------------------------------------
1 | /build


--------------------------------------------------------------------------------
/services/manager-service/build.gradle.kts:
--------------------------------------------------------------------------------
 1 | /*
 2 |  * This file is part of LSPosed.
 3 |  *
 4 |  * LSPosed is free software: you can redistribute it and/or modify
 5 |  * it under the terms of the GNU General Public License as published by
 6 |  * the Free Software Foundation, either version 3 of the License, or
 7 |  * (at your option) any later version.
 8 |  *
 9 |  * LSPosed is distributed in the hope that it will be useful,
10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 |  * GNU General Public License for more details.
13 |  *
14 |  * You should have received a copy of the GNU General Public License
15 |  * along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
16 |  *
17 |  * Copyright (C) 2021 LSPosed Contributors
18 |  */
19 | 
20 | plugins {
21 |     alias(libs.plugins.agp.lib)
22 | }
23 | 
24 | android {
25 |     buildFeatures {
26 |         aidl = true
27 |     }
28 | 
29 |     defaultConfig {
30 |         consumerProguardFiles("proguard-rules.pro")
31 |     }
32 | 
33 |     buildTypes {
34 |         release {
35 |             isMinifyEnabled = false
36 |         }
37 |     }
38 |     namespace = "org.lsposed.lspd.managerservice"
39 | }
40 | 
41 | dependencies {
42 |     api(libs.rikkax.parcelablelist)
43 | }
44 | 


--------------------------------------------------------------------------------
/services/manager-service/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | 
2 | 


--------------------------------------------------------------------------------
/services/manager-service/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <!--
 3 |   ~ This file is part of LSPosed.
 4 |   ~
 5 |   ~ LSPosed is free software: you can redistribute it and/or modify
 6 |   ~ it under the terms of the GNU General Public License as published by
 7 |   ~ the Free Software Foundation, either version 3 of the License, or
 8 |   ~ (at your option) any later version.
 9 |   ~
10 |   ~ LSPosed is distributed in the hope that it will be useful,
11 |   ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
12 |   ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 |   ~ GNU General Public License for more details.
14 |   ~
15 |   ~ You should have received a copy of the GNU General Public License
16 |   ~ along with LSPosed.  If not, see <https://www.gnu.org/licenses/>.
17 |   ~
18 |   ~ Copyright (C) 2021 LSPosed Contributors
19 |   -->
20 | 
21 | <manifest />
22 | 


--------------------------------------------------------------------------------
/services/manager-service/src/main/aidl/org/lsposed/lspd/models/Application.aidl:
--------------------------------------------------------------------------------
1 | package org.lsposed.lspd.models;
2 | 
3 | parcelable Application {
4 |     String packageName;
5 |     int userId;
6 | }
7 | 


--------------------------------------------------------------------------------
/services/manager-service/src/main/aidl/org/lsposed/lspd/models/UserInfo.aidl:
--------------------------------------------------------------------------------
1 | package org.lsposed.lspd.models;
2 | 
3 | parcelable UserInfo {
4 |     int id;
5 |     String name;
6 | }
7 | 


--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
 1 | enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
 2 | 
 3 | pluginManagement {
 4 |     repositories {
 5 |         gradlePluginPortal()
 6 |         google()
 7 |         mavenCentral()
 8 |     }
 9 | }
10 | 
11 | dependencyResolutionManagement {
12 |     repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
13 |     repositories {
14 |         google()
15 |         mavenCentral()
16 |         mavenLocal {
17 |             content {
18 |                 includeGroup("io.github.libxposed")
19 |             }
20 |         }
21 |     }
22 |     versionCatalogs {
23 |         create("libs")
24 |     }
25 | }
26 | 
27 | rootProject.name = "LSPosed"
28 | include(
29 |     ":apache",
30 |     ":app",
31 |     ":axml",
32 |     ":core",
33 |     ":daemon",
34 |     ":dex2oat",
35 |     ":hiddenapi:stubs",
36 |     ":hiddenapi:bridge",
37 |     ":magisk-loader",
38 |     ":services:manager-service",
39 |     ":services:daemon-service",
40 | )
41 | 


--------------------------------------------------------------------------------