├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report---bug---.md │ ├── feature-request--------.md │ └── other-issues-------.md └── workflows │ └── upstream.yml ├── .gitignore ├── Bcore ├── .gitignore ├── black-fake │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ ├── android │ │ ├── app │ │ │ ├── ActivityThread.java │ │ │ └── ContentProviderHolder.java │ │ ├── content │ │ │ ├── IContentProvider.java │ │ │ ├── SyncInfo.java │ │ │ ├── SyncStatusInfo.java │ │ │ └── pm │ │ │ │ ├── ManifestDigest.java │ │ │ │ ├── PackageParser.java │ │ │ │ ├── PackageUserState.java │ │ │ │ └── VerifierInfo.java │ │ ├── location │ │ │ └── LocationRequest.java │ │ └── os │ │ │ ├── ParcelableException.java │ │ │ ├── SELinux.java │ │ │ └── ServiceManager.java │ │ └── top │ │ └── niunaijun │ │ └── blackbox │ │ └── fake │ │ └── FakeCore.java ├── black-hook │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── top │ │ └── niunaijun │ │ └── jnihook │ │ ├── MethodUtils.java │ │ ├── ReflectCore.java │ │ └── jni │ │ └── JniHook.java ├── build.gradle ├── consumer-rules.pro ├── pine-core │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── cpp │ │ ├── CMakeLists.txt │ │ ├── android.cpp │ │ ├── android.h │ │ ├── art │ │ │ ├── access_flags.h │ │ │ ├── art_method.cpp │ │ │ ├── art_method.h │ │ │ ├── gc_defs.h │ │ │ ├── jit.cpp │ │ │ ├── jit.h │ │ │ ├── object.h │ │ │ ├── thread.cpp │ │ │ └── thread.h │ │ ├── jni_bridge.cpp │ │ ├── jni_bridge.h │ │ ├── pine.cpp │ │ ├── pine_config.h │ │ ├── ruler.cpp │ │ ├── trampoline │ │ │ ├── arch │ │ │ │ ├── arch.h │ │ │ │ ├── arm32.S │ │ │ │ ├── arm32.cpp │ │ │ │ ├── arm32.h │ │ │ │ ├── arm64.S │ │ │ │ ├── arm64.cpp │ │ │ │ ├── arm64.h │ │ │ │ ├── thumb2.S │ │ │ │ ├── thumb2.cpp │ │ │ │ ├── thumb2.h │ │ │ │ ├── trampolines.h │ │ │ │ ├── x86.cpp │ │ │ │ └── x86.h │ │ │ ├── extras.h │ │ │ ├── trampoline_installer.cpp │ │ │ └── trampoline_installer.h │ │ └── utils │ │ │ ├── elf_img.cpp │ │ │ ├── elf_img.h │ │ │ ├── io_wrapper.h │ │ │ ├── jni_helper.h │ │ │ ├── lock.h │ │ │ ├── log.h │ │ │ ├── macros.h │ │ │ ├── member.h │ │ │ ├── memory.cpp │ │ │ ├── memory.h │ │ │ ├── scoped_local_ref.h │ │ │ ├── scoped_memory_access_protection.cpp │ │ │ ├── scoped_memory_access_protection.h │ │ │ ├── well_known_classes.cpp │ │ │ └── well_known_classes.h │ │ └── java │ │ └── top │ │ └── canyie │ │ └── pine │ │ ├── Pine.java │ │ ├── PineConfig.java │ │ ├── Ruler.java │ │ ├── callback │ │ ├── MethodHook.java │ │ └── MethodReplacement.java │ │ ├── entry │ │ ├── Arm32Entry.java │ │ ├── Arm64Entry.java │ │ └── X86Entry.java │ │ └── utils │ │ ├── Primitives.java │ │ ├── ReflectionHelper.java │ │ └── Three.java ├── pine-xposed-res │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ ├── android │ │ ├── app │ │ │ └── AndroidAppHelper.java │ │ └── content │ │ │ └── res │ │ │ ├── CompatibilityInfo.java │ │ │ ├── XModuleResources.java │ │ │ ├── XResForwarder.java │ │ │ └── XResources.java │ │ ├── de │ │ └── robv │ │ │ └── android │ │ │ └── xposed │ │ │ ├── DexCreator.java │ │ │ ├── IXposedHookInitPackageResources.java │ │ │ ├── SELinuxHelper.java │ │ │ ├── callbacks │ │ │ ├── XC_InitPackageResources.java │ │ │ └── XC_LayoutInflated.java │ │ │ └── services │ │ │ ├── BaseService.java │ │ │ ├── DirectAccessService.java │ │ │ └── FileResult.java │ │ ├── top │ │ └── canyie │ │ │ └── dreamland │ │ │ └── utils │ │ │ └── IOUtils.java │ │ └── xposed │ │ └── dummy │ │ └── XResourcesSuperClass.java ├── pine-xposed │ ├── build.gradle │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── apacheCommonsLang │ │ ├── LICENSE.txt │ │ ├── MODIFICATIONS.txt │ │ ├── NOTICE.txt │ │ ├── RELEASE-NOTES.txt │ │ └── external │ │ │ └── org │ │ │ └── apache │ │ │ └── commons │ │ │ └── lang3 │ │ │ ├── ArrayUtils.java │ │ │ ├── CharSequenceUtils.java │ │ │ ├── CharUtils.java │ │ │ ├── ClassUtils.java │ │ │ ├── JavaVersion.java │ │ │ ├── ObjectUtils.java │ │ │ ├── StringUtils.java │ │ │ ├── SystemUtils.java │ │ │ ├── Validate.java │ │ │ ├── builder │ │ │ ├── Builder.java │ │ │ ├── CompareToBuilder.java │ │ │ ├── EqualsBuilder.java │ │ │ ├── HashCodeBuilder.java │ │ │ ├── IDKey.java │ │ │ ├── ReflectionToStringBuilder.java │ │ │ ├── ToStringBuilder.java │ │ │ ├── ToStringStyle.java │ │ │ └── package.html │ │ │ ├── exception │ │ │ ├── CloneFailedException.java │ │ │ └── package.html │ │ │ ├── mutable │ │ │ ├── Mutable.java │ │ │ ├── MutableInt.java │ │ │ └── package.html │ │ │ ├── overview.html │ │ │ ├── package.html │ │ │ ├── reflect │ │ │ ├── MemberUtils.java │ │ │ ├── MethodUtils.java │ │ │ └── package.html │ │ │ └── tuple │ │ │ ├── ImmutablePair.java │ │ │ ├── Pair.java │ │ │ └── package.html │ │ └── java │ │ ├── com │ │ └── android │ │ │ └── internal │ │ │ └── util │ │ │ └── XmlUtils.java │ │ ├── de │ │ └── robv │ │ │ └── android │ │ │ └── xposed │ │ │ ├── IXposedHookLoadPackage.java │ │ │ ├── IXposedHookZygoteInit.java │ │ │ ├── IXposedMod.java │ │ │ ├── XC_MethodHook.java │ │ │ ├── XC_MethodReplacement.java │ │ │ ├── XSharedPreferences.java │ │ │ ├── XposedBridge.java │ │ │ ├── XposedHelpers.java │ │ │ ├── callbacks │ │ │ ├── IXUnhook.java │ │ │ ├── XC_LoadPackage.java │ │ │ ├── XCallback.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ └── top │ │ └── canyie │ │ └── pine │ │ └── xposed │ │ ├── CompoundEnumeration.java │ │ ├── ModuleClassLoader.java │ │ └── PineXposed.java ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── aidl │ └── top │ │ └── niunaijun │ │ └── blackbox │ │ ├── core │ │ ├── IBActivityThread.aidl │ │ ├── IEmpty.aidl │ │ └── system │ │ │ ├── accounts │ │ │ └── IBAccountManagerService.aidl │ │ │ ├── am │ │ │ ├── IBActivityManagerService.aidl │ │ │ └── IBJobManagerService.aidl │ │ │ ├── location │ │ │ └── IBLocationManagerService.aidl │ │ │ ├── notification │ │ │ └── IBNotificationManagerService.aidl │ │ │ ├── os │ │ │ └── IBStorageManagerService.aidl │ │ │ ├── pm │ │ │ ├── BPackageSettings.aidl │ │ │ ├── IBPackageInstallerService.aidl │ │ │ ├── IBPackageManagerService.aidl │ │ │ └── IBXposedManagerService.aidl │ │ │ └── user │ │ │ ├── BUserInfo.aidl │ │ │ └── IBUserManagerService.aidl │ │ └── entity │ │ ├── AppConfig.aidl │ │ ├── JobRecord.aidl │ │ ├── UnbindRecord.aidl │ │ ├── am │ │ ├── PendingResultData.aidl │ │ ├── ReceiverData.aidl │ │ ├── RunningAppProcessInfo.aidl │ │ └── RunningServiceInfo.aidl │ │ ├── location │ │ ├── BCell.aidl │ │ ├── BLocation.aidl │ │ └── BLocationConfig.aidl │ │ └── pm │ │ ├── InstallOption.aidl │ │ ├── InstallResult.aidl │ │ ├── InstalledModule.aidl │ │ └── InstalledPackage.aidl │ ├── assets │ ├── empty.jar │ └── junit.jar │ ├── cpp │ ├── BoxCore.cpp │ ├── BoxCore.h │ ├── CMakeLists.txt │ ├── Hook │ │ ├── BaseHook.cpp │ │ ├── BaseHook.h │ │ ├── BinderHook.cpp │ │ ├── BinderHook.h │ │ ├── RuntimeHook.cpp │ │ ├── RuntimeHook.h │ │ ├── UnixFileSystemHook.cpp │ │ ├── UnixFileSystemHook.h │ │ ├── VMClassLoaderHook.cpp │ │ └── VMClassLoaderHook.h │ ├── IO.cpp │ ├── IO.h │ ├── JniHook │ │ ├── ArtMethod.h │ │ ├── JniHook.cpp │ │ └── JniHook.h │ ├── Log.h │ └── Utils │ │ ├── HexDump.cpp │ │ ├── HexDump.h │ │ ├── PointerCheck.cpp │ │ ├── PointerCheck.h │ │ ├── fake_dlfcn.cpp │ │ └── fake_dlfcn.h │ ├── java │ └── top │ │ └── niunaijun │ │ └── blackbox │ │ ├── BlackBoxCore.java │ │ ├── app │ │ ├── BActivityThread.java │ │ ├── LauncherActivity.java │ │ ├── configuration │ │ │ ├── AppLifecycleCallback.java │ │ │ └── ClientConfiguration.java │ │ └── dispatcher │ │ │ ├── AppJobServiceDispatcher.java │ │ │ └── AppServiceDispatcher.java │ │ ├── core │ │ ├── CrashHandler.java │ │ ├── GmsCore.java │ │ ├── IOCore.java │ │ ├── NativeCore.java │ │ ├── env │ │ │ ├── AppSystemEnv.java │ │ │ ├── BEnvironment.java │ │ │ └── VirtualRuntime.java │ │ └── system │ │ │ ├── BProcessManagerService.java │ │ │ ├── BlackBoxSystem.java │ │ │ ├── DaemonService.java │ │ │ ├── ISystemService.java │ │ │ ├── ProcessRecord.java │ │ │ ├── ServiceManager.java │ │ │ ├── SystemCallProvider.java │ │ │ ├── accounts │ │ │ ├── BAccount.java │ │ │ ├── BAccountManagerService.java │ │ │ ├── BUserAccounts.java │ │ │ ├── RegisteredServicesParser.java │ │ │ └── TokenCache.java │ │ │ ├── am │ │ │ ├── ActiveServices.java │ │ │ ├── ActivityRecord.java │ │ │ ├── ActivityStack.java │ │ │ ├── BActivityManagerService.java │ │ │ ├── BJobManagerService.java │ │ │ ├── BroadcastManager.java │ │ │ ├── PendingIntentRecord.java │ │ │ ├── TaskRecord.java │ │ │ └── UserSpace.java │ │ │ ├── location │ │ │ ├── BLocationManagerService.java │ │ │ └── LocationRecord.java │ │ │ ├── notification │ │ │ ├── BNotificationManagerService.java │ │ │ ├── NotificationChannelManager.java │ │ │ └── NotificationRecord.java │ │ │ ├── os │ │ │ └── BStorageManagerService.java │ │ │ ├── pm │ │ │ ├── BPackage.java │ │ │ ├── BPackageInstallerService.java │ │ │ ├── BPackageManagerService.java │ │ │ ├── BPackageSettings.java │ │ │ ├── BPackageUserState.java │ │ │ ├── BXposedManagerService.java │ │ │ ├── ComponentResolver.java │ │ │ ├── FastImmutableArraySet.java │ │ │ ├── IntentResolver.java │ │ │ ├── PackageManagerCompat.java │ │ │ ├── PackageMonitor.java │ │ │ ├── Settings.java │ │ │ ├── SharedUserSetting.java │ │ │ └── installer │ │ │ │ ├── CopyExecutor.java │ │ │ │ ├── CreatePackageExecutor.java │ │ │ │ ├── CreateUserExecutor.java │ │ │ │ ├── Executor.java │ │ │ │ ├── RemoveAppExecutor.java │ │ │ │ └── RemoveUserExecutor.java │ │ │ └── user │ │ │ ├── BUserHandle.java │ │ │ ├── BUserInfo.java │ │ │ ├── BUserManagerService.java │ │ │ └── BUserStatus.java │ │ ├── entity │ │ ├── AppConfig.java │ │ ├── JobRecord.java │ │ ├── ServiceRecord.java │ │ ├── UnbindRecord.java │ │ ├── am │ │ │ ├── PendingResultData.java │ │ │ ├── ReceiverData.java │ │ │ ├── RunningAppProcessInfo.java │ │ │ └── RunningServiceInfo.java │ │ ├── location │ │ │ ├── BCell.java │ │ │ ├── BLocation.java │ │ │ └── BLocationConfig.java │ │ └── pm │ │ │ ├── InstallOption.java │ │ │ ├── InstallResult.java │ │ │ ├── InstalledModule.java │ │ │ ├── InstalledPackage.java │ │ │ └── XposedConfig.java │ │ ├── fake │ │ ├── delegate │ │ │ ├── AppInstrumentation.java │ │ │ ├── BaseInstrumentationDelegate.java │ │ │ ├── ContentProviderDelegate.java │ │ │ ├── InnerReceiverDelegate.java │ │ │ └── ServiceConnectionDelegate.java │ │ ├── frameworks │ │ │ ├── BAccountManager.java │ │ │ ├── BActivityManager.java │ │ │ ├── BJobManager.java │ │ │ ├── BLocationManager.java │ │ │ ├── BNotificationManager.java │ │ │ ├── BPackageManager.java │ │ │ ├── BStorageManager.java │ │ │ ├── BUserManager.java │ │ │ ├── BXposedManager.java │ │ │ └── BlackManager.java │ │ ├── hook │ │ │ ├── BinderInvocationStub.java │ │ │ ├── ClassInvocationStub.java │ │ │ ├── HookManager.java │ │ │ ├── IInjectHook.java │ │ │ ├── MethodHook.java │ │ │ ├── ProxyMethod.java │ │ │ ├── ProxyMethods.java │ │ │ └── ScanClass.java │ │ ├── provider │ │ │ ├── FileProvider.java │ │ │ └── FileProviderHandler.java │ │ └── service │ │ │ ├── ActivityManagerCommonProxy.java │ │ │ ├── HCallbackProxy.java │ │ │ ├── IAccessibilityManagerProxy.java │ │ │ ├── IAccountManagerProxy.java │ │ │ ├── IActivityClientProxy.java │ │ │ ├── IActivityManagerProxy.java │ │ │ ├── IActivityTaskManagerProxy.java │ │ │ ├── IAlarmManagerProxy.java │ │ │ ├── IAppOpsManagerProxy.java │ │ │ ├── IAppWidgetManagerProxy.java │ │ │ ├── IAutofillManagerProxy.java │ │ │ ├── IBluetoothManagerProxy.java │ │ │ ├── IConnectivityManagerProxy.java │ │ │ ├── IContextHubServiceProxy.java │ │ │ ├── IDeviceIdentifiersPolicyProxy.java │ │ │ ├── IDevicePolicyManagerProxy.java │ │ │ ├── IDisplayManagerProxy.java │ │ │ ├── IFingerprintManagerProxy.java │ │ │ ├── IGraphicsStatsProxy.java │ │ │ ├── IJobServiceProxy.java │ │ │ ├── ILauncherAppsProxy.java │ │ │ ├── ILocationManagerProxy.java │ │ │ ├── IMediaRouterServiceProxy.java │ │ │ ├── IMediaSessionManagerProxy.java │ │ │ ├── INetworkManagementServiceProxy.java │ │ │ ├── INotificationManagerProxy.java │ │ │ ├── IPackageManagerProxy.java │ │ │ ├── IPermissionManagerProxy.java │ │ │ ├── IPersistentDataBlockServiceProxy.java │ │ │ ├── IPhoneSubInfoProxy.java │ │ │ ├── IPowerManagerProxy.java │ │ │ ├── IShortcutManagerProxy.java │ │ │ ├── IStorageManagerProxy.java │ │ │ ├── IStorageStatsManagerProxy.java │ │ │ ├── ISystemUpdateProxy.java │ │ │ ├── ITelephonyManagerProxy.java │ │ │ ├── ITelephonyRegistryProxy.java │ │ │ ├── IUserManagerProxy.java │ │ │ ├── IVibratorServiceProxy.java │ │ │ ├── IVpnManagerProxy.java │ │ │ ├── IWifiManagerProxy.java │ │ │ ├── IWifiScannerProxy.java │ │ │ ├── IWindowManagerProxy.java │ │ │ ├── IWindowSessionProxy.java │ │ │ ├── VpnCommonProxy.java │ │ │ ├── base │ │ │ ├── PkgMethodProxy.java │ │ │ ├── UidMethodProxy.java │ │ │ └── ValueMethodProxy.java │ │ │ ├── context │ │ │ ├── ContentServiceStub.java │ │ │ ├── LocationListenerStub.java │ │ │ ├── RestrictionsManagerStub.java │ │ │ └── providers │ │ │ │ ├── BContentProvider.java │ │ │ │ ├── ContentProviderStub.java │ │ │ │ └── SystemProviderStub.java │ │ │ └── libcore │ │ │ └── OsStub.java │ │ ├── proxy │ │ ├── ProxyActivity.java │ │ ├── ProxyBroadcastReceiver.java │ │ ├── ProxyContentProvider.java │ │ ├── ProxyJobService.java │ │ ├── ProxyManifest.java │ │ ├── ProxyPendingActivity.java │ │ ├── ProxyService.java │ │ ├── ProxyVpnService.java │ │ ├── TransparentProxyActivity.java │ │ └── record │ │ │ ├── ProxyActivityRecord.java │ │ │ ├── ProxyBroadcastRecord.java │ │ │ ├── ProxyPendingRecord.java │ │ │ └── ProxyServiceRecord.java │ │ └── utils │ │ ├── AbiUtils.java │ │ ├── ArrayUtils.java │ │ ├── CloseUtils.java │ │ ├── ComponentUtils.java │ │ ├── DrawableUtils.java │ │ ├── FileUtils.java │ │ ├── HackAppUtils.java │ │ ├── Md5Utils.java │ │ ├── MethodParameterUtils.java │ │ ├── NativeUtils.java │ │ ├── ReflectionClass.java │ │ ├── Reflector.java │ │ ├── ShellUtils.java │ │ ├── Slog.java │ │ ├── TrieTree.java │ │ ├── compat │ │ ├── AccountManagerCompat.java │ │ ├── ActivityCompat.java │ │ ├── ActivityManagerCompat.java │ │ ├── ApplicationThreadCompat.java │ │ ├── BuildCompat.java │ │ ├── BundleCompat.java │ │ ├── ContentProviderCompat.java │ │ ├── ContextCompat.java │ │ ├── DexFileCompat.java │ │ ├── PackageParserCompat.java │ │ ├── ParceledListSliceCompat.java │ │ ├── StartActivityCompat.java │ │ ├── StrictModeCompat.java │ │ ├── SystemPropertiesCompat.java │ │ ├── TaskDescriptionCompat.java │ │ └── XposedParserCompat.java │ │ └── provider │ │ └── ProviderCall.java │ └── res │ ├── drawable │ └── ic_launcher.png │ ├── layout │ └── activity_launcher.xml │ ├── values │ ├── strings.xml │ └── styles.xml │ └── xml │ └── filepath.xml ├── LICENSE ├── README.md ├── README_ZH.md ├── android-mirror ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── aidl │ │ ├── android │ │ │ ├── accounts │ │ │ │ ├── IAccountAuthenticator.aidl │ │ │ │ ├── IAccountAuthenticatorResponse.aidl │ │ │ │ └── IAccountManagerResponse.aidl │ │ │ ├── app │ │ │ │ ├── IActivityManager │ │ │ │ │ └── ContentProviderHolder.aidl │ │ │ │ ├── IServiceConnection.aidl │ │ │ │ ├── IStopUserCallback.aidl │ │ │ │ ├── IWallpaperManagerCallback.aidl │ │ │ │ └── job │ │ │ │ │ ├── IJobCallback.aidl │ │ │ │ │ ├── IJobService.aidl │ │ │ │ │ └── JobWorkItem.aidl │ │ │ ├── content │ │ │ │ ├── IIntentReceiver.aidl │ │ │ │ ├── ISyncAdapter.aidl │ │ │ │ ├── ISyncContext.aidl │ │ │ │ ├── ISyncStatusObserver.aidl │ │ │ │ ├── SyncStatusInfo.aidl │ │ │ │ └── pm │ │ │ │ │ ├── IPackageDataObserver.aidl │ │ │ │ │ ├── IPackageDeleteObserver2.aidl │ │ │ │ │ ├── IPackageInstallObserver.aidl │ │ │ │ │ ├── IPackageInstallObserver2.aidl │ │ │ │ │ ├── IPackageInstallerCallback.aidl │ │ │ │ │ └── IPackageInstallerSession.aidl │ │ │ ├── database │ │ │ │ └── IContentObserver.aidl │ │ │ ├── location │ │ │ │ └── ILocationListener.aidl │ │ │ ├── net │ │ │ │ ├── IConnectivityManager.aidl │ │ │ │ └── wifi │ │ │ │ │ └── IWifiScanner.aidl │ │ │ └── os │ │ │ │ └── ISystemUpdateManager.aidl │ │ └── com │ │ │ └── android │ │ │ └── internal │ │ │ └── widget │ │ │ └── ILockSettings.aidl │ └── java │ │ └── black │ │ ├── android │ │ ├── accounts │ │ │ └── IAccountManager.java │ │ ├── app │ │ │ ├── Activity.java │ │ │ ├── ActivityClient.java │ │ │ ├── ActivityManager.java │ │ │ ├── ActivityManagerNative.java │ │ │ ├── ActivityManagerOreo.java │ │ │ ├── ActivityTaskManager.java │ │ │ ├── ActivityThread.java │ │ │ ├── ActivityThreadNMR1.java │ │ │ ├── ActivityThreadQ.java │ │ │ ├── AlarmManager.java │ │ │ ├── AppOpsManager.java │ │ │ ├── ApplicationThreadNative.java │ │ │ ├── ClientTransactionHandler.java │ │ │ ├── ContextImpl.java │ │ │ ├── ContextImplICS.java │ │ │ ├── ContextImplKitkat.java │ │ │ ├── IActivityManager.java │ │ │ ├── IActivityManagerL.java │ │ │ ├── IActivityManagerN.java │ │ │ ├── IActivityTaskManager.java │ │ │ ├── IAlarmManager.java │ │ │ ├── IApplicationThread.java │ │ │ ├── IApplicationThreadOreo.java │ │ │ ├── ISearchManager.java │ │ │ ├── IServiceConnectionO.java │ │ │ ├── IUsageStatsManager.java │ │ │ ├── IWallpaperManager.java │ │ │ ├── Instrumentation.java │ │ │ ├── LoadedApk.java │ │ │ ├── LoadedApkHuaWei.java │ │ │ ├── LoadedApkICS.java │ │ │ ├── LoadedApkKitkat.java │ │ │ ├── Notification.java │ │ │ ├── NotificationChannel.java │ │ │ ├── NotificationChannelGroup.java │ │ │ ├── NotificationL.java │ │ │ ├── NotificationM.java │ │ │ ├── NotificationManager.java │ │ │ ├── NotificationO.java │ │ │ ├── PendingIntentJBMR2.java │ │ │ ├── PendingIntentO.java │ │ │ ├── Service.java │ │ │ ├── ServiceStartArgs.java │ │ │ ├── SharedPreferencesImpl.java │ │ │ ├── WallpaperManager.java │ │ │ ├── admin │ │ │ │ └── IDevicePolicyManager.java │ │ │ ├── backup │ │ │ │ └── IBackupManager.java │ │ │ ├── job │ │ │ │ ├── IJobScheduler.java │ │ │ │ ├── JobInfo.java │ │ │ │ ├── JobParameters.java │ │ │ │ └── JobWorkItem.java │ │ │ ├── role │ │ │ │ └── IRoleManager.java │ │ │ ├── servertransaction │ │ │ │ ├── ActivityLifecycleItem.java │ │ │ │ ├── ActivityResultItem.java │ │ │ │ ├── ClientTransaction.java │ │ │ │ ├── LaunchActivityItem.java │ │ │ │ └── TopResumedActivityChangeItem.java │ │ │ └── usage │ │ │ │ ├── IStorageStatsManager.java │ │ │ │ └── StorageStats.java │ │ ├── bluetooth │ │ │ ├── IBluetooth.java │ │ │ └── IBluetoothManager.java │ │ ├── content │ │ │ ├── AttributionSource.java │ │ │ ├── AttributionSourceState.java │ │ │ ├── BroadcastReceiver.java │ │ │ ├── ClipboardManager.java │ │ │ ├── ClipboardManagerOreo.java │ │ │ ├── ContentProviderClient.java │ │ │ ├── ContentProviderClientQ.java │ │ │ ├── ContentProviderHolderOreo.java │ │ │ ├── ContentProviderNative.java │ │ │ ├── ContentResolver.java │ │ │ ├── IClipboard.java │ │ │ ├── IContentProvider.java │ │ │ ├── IContentService.java │ │ │ ├── IIntentReceiver.java │ │ │ ├── IRestrictionsManager.java │ │ │ ├── IntentFilter.java │ │ │ ├── IntentSender.java │ │ │ ├── PeriodicSync.java │ │ │ ├── SyncAdapterType.java │ │ │ ├── SyncAdapterTypeN.java │ │ │ ├── SyncInfo.java │ │ │ ├── SyncRequest.java │ │ │ ├── pm │ │ │ │ ├── ApplicationInfoL.java │ │ │ │ ├── ApplicationInfoN.java │ │ │ │ ├── ApplicationInfoP.java │ │ │ │ ├── ILauncherApps.java │ │ │ │ ├── IShortcutService.java │ │ │ │ ├── LauncherApps.java │ │ │ │ ├── PackageInstaller.java │ │ │ │ ├── PackageParser.java │ │ │ │ ├── PackageParserLollipop.java │ │ │ │ ├── PackageParserLollipop22.java │ │ │ │ ├── PackageParserMarshmallow.java │ │ │ │ ├── PackageParserNougat.java │ │ │ │ ├── PackageParserPie.java │ │ │ │ ├── PackageUserState.java │ │ │ │ ├── ParceledListSlice.java │ │ │ │ ├── SigningInfo.java │ │ │ │ └── UserInfo.java │ │ │ └── res │ │ │ │ ├── AssetManager.java │ │ │ │ └── CompatibilityInfo.java │ │ ├── ddm │ │ │ └── DdmHandleAppName.java │ │ ├── graphics │ │ │ └── Compatibility.java │ │ ├── hardware │ │ │ ├── display │ │ │ │ ├── DisplayManagerGlobal.java │ │ │ │ └── IDisplayManager.java │ │ │ └── location │ │ │ │ └── IContextHubService.java │ │ ├── location │ │ │ ├── GpsStatus.java │ │ │ ├── GpsStatusL.java │ │ │ ├── ILocationListener.java │ │ │ ├── ILocationManager.java │ │ │ ├── LocationManager.java │ │ │ ├── LocationManagerQ.java │ │ │ ├── LocationRequestL.java │ │ │ └── provider │ │ │ │ └── ProviderProperties.java │ │ ├── media │ │ │ ├── AudioManager.java │ │ │ ├── IAudioService.java │ │ │ ├── IMediaRouterService.java │ │ │ ├── MediaRouter.java │ │ │ └── session │ │ │ │ └── ISessionManager.java │ │ ├── net │ │ │ ├── IConnectivityManager.java │ │ │ ├── IVpnManager.java │ │ │ ├── NetworkInfo.java │ │ │ └── wifi │ │ │ │ ├── IWifiManager.java │ │ │ │ ├── WifiInfo.java │ │ │ │ ├── WifiManager.java │ │ │ │ ├── WifiScanner.java │ │ │ │ └── WifiSsid.java │ │ ├── nfc │ │ │ └── INfcAdapter.java │ │ ├── os │ │ │ ├── BaseBundle.java │ │ │ ├── Build.java │ │ │ ├── Bundle.java │ │ │ ├── BundleICS.java │ │ │ ├── DropBoxManager.java │ │ │ ├── Handler.java │ │ │ ├── IDeviceIdentifiersPolicyService.java │ │ │ ├── INetworkManagementService.java │ │ │ ├── IPowerManager.java │ │ │ ├── IUserManager.java │ │ │ ├── IVibratorManagerService.java │ │ │ ├── MemoryFile.java │ │ │ ├── Message.java │ │ │ ├── Parcel.java │ │ │ ├── Process.java │ │ │ ├── ServiceManager.java │ │ │ ├── StrictMode.java │ │ │ ├── UserHandle.java │ │ │ ├── health │ │ │ │ └── SystemHealthManager.java │ │ │ ├── mount │ │ │ │ └── IMountService.java │ │ │ └── storage │ │ │ │ ├── IStorageManager.java │ │ │ │ ├── StorageManager.java │ │ │ │ └── StorageVolume.java │ │ ├── permission │ │ │ └── IPermissionManager.java │ │ ├── providers │ │ │ └── Settings.java │ │ ├── renderscript │ │ │ └── RenderScriptCacheDir.java │ │ ├── rms │ │ │ ├── HwSysResImplP.java │ │ │ └── resource │ │ │ │ ├── ReceiverResourceLP.java │ │ │ │ ├── ReceiverResourceM.java │ │ │ │ ├── ReceiverResourceN.java │ │ │ │ └── ReceiverResourceO.java │ │ ├── security │ │ │ └── net │ │ │ │ └── config │ │ │ │ └── NetworkSecurityConfigProvider.java │ │ ├── service │ │ │ ├── notification │ │ │ │ └── StatusBarNotification.java │ │ │ └── persistentdata │ │ │ │ └── IPersistentDataBlockService.java │ │ ├── telephony │ │ │ ├── CellIdentityCdma.java │ │ │ ├── CellIdentityGsm.java │ │ │ ├── CellInfoCdma.java │ │ │ ├── CellInfoGsm.java │ │ │ ├── CellSignalStrengthCdma.java │ │ │ ├── CellSignalStrengthGsm.java │ │ │ ├── NeighboringCellInfo.java │ │ │ ├── SmsManager.java │ │ │ └── TelephonyManager.java │ │ ├── util │ │ │ └── Singleton.java │ │ ├── view │ │ │ ├── CompatibilityInfoHolder.java │ │ │ ├── Display.java │ │ │ ├── DisplayAdjustments.java │ │ │ ├── HardwareRenderer.java │ │ │ ├── IAutoFillManager.java │ │ │ ├── IGraphicsStats.java │ │ │ ├── IWindowManager.java │ │ │ ├── RenderScript.java │ │ │ ├── SurfaceControl.java │ │ │ ├── ThreadedRenderer.java │ │ │ ├── WindowManagerGlobal.java │ │ │ └── accessibility │ │ │ │ └── IAccessibilityManager.java │ │ ├── webkit │ │ │ ├── IWebViewUpdateService.java │ │ │ └── WebViewFactory.java │ │ └── widget │ │ │ ├── RemoteViews.java │ │ │ └── Toast.java │ │ ├── com │ │ └── android │ │ │ └── internal │ │ │ ├── R.java │ │ │ ├── app │ │ │ ├── IAppOpsService.java │ │ │ ├── IBatteryStats.java │ │ │ └── ISmtOpsService.java │ │ │ ├── appwidget │ │ │ └── IAppWidgetService.java │ │ │ ├── content │ │ │ ├── NativeLibraryHelper.java │ │ │ └── ReferrerIntent.java │ │ │ ├── net │ │ │ └── VpnConfig.java │ │ │ ├── os │ │ │ ├── IDropBoxManagerService.java │ │ │ ├── IVibratorService.java │ │ │ └── UserManager.java │ │ │ ├── policy │ │ │ └── PhoneWindow.java │ │ │ ├── telecom │ │ │ └── ITelecomService.java │ │ │ ├── telephony │ │ │ ├── IMms.java │ │ │ ├── IPhoneSubInfo.java │ │ │ ├── ISms.java │ │ │ ├── ISub.java │ │ │ ├── ITelephony.java │ │ │ ├── ITelephonyRegistry.java │ │ │ └── PhoneConstantsMtk.java │ │ │ └── view │ │ │ ├── IInputMethodManager.java │ │ │ └── inputmethod │ │ │ └── InputMethodManager.java │ │ ├── dalvik │ │ └── system │ │ │ └── VMRuntime.java │ │ ├── java │ │ ├── io │ │ │ ├── File.java │ │ │ ├── FileSystem.java │ │ │ └── UnixFileSystem.java │ │ └── lang │ │ │ ├── ThreadGroup.java │ │ │ └── ThreadGroupN.java │ │ └── libcore │ │ └── io │ │ ├── ForwardingOs.java │ │ ├── Libcore.java │ │ └── Os.java │ └── test │ └── java │ └── top │ └── niunaijun │ └── android_mirror │ └── ExampleUnitTest.java ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── top │ │ └── niunaijun │ │ └── blackboxa │ │ ├── app │ │ ├── App.kt │ │ ├── AppManager.kt │ │ └── rocker │ │ │ ├── BaseActivityLifecycleCallback.kt │ │ │ └── RockerManager.kt │ │ ├── bean │ │ ├── AppInfo.kt │ │ ├── FakeLocationBean.kt │ │ ├── GmsBean.kt │ │ ├── InstalledAppBean.kt │ │ └── XpModuleInfo.kt │ │ ├── biz │ │ └── cache │ │ │ └── AppSharedPreferenceDelegate.kt │ │ ├── data │ │ ├── AppsRepository.kt │ │ ├── AppsSortCompon.kt │ │ ├── FakeLocationRepository.kt │ │ ├── GmsRepository.kt │ │ └── XpRepository.kt │ │ ├── util │ │ ├── ContextUtil.kt │ │ ├── InjectionUtil.kt │ │ ├── MathUtil.java │ │ ├── ResUtil.kt │ │ ├── Resolution.java │ │ ├── ShortcutUtil.kt │ │ ├── ToastEx.kt │ │ └── ViewBindingEx.kt │ │ ├── view │ │ ├── apps │ │ │ ├── AppsAdapter.kt │ │ │ ├── AppsFactory.kt │ │ │ ├── AppsFragment.kt │ │ │ ├── AppsTouchCallBack.kt │ │ │ └── AppsViewModel.kt │ │ ├── base │ │ │ ├── BaseActivity.kt │ │ │ ├── BaseViewModel.kt │ │ │ └── LoadingActivity.kt │ │ ├── fake │ │ │ ├── FakeLocationAdapter.kt │ │ │ ├── FakeLocationFactory.kt │ │ │ ├── FakeLocationViewModel.kt │ │ │ ├── FakeManagerActivity.kt │ │ │ └── FollowMyLocationOverlay.kt │ │ ├── gms │ │ │ ├── GmsAdapter.kt │ │ │ ├── GmsFactory.kt │ │ │ ├── GmsManagerActivity.kt │ │ │ └── GmsViewModel.kt │ │ ├── list │ │ │ ├── ListActivity.kt │ │ │ ├── ListAdapter.kt │ │ │ ├── ListFactory.kt │ │ │ └── ListViewModel.kt │ │ ├── main │ │ │ ├── BlackBoxLoader.kt │ │ │ ├── MainActivity.kt │ │ │ ├── ShortcutActivity.kt │ │ │ ├── ViewPagerAdapter.kt │ │ │ └── WelcomeActivity.kt │ │ ├── setting │ │ │ ├── SettingActivity.kt │ │ │ └── SettingFragment.kt │ │ └── xp │ │ │ ├── XpActivity.kt │ │ │ ├── XpAdapter.kt │ │ │ ├── XpFactory.kt │ │ │ └── XpViewModel.kt │ │ └── widget │ │ ├── EnFloatView.kt │ │ └── RockerView.java │ └── res │ ├── drawable-anydpi │ ├── ic_add.xml │ ├── ic_location_change.xml │ └── ic_search.xml │ ├── drawable-hdpi │ ├── ic_add.png │ ├── ic_location_change.png │ └── ic_search.png │ ├── drawable-mdpi │ ├── ic_add.png │ ├── ic_location_change.png │ └── ic_search.png │ ├── drawable-v24 │ └── ic_launcher_foreground.xml │ ├── drawable-xhdpi │ ├── ic_add.png │ ├── ic_location_change.png │ └── ic_search.png │ ├── drawable-xxhdpi │ ├── ic_add.png │ ├── ic_location_change.png │ └── ic_search.png │ ├── drawable │ ├── ic_empty.xml │ ├── ic_launcher_background.xml │ └── splash.xml │ ├── layout │ ├── activity_gms.xml │ ├── activity_list.xml │ ├── activity_main.xml │ ├── activity_osmdroid.xml │ ├── activity_setting.xml │ ├── activity_xp.xml │ ├── base_empty.xml │ ├── fragment_apps.xml │ ├── item_app.xml │ ├── item_fake.xml │ ├── item_gms.xml │ ├── item_package.xml │ ├── item_viewpager.xml │ ├── item_xp.xml │ ├── view_float_rocker.xml │ ├── view_switch.xml │ └── view_toolbar.xml │ ├── menu │ ├── app_menu.xml │ ├── menu_list.xml │ ├── menu_main.xml │ └── menu_search.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ ├── ic_launcher_beta.png │ ├── ic_launcher_round.png │ └── ic_launcher_round_beta.png │ ├── mipmap-ldpi │ ├── ic_launcher.png │ ├── ic_launcher_beta.png │ ├── ic_launcher_round.png │ └── ic_launcher_round_beta.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ ├── ic_launcher_beta.png │ ├── ic_launcher_round.png │ └── ic_launcher_round_beta.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ ├── ic_launcher_beta.png │ ├── ic_launcher_round.png │ └── ic_launcher_round_beta.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_beta.png │ ├── ic_launcher_round.png │ └── ic_launcher_round_beta.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_beta.png │ ├── ic_launcher_round.png │ └── ic_launcher_round_beta.png │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── colors.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── network_security_config.xml │ └── setting.xml ├── assets ├── banner.png └── multiw.gif ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request--------.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request / 新功能请求 3 | about: Suggest an idea for this project 4 | title: "[Feature]" 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** / **你的功能请求是否与问题有关?请描述。** 11 | A clear and concise description of what the problem is. 12 | 清晰简洁地描述问题是什么。 13 | 14 | **Describe the solution you'd like** / **描述你想要的解决方案** 15 | A clear and concise description of what you want to happen. 16 | 清晰简洁地描述你希望发生什么。 17 | 18 | **Additional context** / **额外的内容** 19 | Add any other context or screenshots about the feature request here. 20 | 在此添加关于该功能请求的任何其他内容或屏幕截图。 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/other-issues-------.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Other issues / 其他问题 3 | about: Describe this issue template's purpose here. 4 | title: "[Other]" 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/workflows/upstream.yml: -------------------------------------------------------------------------------- 1 | name: Merge upstream branches 2 | on: 3 | push: 4 | branches: [ master ] 5 | 6 | jobs: 7 | Merge: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Merge upstream 13 | run: | 14 | curl \ 15 | -X POST \ 16 | -H "Accept: application/vnd.github.v3+json" \ 17 | -H "Authorization: token ${{ secrets.TOKEN }}" \ 18 | https://api.github.com/repos/AutoBlackBox/BlackBox/merge-upstream \ 19 | -d '{"branch":"master"}' 20 | -------------------------------------------------------------------------------- /Bcore/black-fake/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /Bcore/black-fake/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/Bcore/black-fake/consumer-rules.pro -------------------------------------------------------------------------------- /Bcore/black-fake/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Bcore/black-fake/src/main/java/android/app/ContentProviderHolder.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.IContentProvider; 4 | import android.content.pm.ProviderInfo; 5 | import android.os.IBinder; 6 | 7 | /** 8 | * Created by Milk on 2021/5/7. 9 | * * ∧_∧ 10 | * (`・ω・∥ 11 | * 丶 つ0 12 | * しーJ 13 | * 此处无Bug 14 | */ 15 | public class ContentProviderHolder { 16 | public final ProviderInfo info = null; 17 | public IContentProvider provider; 18 | public IBinder connection; 19 | } 20 | -------------------------------------------------------------------------------- /Bcore/black-fake/src/main/java/android/content/IContentProvider.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | /** 6 | * Created by Milk on 2021/5/7. 7 | * * ∧_∧ 8 | * (`・ω・∥ 9 | * 丶 つ0 10 | * しーJ 11 | * 此处无Bug 12 | */ 13 | public interface IContentProvider extends IInterface { 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/black-fake/src/main/java/android/os/SELinux.java: -------------------------------------------------------------------------------- 1 | package android.os; 2 | 3 | public class SELinux { 4 | public static final String getContext() { 5 | throw new UnsupportedOperationException("STUB"); 6 | } 7 | 8 | public static final boolean isSELinuxEnabled() { 9 | throw new UnsupportedOperationException("STUB"); 10 | } 11 | 12 | public static final boolean isSELinuxEnforced() { 13 | throw new UnsupportedOperationException("STUB"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/black-fake/src/main/java/android/os/ServiceManager.java: -------------------------------------------------------------------------------- 1 | package android.os; 2 | 3 | public class ServiceManager { 4 | public static IBinder getService(String name) { 5 | throw new UnsupportedOperationException("STUB"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Bcore/black-fake/src/main/java/top/niunaijun/blackbox/fake/FakeCore.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake; 2 | 3 | import top.niunaijun.jnihook.ReflectCore; 4 | 5 | /** 6 | * Created by Milk on 2021/5/7. 7 | * * ∧_∧ 8 | * (`・ω・∥ 9 | * 丶 つ0 10 | * しーJ 11 | * 此处无Bug 12 | */ 13 | public class FakeCore { 14 | public static void init() { 15 | ReflectCore.set(android.app.ActivityThread.class); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/black-hook/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /Bcore/black-hook/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/Bcore/black-hook/consumer-rules.pro -------------------------------------------------------------------------------- /Bcore/black-hook/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Bcore/black-hook/src/main/java/top/niunaijun/jnihook/jni/JniHook.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.jnihook.jni; 2 | 3 | import java.lang.reflect.Field; 4 | import java.lang.reflect.Method; 5 | 6 | /** 7 | * Created by Milk on 3/7/21. 8 | * * ∧_∧ 9 | * (`・ω・∥ 10 | * 丶 つ0 11 | * しーJ 12 | * 此处无Bug 13 | */ 14 | public final class JniHook { 15 | public static final int NATIVE_OFFSET = 0; 16 | 17 | public static final int NATIVE_OFFSET_2 = 0; 18 | 19 | public static final native void nativeOffset(); 20 | 21 | public static final native void nativeOffset2(); 22 | 23 | public static native void setAccessible(Class clazz, Method method); 24 | 25 | public static native void setAccessible(Class clazz, Field field); 26 | } 27 | -------------------------------------------------------------------------------- /Bcore/pine-core/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /Bcore/pine-core/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/Bcore/pine-core/consumer-rules.pro -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/jni_bridge.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/3/18. 3 | // 4 | 5 | #ifndef PINE_PINE_H 6 | #define PINE_PINE_H 7 | 8 | #include 9 | 10 | extern "C" { 11 | JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved); 12 | bool register_Pine(JNIEnv* env, jclass Pine); 13 | bool register_Ruler(JNIEnv* env, jclass Ruler); 14 | 15 | void Ruler_m1(JNIEnv* env, jclass); // used for search ArtMethod members 16 | } 17 | 18 | #endif //PINE_PINE_H 19 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/pine_config.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/8/21. 3 | // 4 | 5 | #ifndef PINE_PINE_CONFIG_H 6 | #define PINE_PINE_CONFIG_H 7 | 8 | #include "utils/macros.h" 9 | 10 | namespace pine { 11 | class PineConfig final { 12 | public: 13 | static bool debug; 14 | static bool debuggable; 15 | static bool anti_checks; 16 | static bool jit_compilation_allowed; 17 | private: 18 | DISALLOW_IMPLICIT_CONSTRUCTORS(PineConfig); 19 | }; 20 | } 21 | 22 | #endif //PINE_PINE_CONFIG_H 23 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/ruler.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/3/18. 3 | // 4 | 5 | #include "jni_bridge.h" 6 | #include "utils/macros.h" 7 | #include "utils/log.h" 8 | 9 | void Ruler_m1(JNIEnv*, jclass) { 10 | LOGI("Don't call me..."); 11 | } 12 | 13 | static const JNINativeMethod gMethods[] = { 14 | {"m1", "()V", reinterpret_cast(Ruler_m1)} 15 | }; 16 | 17 | bool register_Ruler(JNIEnv* env, jclass Ruler) { 18 | return LIKELY(env->RegisterNatives(Ruler, gMethods, NELEM(gMethods)) == JNI_OK); 19 | } -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/trampoline/arch/arch.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/4/2. 3 | // 4 | 5 | #ifndef PINE_ARCH_H 6 | #define PINE_ARCH_H 7 | 8 | #if defined(__aarch64__) || defined(__arm__) 9 | inline void sev() { 10 | __asm__ __volatile__ ("sev" :::"memory"); 11 | } 12 | 13 | inline void dmb() { 14 | __asm__ __volatile__ ("dmb sy" :::"memory"); 15 | } 16 | 17 | inline void dsb() { 18 | __asm__ __volatile__ ("dsb sy" :::"memory"); 19 | } 20 | #endif 21 | 22 | #endif //PINE_ARCH_H 23 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/trampoline/arch/arm32.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/3/19. 3 | // 4 | 5 | #ifndef PINE_ARM32_H 6 | #define PINE_ARM32_H 7 | 8 | #include 9 | #include "../trampoline_installer.h" 10 | #include "../../utils/macros.h" 11 | 12 | namespace pine { 13 | class Arm32TrampolineInstaller final : public TrampolineInstaller { 14 | public: 15 | Arm32TrampolineInstaller() : TrampolineInstaller(4) { 16 | } 17 | protected: 18 | virtual void InitTrampolines() override ; 19 | virtual bool CannotBackup(art::ArtMethod* target, size_t size) override ; 20 | virtual void FillWithNopImpl(void* target, size_t size) override ; 21 | private: 22 | static bool IsPCRelatedInst(uint32_t inst); 23 | }; 24 | } 25 | 26 | 27 | #endif //PINE_ARM32_H 28 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/trampoline/arch/arm64.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/4/7. 3 | // 4 | 5 | #ifndef PINE_ARM64_H 6 | #define PINE_ARM64_H 7 | 8 | #include 9 | #include "../trampoline_installer.h" 10 | 11 | namespace pine { 12 | class Arm64TrampolineInstaller final : public TrampolineInstaller { 13 | public: 14 | Arm64TrampolineInstaller() : TrampolineInstaller(8) { 15 | } 16 | protected: 17 | virtual void InitTrampolines() override ; 18 | virtual bool CannotBackup(art::ArtMethod* target, size_t size) override ; 19 | virtual void FillWithNopImpl(void* target, size_t size) override ; 20 | private: 21 | static bool IsPCRelatedInst(uint32_t inst); 22 | }; 23 | } 24 | 25 | #endif //PINE_ARM64_H 26 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/utils/lock.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/3/11. 3 | // 4 | 5 | #ifndef PINE_LOCK_H 6 | #define PINE_LOCK_H 7 | 8 | #include "macros.h" 9 | 10 | namespace pine { 11 | class ScopedLock { 12 | public: 13 | inline ScopedLock(std::mutex& mutex) : mLock(mutex) { mLock.lock(); } 14 | inline ScopedLock(std::mutex* mutex) : mLock(*mutex) { mLock.lock(); } 15 | inline ~ScopedLock() { mLock.unlock(); } 16 | private: 17 | std::mutex& mLock; 18 | 19 | DISALLOW_COPY_AND_ASSIGN(ScopedLock); 20 | }; 21 | } 22 | #endif //PINE_LOCK_H 23 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/cpp/utils/well_known_classes.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by canyie on 2020/4/1. 3 | // 4 | 5 | #include "well_known_classes.h" 6 | #include "../android.h" 7 | 8 | using namespace pine; 9 | 10 | jclass WellKnownClasses::java_lang_reflect_ArtMethod = nullptr; 11 | jfieldID WellKnownClasses::java_lang_reflect_Executable_artMethod = nullptr; 12 | void WellKnownClasses::Init(JNIEnv* env) { 13 | java_lang_reflect_ArtMethod = FindClass(env, "java/lang/reflect/ArtMethod"); 14 | if (UNLIKELY(Android::version >= Android::kR)) { 15 | java_lang_reflect_Executable_artMethod = RequireNonStaticFieldID(env, 16 | "java/lang/reflect/Executable", "artMethod", "J"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Bcore/pine-core/src/main/java/top/canyie/pine/Ruler.java: -------------------------------------------------------------------------------- 1 | package top.canyie.pine; 2 | 3 | /** 4 | * @author canyie 5 | * Internal ruler used for calculating ArtMethod size and members offset. 6 | */ 7 | @SuppressWarnings("unused") 8 | final class Ruler { 9 | private static native void m1(); 10 | private static native void m2(); 11 | 12 | private interface I { 13 | void m(); 14 | } 15 | } -------------------------------------------------------------------------------- /Bcore/pine-xposed-res/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /Bcore/pine-xposed-res/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Bcore/pine-xposed-res/src/main/java/android/content/res/CompatibilityInfo.java: -------------------------------------------------------------------------------- 1 | package android.content.res; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | public class CompatibilityInfo implements Parcelable { 7 | @Override 8 | public int describeContents() { 9 | throw new UnsupportedOperationException("Stub!"); 10 | } 11 | 12 | @Override 13 | public void writeToParcel(Parcel dest, int flags) { 14 | throw new UnsupportedOperationException("Stub!"); 15 | } 16 | 17 | public static final Creator CREATOR = null; 18 | } 19 | -------------------------------------------------------------------------------- /Bcore/pine-xposed-res/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 | -------------------------------------------------------------------------------- /Bcore/pine-xposed/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /Bcore/pine-xposed/src/main/apacheCommonsLang/NOTICE.txt: -------------------------------------------------------------------------------- 1 | Apache Commons Lang 2 | Copyright 2001-2011 The Apache Software Foundation 3 | 4 | This product includes software developed by 5 | The Apache Software Foundation (http://www.apache.org/). 6 | 7 | This product includes software from the Spring Framework, 8 | under the Apache License 2.0 (see: StringUtils.containsWhitespace()) 9 | -------------------------------------------------------------------------------- /Bcore/pine-xposed/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 | /** 10 | * Hidden API Stub of class com.android.internal.util.XmlUtils. 11 | * @author canyie 12 | */ 13 | public final class XmlUtils { 14 | private XmlUtils() { 15 | } 16 | 17 | public static final HashMap readMapXml(InputStream in) throws XmlPullParserException, IOException { 18 | throw new IllegalStateException("Hidden API Stub called: com.android.internal.util.XmlUtils#readMapXml(InputStream)"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/pine-xposed/src/main/java/de/robv/android/xposed/IXposedMod.java: -------------------------------------------------------------------------------- 1 | package de.robv.android.xposed; 2 | 3 | /** Marker interface for Xposed modules. Cannot be implemented directly. */ 4 | /* package */ public interface IXposedMod {} 5 | -------------------------------------------------------------------------------- /Bcore/pine-xposed/src/main/java/de/robv/android/xposed/callbacks/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains the base classes for callbacks. 3 | * 4 | *

For historical reasons, {@link de.robv.android.xposed.XC_MethodHook} and 5 | * {@link de.robv.android.xposed.XC_MethodReplacement} are directly in the 6 | * {@code de.robv.android.xposed} package. 7 | */ 8 | package de.robv.android.xposed.callbacks; 9 | 10 | -------------------------------------------------------------------------------- /Bcore/pine-xposed/src/main/java/de/robv/android/xposed/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains the main classes of the Xposed framework. 3 | */ 4 | package de.robv.android.xposed; 5 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/IEmpty.aidl: -------------------------------------------------------------------------------- 1 | // IBActivityThread.aidl 2 | package top.niunaijun.blackbox.core; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | interface IEmpty { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/system/am/IBJobManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBJobManagerService.aidl 2 | package top.niunaijun.blackbox.core.system.am; 3 | 4 | import android.content.Intent; 5 | import android.content.ComponentName; 6 | import android.os.IBinder; 7 | import java.lang.String; 8 | import android.app.job.JobInfo; 9 | import top.niunaijun.blackbox.entity.JobRecord; 10 | 11 | // Declare any non-default types here with import statements 12 | 13 | interface IBJobManagerService { 14 | JobInfo schedule(in JobInfo info, int userId); 15 | JobRecord queryJobRecord(String processName, int jobId, int userId); 16 | void cancelAll(String processName, int userId); 17 | int cancel(String processName, int jobId, int userId); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/system/os/IBStorageManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBStorageManagerService.aidl 2 | package top.niunaijun.blackbox.core.system.os; 3 | 4 | import android.os.storage.StorageVolume; 5 | import java.lang.String; 6 | import android.net.Uri; 7 | 8 | // Declare any non-default types here with import statements 9 | 10 | interface IBStorageManagerService { 11 | StorageVolume[] getVolumeList(int uid, String packageName, int flags, int userId); 12 | Uri getUriForFile(String file); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/system/pm/BPackageSettings.aidl: -------------------------------------------------------------------------------- 1 | // BPackageSettings.aidl 2 | package top.niunaijun.blackbox.core.system.pm; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | parcelable BPackageSettings; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/system/pm/IBPackageInstallerService.aidl: -------------------------------------------------------------------------------- 1 | // IBPackageInstallerService.aidl 2 | package top.niunaijun.blackbox.core.system.pm; 3 | 4 | import top.niunaijun.blackbox.core.system.pm.BPackageSettings; 5 | import top.niunaijun.blackbox.entity.pm.InstallOption; 6 | 7 | // Declare any non-default types here with import statements 8 | 9 | interface IBPackageInstallerService { 10 | int installPackageAsUser(in BPackageSettings ps, int userId); 11 | int uninstallPackageAsUser(in BPackageSettings ps, boolean removeApp, int userId); 12 | int clearPackage(in BPackageSettings ps, int userId); 13 | int updatePackage(in BPackageSettings ps); 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/system/pm/IBXposedManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBXposedManagerService.aidl 2 | 3 | package top.niunaijun.blackbox.core.system.pm; 4 | 5 | import java.util.List; 6 | import top.niunaijun.blackbox.entity.pm.InstalledModule; 7 | 8 | interface IBXposedManagerService { 9 | boolean isXPEnable(); 10 | void setXPEnable(boolean enable); 11 | boolean isModuleEnable(String packageName); 12 | void setModuleEnable(String packageName, boolean enable); 13 | List getInstalledModules(); 14 | } -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/system/user/BUserInfo.aidl: -------------------------------------------------------------------------------- 1 | // BUserInfo.aidl 2 | package top.niunaijun.blackbox.core.system.user; 3 | 4 | // Declare any non-default types here with import statements 5 | parcelable BUserInfo; 6 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/core/system/user/IBUserManagerService.aidl: -------------------------------------------------------------------------------- 1 | // IBUserManagerService.aidl 2 | package top.niunaijun.blackbox.core.system.user; 3 | 4 | // Declare any non-default types here with import statements 5 | import top.niunaijun.blackbox.core.system.user.BUserInfo; 6 | import java.util.List; 7 | 8 | 9 | interface IBUserManagerService { 10 | BUserInfo getUserInfo(int userId); 11 | boolean exists(int userId); 12 | BUserInfo createUser(int userId); 13 | List getUsers(); 14 | void deleteUser(int userId); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/AppConfig.aidl: -------------------------------------------------------------------------------- 1 | // AppConfig.aidl 2 | package top.niunaijun.blackbox.entity; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | parcelable AppConfig; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/JobRecord.aidl: -------------------------------------------------------------------------------- 1 | // JobRecord.aidl 2 | package top.niunaijun.blackbox.entity; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | parcelable JobRecord; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/UnbindRecord.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity; 2 | 3 | parcelable UnbindRecord; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/am/PendingResultData.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.am; 2 | 3 | parcelable PendingResultData; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/am/ReceiverData.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.am; 2 | 3 | parcelable ReceiverData; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/am/RunningAppProcessInfo.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.am; 2 | 3 | parcelable RunningAppProcessInfo; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/am/RunningServiceInfo.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.am; 2 | 3 | parcelable RunningServiceInfo; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/location/BCell.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.location; 2 | 3 | parcelable BCell; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/location/BLocation.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.location; 2 | 3 | // Declare any non-default types here with import statements 4 | 5 | parcelable BLocation; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/location/BLocationConfig.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.location; 2 | 3 | parcelable BLocationConfig; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstallOption.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.pm; 2 | 3 | parcelable InstallOption; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstallResult.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.pm; 2 | 3 | parcelable InstallResult; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstalledModule.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.pm; 2 | 3 | parcelable InstalledModule; -------------------------------------------------------------------------------- /Bcore/src/main/aidl/top/niunaijun/blackbox/entity/pm/InstalledPackage.aidl: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.entity.pm; 2 | 3 | parcelable InstalledPackage; -------------------------------------------------------------------------------- /Bcore/src/main/assets/empty.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/Bcore/src/main/assets/empty.jar -------------------------------------------------------------------------------- /Bcore/src/main/assets/junit.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/Bcore/src/main/assets/junit.jar -------------------------------------------------------------------------------- /Bcore/src/main/cpp/BoxCore.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 4/9/21. 3 | // 4 | 5 | #ifndef VIRTUALM_VMCORE_H 6 | #define VIRTUALM_VMCORE_H 7 | 8 | #include 9 | 10 | #define VMCORE_CLASS "top/niunaijun/blackbox/core/NativeCore" 11 | 12 | class BoxCore { 13 | public: 14 | static JavaVM *getJavaVM(); 15 | static int getApiLevel(); 16 | static int getCallingUid(JNIEnv *env, int orig); 17 | static jstring redirectPathString(JNIEnv *env, jstring path); 18 | static jobject redirectPathFile(JNIEnv *env, jobject path); 19 | static jlongArray loadEmptyDex(JNIEnv *env); 20 | }; 21 | 22 | 23 | #endif //VIRTUALM_VMCORE_H 24 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BaseHook.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 4/10/21. 3 | // 4 | 5 | #include "BaseHook.h" 6 | 7 | 8 | void BaseHook::init(JNIEnv *env) { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BaseHook.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 4/9/21. 3 | // 4 | 5 | #ifndef VIRTUALM_BASEHOOK_H 6 | #define VIRTUALM_BASEHOOK_H 7 | 8 | #include 9 | #include 10 | 11 | class BaseHook { 12 | public: 13 | static void init(JNIEnv *env); 14 | }; 15 | 16 | 17 | #endif //VIRTUALM_BASEHOOK_H 18 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BinderHook.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 4/25/21. 3 | // 4 | 5 | #include "BinderHook.h" 6 | #include 7 | #include 8 | #include "UnixFileSystemHook.h" 9 | #import "JniHook/JniHook.h" 10 | 11 | 12 | 13 | HOOK_JNI(jint, getCallingUid, JNIEnv *env, jobject obj) { 14 | int orig = orig_getCallingUid(env, obj); 15 | return BoxCore::getCallingUid(env, orig); 16 | } 17 | 18 | 19 | void BinderHook::init(JNIEnv *env) { 20 | const char *clazz = "android/os/Binder"; 21 | JniHook::HookJniFun(env, clazz, "getCallingUid", "()I", (void *) new_getCallingUid, 22 | (void **) (&orig_getCallingUid), true); 23 | } -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/BinderHook.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 4/25/21. 3 | // 4 | 5 | #ifndef BLACKBOX_BINDERHOOK_H 6 | #define BLACKBOX_BINDERHOOK_H 7 | 8 | 9 | #include "BaseHook.h" 10 | 11 | class BinderHook : public BaseHook{ 12 | public: 13 | static void init(JNIEnv *env); 14 | }; 15 | 16 | #endif //BLACKBOX_BINDERHOOK_H 17 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/RuntimeHook.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 5/5/21. 3 | // 4 | 5 | #ifndef BLACKBOX_RUNTIMEHOOK_H 6 | #define BLACKBOX_RUNTIMEHOOK_H 7 | 8 | 9 | #include "BaseHook.h" 10 | #include 11 | 12 | class RuntimeHook : public BaseHook { 13 | public: 14 | static void init(JNIEnv *env); 15 | }; 16 | 17 | 18 | #endif //BLACKBOX_RUNTIMEHOOK_H 19 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/UnixFileSystemHook.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 4/9/21. 3 | // 4 | 5 | #ifndef VIRTUALM_UNIXFILESYSTEMHOOK_H 6 | #define VIRTUALM_UNIXFILESYSTEMHOOK_H 7 | 8 | 9 | #include "BaseHook.h" 10 | 11 | class UnixFileSystemHook : public BaseHook { 12 | public: 13 | static void init(JNIEnv *env); 14 | }; 15 | 16 | 17 | #endif //VIRTUALM_UNIXFILESYSTEMHOOK_H 18 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Hook/VMClassLoaderHook.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 2021/5/5. 3 | // 4 | 5 | #ifndef BLACKBOX_VMCLASSLOADERHOOK_H 6 | #define BLACKBOX_VMCLASSLOADERHOOK_H 7 | 8 | 9 | #include "BaseHook.h" 10 | #include 11 | 12 | class VMClassLoaderHook : public BaseHook { 13 | public: 14 | static void hideXposed(); 15 | static void init(JNIEnv *env); 16 | }; 17 | 18 | 19 | #endif //BLACKBOX_VMCLASSLOADERHOOK_H 20 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/IO.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 4/10/21. 3 | // 4 | 5 | #ifndef VIRTUALM_IO_H 6 | #define VIRTUALM_IO_H 7 | 8 | #include 9 | 10 | #include 11 | #include 12 | #include "BoxCore.h" 13 | 14 | using namespace std; 15 | 16 | class IO { 17 | public: 18 | static void init(JNIEnv *env); 19 | 20 | struct RelocateInfo { 21 | const char *targetPath; 22 | const char *relocatePath; 23 | }; 24 | 25 | static void addRule(const char *targetPath, const char *relocatePath); 26 | 27 | static jstring redirectPath(JNIEnv *env, jstring path); 28 | 29 | static jobject redirectPath(JNIEnv *env, jobject path); 30 | 31 | static const char *redirectPath(const char *__path); 32 | }; 33 | 34 | 35 | #endif //VIRTUALM_IO_H 36 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/JniHook/JniHook.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 3/8/21. 3 | // 4 | 5 | #ifndef VIRTUAL_APP_JNIHOOK_H 6 | #define VIRTUAL_APP_JNIHOOK_H 7 | 8 | #include "ArtMethod.h" 9 | 10 | #define HOOK_JNI(ret, func, ...) \ 11 | ret (*orig_##func)(__VA_ARGS__); \ 12 | ret new_##func(__VA_ARGS__) 13 | 14 | class JniHook { 15 | public: 16 | static void InitJniHook(JNIEnv *env, int api_level); 17 | static void HookJniFun(JNIEnv *env, const char *class_name, const char *method_name, const char *sign, void * new_fun, void ** orig_fun, 18 | bool is_static); 19 | static void HookJniFun(JNIEnv *env, jobject java_method, void *new_fun, void **orig_fun, bool is_static); 20 | }; 21 | 22 | #endif //VIRTUAL_APP_JNIHOOK_H 23 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Log.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define TAG "NativeCore" 4 | 5 | #if 1 6 | #define log_print_error(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__) 7 | #define log_print_debug(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__) 8 | #else 9 | #define log_print_error(...) 10 | #endif 11 | 12 | #define ALOGE(...) log_print_error(__VA_ARGS__) 13 | #define ALOGD(...) log_print_debug(__VA_ARGS__) 14 | 15 | #ifndef SPEED_LOG_H 16 | #define SPEED_LOG_H 1 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Utils/HexDump.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 2020/8/18. 3 | // 4 | 5 | #ifndef SPEED_HEXDUMP_H 6 | #define SPEED_HEXDUMP_H 7 | 8 | 9 | class HexDump { 10 | 11 | }; 12 | void HexDump(char *buf, int len, int addr); 13 | 14 | #endif //SPEED_HEXDUMP_H 15 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Utils/PointerCheck.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 2021/5/17. 3 | // 4 | 5 | #include 6 | #include 7 | #include 8 | #include "PointerCheck.h" 9 | 10 | bool PointerCheck::check(void *addr) { 11 | int nullfd = open("/dev/random", O_WRONLY); 12 | bool valid = true; 13 | if (write(nullfd, (void *) addr, sizeof(addr)) < 0) { 14 | valid = false; 15 | } 16 | close(nullfd); 17 | return valid; 18 | } 19 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Utils/PointerCheck.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by Milk on 2021/5/17. 3 | // 4 | 5 | #ifndef BLACKBOX_POINTERCHECK_H 6 | #define BLACKBOX_POINTERCHECK_H 7 | 8 | 9 | class PointerCheck { 10 | public: 11 | static bool check(void *addr); 12 | }; 13 | 14 | 15 | #endif //BLACKBOX_POINTERCHECK_H 16 | -------------------------------------------------------------------------------- /Bcore/src/main/cpp/Utils/fake_dlfcn.h: -------------------------------------------------------------------------------- 1 | #ifndef DLFCN_H 2 | #define DLFCN_H 3 | 4 | void *fake_dlopen(const char *libpath, int flags); 5 | 6 | void *fake_dlsym(void *handle, const char *name); 7 | 8 | int fake_dlclose(void *handle); 9 | 10 | #endif -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/ISystemService.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system; 2 | 3 | /** 4 | * Created by Milk on 4/22/21. 5 | * * ∧_∧ 6 | * (`・ω・∥ 7 | * 丶 つ0 8 | * しーJ 9 | * 此处无Bug 10 | */ 11 | public interface ISystemService { 12 | void systemReady(); 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/am/PendingIntentRecord.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.am; 2 | 3 | import java.util.Objects; 4 | 5 | /** 6 | * Created by BlackBox on 2022/3/8. 7 | */ 8 | public class PendingIntentRecord { 9 | public int uid; 10 | public String packageName; 11 | 12 | @Override 13 | public boolean equals(Object o) { 14 | if (this == o) return true; 15 | if (!(o instanceof PendingIntentRecord)) return false; 16 | PendingIntentRecord that = (PendingIntentRecord) o; 17 | return uid == that.uid && 18 | Objects.equals(packageName, that.packageName); 19 | } 20 | 21 | @Override 22 | public int hashCode() { 23 | return Objects.hash(uid, packageName); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/am/UserSpace.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.am; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | 8 | /** 9 | * Created by Milk on 4/25/21. 10 | * * ∧_∧ 11 | * (`・ω・∥ 12 | * 丶 つ0 13 | * しーJ 14 | * 此处无Bug 15 | */ 16 | public class UserSpace { 17 | public final ActiveServices mActiveServices = new ActiveServices(); 18 | public final ActivityStack mStack = new ActivityStack(); 19 | public final Map mIntentSenderRecords = new HashMap<>(); 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/location/LocationRecord.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.location; 2 | 3 | /** 4 | * Created by BlackBox on 2022/3/19. 5 | */ 6 | public class LocationRecord { 7 | public String packageName; 8 | public int userId; 9 | 10 | public LocationRecord(String packageName, int userId) { 11 | this.packageName = packageName; 12 | this.userId = userId; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/notification/NotificationRecord.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.notification; 2 | 3 | import android.app.NotificationChannel; 4 | import android.app.NotificationChannelGroup; 5 | 6 | import java.util.HashMap; 7 | import java.util.HashSet; 8 | import java.util.Map; 9 | import java.util.Set; 10 | 11 | /** 12 | * Created by BlackBox on 2022/3/18. 13 | */ 14 | public class NotificationRecord { 15 | public final Map mNotificationChannels = new HashMap<>(); 16 | public final Map mNotificationChannelGroups = new HashMap<>(); 17 | public final Set mIds = new HashSet<>(); 18 | } 19 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/pm/PackageMonitor.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.pm; 2 | 3 | /** 4 | * Created by Milk on 5/2/21. 5 | * * ∧_∧ 6 | * (`・ω・∥ 7 | * 丶 つ0 8 | * しーJ 9 | * 此处无Bug 10 | */ 11 | public interface PackageMonitor { 12 | void onPackageUninstalled(String packageName, boolean isRemove, int userId); 13 | 14 | void onPackageInstalled(String packageName, int userId); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/pm/installer/Executor.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.pm.installer; 2 | 3 | import top.niunaijun.blackbox.core.system.pm.BPackageSettings; 4 | import top.niunaijun.blackbox.entity.pm.InstallOption; 5 | 6 | /** 7 | * Created by Milk on 4/24/21. 8 | * * ∧_∧ 9 | * (`・ω・∥ 10 | * 丶 つ0 11 | * しーJ 12 | * 此处无Bug 13 | */ 14 | public interface Executor { 15 | public static final String TAG = "InstallExecutor"; 16 | 17 | int exec(BPackageSettings ps, InstallOption option, int userId); 18 | } 19 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/pm/installer/RemoveAppExecutor.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.pm.installer; 2 | 3 | import top.niunaijun.blackbox.core.env.BEnvironment; 4 | import top.niunaijun.blackbox.core.system.pm.BPackageSettings; 5 | import top.niunaijun.blackbox.entity.pm.InstallOption; 6 | import top.niunaijun.blackbox.utils.FileUtils; 7 | 8 | /** 9 | * Created by Milk on 4/27/21. 10 | * * ∧_∧ 11 | * (`・ω・∥ 12 | * 丶 つ0 13 | * しーJ 14 | * 此处无Bug 15 | */ 16 | public class RemoveAppExecutor implements Executor { 17 | @Override 18 | public int exec(BPackageSettings ps, InstallOption option, int userId) { 19 | FileUtils.deleteDir(BEnvironment.getAppDir(ps.pkg.packageName)); 20 | return 0; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/core/system/user/BUserStatus.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.core.system.user; 2 | 3 | /** 4 | * Created by Milk on 4/22/21. 5 | * * ∧_∧ 6 | * (`・ω・∥ 7 | * 丶 つ0 8 | * しーJ 9 | * 此处无Bug 10 | */ 11 | public enum BUserStatus { 12 | ENABLE, DISABLE 13 | } 14 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/fake/hook/IInjectHook.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake.hook; 2 | 3 | /** 4 | * Created by Milk on 3/30/21. 5 | * * ∧_∧ 6 | * (`・ω・∥ 7 | * 丶 つ0 8 | * しーJ 9 | * 此处无Bug 10 | */ 11 | public interface IInjectHook { 12 | void injectHook(); 13 | 14 | boolean isBadEnv(); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/fake/hook/ProxyMethod.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake.hook; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Created by Milk on 2021/5/9. 10 | * * ∧_∧ 11 | * (`・ω・∥ 12 | * 丶 つ0 13 | * しーJ 14 | * 此处无Bug 15 | */ 16 | @Target(ElementType.TYPE) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface ProxyMethod { 19 | String value(); 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/fake/hook/ProxyMethods.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake.hook; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Created by Milk on 2021/5/9. 10 | * * ∧_∧ 11 | * (`・ω・∥ 12 | * 丶 つ0 13 | * しーJ 14 | * 此处无Bug 15 | */ 16 | @Target(ElementType.TYPE) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface ProxyMethods { 19 | String[] value() default {}; 20 | } 21 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/fake/hook/ScanClass.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake.hook; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * Created by Milk on 2021/5/9. 10 | * * ∧_∧ 11 | * (`・ω・∥ 12 | * 丶 つ0 13 | * しーJ 14 | * 此处无Bug 15 | */ 16 | @Target(ElementType.TYPE) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface ScanClass { 19 | Class[] value() default {}; 20 | } -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/fake/service/base/PkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake.service.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import top.niunaijun.blackbox.fake.hook.MethodHook; 6 | import top.niunaijun.blackbox.utils.MethodParameterUtils; 7 | 8 | public class PkgMethodProxy extends MethodHook { 9 | 10 | String mName; 11 | 12 | public PkgMethodProxy(String name) { 13 | mName = name; 14 | } 15 | 16 | @Override 17 | protected String getMethodName() { 18 | return mName; 19 | } 20 | 21 | @Override 22 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 23 | MethodParameterUtils.replaceFirstAppPkg(args); 24 | return method.invoke(who, args); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/fake/service/base/ValueMethodProxy.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake.service.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import top.niunaijun.blackbox.fake.hook.MethodHook; 6 | 7 | public class ValueMethodProxy extends MethodHook { 8 | 9 | Object mValue; 10 | String mName; 11 | 12 | public ValueMethodProxy(String name, Object value) { 13 | mValue = value; 14 | mName = name; 15 | } 16 | 17 | @Override 18 | protected String getMethodName() { 19 | return mName; 20 | } 21 | 22 | @Override 23 | protected Object hook(Object who, Method method, Object[] args) throws Throwable { 24 | return mValue; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/fake/service/context/providers/BContentProvider.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.fake.service.context.providers; 2 | 3 | import android.os.IInterface; 4 | 5 | /** 6 | * Created by Milk on 4/8/21. 7 | * * ∧_∧ 8 | * (`・ω・∥ 9 | * 丶 つ0 10 | * しーJ 11 | * 此处无Bug 12 | */ 13 | public interface BContentProvider { 14 | IInterface wrapper(final IInterface contentProviderProxy, final String appPkg); 15 | } 16 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/proxy/ProxyVpnService.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.proxy; 2 | 3 | import android.net.VpnService; 4 | 5 | /** 6 | * Created by BlackBox on 2022/2/25. 7 | */ 8 | public class ProxyVpnService extends VpnService { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/utils/CloseUtils.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.utils; 2 | 3 | import java.io.Closeable; 4 | import java.io.IOException; 5 | 6 | /** 7 | * Created by sunwanquan on 2019/6/18. 8 | * * ∧_∧ 9 | * (`・ω・∥ 10 | * 丶 つ0 11 | * しーJ 12 | * 此处无Bug 13 | */ 14 | public class CloseUtils { 15 | public static void close(Closeable... closeables) { 16 | if (closeables == null) { 17 | return; 18 | } 19 | for (Closeable closeable : closeables) { 20 | if (closeable != null) { 21 | try { 22 | closeable.close(); 23 | } catch (IOException ignored) { 24 | } 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Bcore/src/main/java/top/niunaijun/blackbox/utils/compat/ApplicationThreadCompat.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackbox.utils.compat; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import black.android.app.BRApplicationThreadNative; 7 | import black.android.app.BRIApplicationThreadOreoStub; 8 | 9 | public class ApplicationThreadCompat { 10 | 11 | public static IInterface asInterface(IBinder binder) { 12 | if (BuildCompat.isOreo()) { 13 | return BRIApplicationThreadOreoStub.get().asInterface(binder); 14 | } 15 | return BRApplicationThreadNative.get().asInterface(binder); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Bcore/src/main/res/drawable/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/Bcore/src/main/res/drawable/ic_launcher.png -------------------------------------------------------------------------------- /Bcore/src/main/res/layout/activity_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /Bcore/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | :black 4 | -------------------------------------------------------------------------------- /Bcore/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /Bcore/src/main/res/xml/filepath.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /android-mirror/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android-mirror/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/android-mirror/consumer-rules.pro -------------------------------------------------------------------------------- /android-mirror/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/accounts/IAccountManagerResponse.aidl: -------------------------------------------------------------------------------- 1 | package android.accounts; 2 | 3 | import android.os.Bundle; 4 | 5 | /** 6 | * The interface used to return responses for asynchronous calls to the {@link IAccountManager} 7 | */ 8 | interface IAccountManagerResponse { 9 | void onResult(in Bundle value); 10 | void onError(int errorCode, String errorMessage); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/app/IActivityManager/ContentProviderHolder.aidl: -------------------------------------------------------------------------------- 1 | // ContentProviderHolder.aidl 2 | package android.app.IActivityManager; 3 | 4 | parcelable ContentProviderHolder; -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/app/job/IJobService.aidl: -------------------------------------------------------------------------------- 1 | package android.app.job; 2 | 3 | import android.app.job.JobParameters; 4 | 5 | /** 6 | * Interface that the framework uses to communicate with application code that implements a 7 | * JobService. End user code does not implement this interface directly; instead, the app's 8 | * service implementation will extend android.app.job.JobService. 9 | */ 10 | interface IJobService { 11 | /** Begin execution of application's job. */ 12 | void startJob(in JobParameters jobParams); 13 | /** Stop execution of application's job. */ 14 | void stopJob(in JobParameters jobParams); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/app/job/JobWorkItem.aidl: -------------------------------------------------------------------------------- 1 | // JobWorkItem.aidl 2 | package android.app.job; 3 | 4 | parcelable JobWorkItem; 5 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/content/ISyncStatusObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | 4 | interface ISyncStatusObserver { 5 | void onStatusChanged(int which); 6 | } 7 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/content/SyncStatusInfo.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | parcelable SyncStatusInfo; -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/content/pm/IPackageDataObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | /** 4 | * API for package data change related callbacks from the Package Manager. 5 | * Some usage scenarios include deletion of cache directory, generate 6 | * statistics related to code, data, cache usage(TODO) 7 | */ 8 | interface IPackageDataObserver { 9 | void onRemoveCompleted(in String packageName, boolean succeeded); 10 | } 11 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/content/pm/IPackageInstallObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | /** 4 | * API for installation callbacks from the Package Manager. 5 | */ 6 | interface IPackageInstallObserver { 7 | void packageInstalled(in String packageName, int returnCode); 8 | } 9 | 10 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/content/pm/IPackageInstallerCallback.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | interface IPackageInstallerCallback { 4 | void onSessionCreated(int sessionId); 5 | void onSessionBadgingChanged(int sessionId); 6 | void onSessionActiveChanged(int sessionId, boolean active); 7 | void onSessionProgressChanged(int sessionId, float progress); 8 | void onSessionFinished(int sessionId, boolean success); 9 | } 10 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/content/pm/IPackageInstallerSession.aidl: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | import android.content.pm.IPackageInstallObserver2; 4 | import android.content.IntentSender; 5 | import android.os.ParcelFileDescriptor; 6 | 7 | interface IPackageInstallerSession { 8 | void setClientProgress(float progress); 9 | void addClientProgress(float progress); 10 | 11 | String[] getNames(); 12 | ParcelFileDescriptor openWrite(String name, long offsetBytes, long lengthBytes); 13 | ParcelFileDescriptor openRead(String name); 14 | 15 | void removeSplit(String splitName); 16 | 17 | void close(); 18 | void commit(in IntentSender statusReceiver); 19 | void abandon(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/database/IContentObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.database; 2 | 3 | import android.net.Uri; 4 | 5 | interface IContentObserver 6 | { 7 | /** 8 | * This method is called when an update occurs to the cursor that is being 9 | * observed. selfUpdate is true if the update was caused by a call to 10 | * commit on the cursor that is being observed. 11 | */ 12 | void onChange(boolean selfUpdate, in Uri uri, int userId); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/location/ILocationListener.aidl: -------------------------------------------------------------------------------- 1 | // ILocationListener.aidl 2 | package android.location; 3 | 4 | import android.location.Location; 5 | import android.os.Bundle; 6 | 7 | interface ILocationListener 8 | { 9 | void onLocationChanged(in Location location); 10 | void onStatusChanged(String provider, int status, in Bundle extras); 11 | void onProviderEnabled(String provider); 12 | void onProviderDisabled(String provider); 13 | } -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/net/IConnectivityManager.aidl: -------------------------------------------------------------------------------- 1 | package android.net; 2 | 3 | import android.net.NetworkInfo; 4 | import android.net.LinkProperties; 5 | 6 | interface IConnectivityManager { 7 | NetworkInfo getActiveNetworkInfo(); 8 | NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked); 9 | 10 | NetworkInfo getNetworkInfo(int networkType); 11 | NetworkInfo[] getAllNetworkInfo(); 12 | boolean isActiveNetworkMetered(); 13 | boolean requestRouteToHostAddress(int networkType, int address); 14 | LinkProperties getActiveLinkProperties(); 15 | LinkProperties getLinkProperties(int networkType); 16 | } -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/net/wifi/IWifiScanner.aidl: -------------------------------------------------------------------------------- 1 | package android.net.wifi; 2 | 3 | import android.os.Messenger; 4 | import android.os.Bundle; 5 | 6 | interface IWifiScanner 7 | { 8 | Messenger getMessenger(); 9 | 10 | Bundle getAvailableChannels(int band); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/android/os/ISystemUpdateManager.aidl: -------------------------------------------------------------------------------- 1 | package android.os; 2 | 3 | import android.os.Bundle; 4 | import android.os.PersistableBundle; 5 | 6 | interface ISystemUpdateManager { 7 | Bundle retrieveSystemUpdateInfo(); 8 | void updateSystemUpdateInfo(in PersistableBundle data); 9 | } -------------------------------------------------------------------------------- /android-mirror/src/main/aidl/com/android/internal/widget/ILockSettings.aidl: -------------------------------------------------------------------------------- 1 | package com.android.internal.widget; 2 | 3 | interface ILockSettings { 4 | void setRecoverySecretTypes(in int[] secretTypes); 5 | int[] getRecoverySecretTypes(); 6 | } -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/accounts/IAccountManager.java: -------------------------------------------------------------------------------- 1 | package black.android.accounts; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.accounts.IAccountManager") 10 | public interface IAccountManager { 11 | @BClassName("android.accounts.IAccountManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ActivityManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | 7 | @BClassName("android.app.ActivityManager") 8 | public interface ActivityManager { 9 | @BStaticField 10 | int START_INTENT_NOT_RESOLVED(); 11 | 12 | @BStaticField 13 | int START_NOT_CURRENT_USER_ACTIVITY(); 14 | 15 | @BStaticField 16 | int START_SUCCESS(); 17 | 18 | @BStaticField 19 | int START_TASK_TO_FRONT(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ActivityManagerNative.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.ActivityManagerNative") 10 | public interface ActivityManagerNative { 11 | @BStaticField 12 | Object gDefault(); 13 | 14 | @BStaticMethod 15 | IInterface getDefault(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ActivityManagerOreo.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.ActivityManager") 10 | public interface ActivityManagerOreo { 11 | @BStaticField 12 | Object IActivityManagerSingleton(); 13 | 14 | @BStaticMethod 15 | IInterface getService(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ActivityTaskManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import top.niunaijun.blackreflection.annotation.BClassName; 4 | import top.niunaijun.blackreflection.annotation.BStaticField; 5 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 6 | 7 | @BClassName("android.app.ActivityTaskManager") 8 | public interface ActivityTaskManager { 9 | 10 | @BStaticMethod 11 | Object getService(); 12 | 13 | @BStaticField 14 | Object IActivityTaskManagerSingleton(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ActivityThreadNMR1.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import top.niunaijun.blackreflection.annotation.BClassName; 8 | import top.niunaijun.blackreflection.annotation.BMethod; 9 | 10 | @BClassName("android.app.ActivityThread") 11 | public interface ActivityThreadNMR1 { 12 | @BMethod 13 | void performNewIntents(IBinder IBinder0, List List1, boolean boolean2); 14 | } 15 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ActivityThreadQ.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import top.niunaijun.blackreflection.annotation.BClassName; 8 | import top.niunaijun.blackreflection.annotation.BMethod; 9 | 10 | @BClassName("android.app.ActivityThread") 11 | public interface ActivityThreadQ { 12 | @BMethod 13 | void handleNewIntent(IBinder IBinder0, List List1); 14 | } 15 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/AlarmManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.AlarmManager") 9 | public interface AlarmManager { 10 | @BField 11 | IInterface mService(); 12 | 13 | @BField 14 | int mTargetSdkVersion(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/AppOpsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.AppOpsManager") 9 | public interface AppOpsManager { 10 | @BField 11 | IInterface mService(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ApplicationThreadNative.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.ApplicationThreadNative") 10 | public interface ApplicationThreadNative { 11 | @BStaticMethod 12 | IInterface asInterface(IBinder IBinder0); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ClientTransactionHandler.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BMethod; 7 | 8 | @BClassName("android.app.ClientTransactionHandler") 9 | public interface ClientTransactionHandler { 10 | @BMethod 11 | Object getActivityClient(IBinder IBinder0); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ContextImplICS.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.ContextImpl") 9 | public interface ContextImplICS { 10 | @BField 11 | File mExternalCacheDir(); 12 | 13 | @BField 14 | File mExternalFilesDir(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ContextImplKitkat.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.ContextImpl") 9 | public interface ContextImplKitkat { 10 | @BField 11 | Object mDisplayAdjustments(); 12 | 13 | @BField 14 | File[] mExternalCacheDirs(); 15 | 16 | @BField 17 | File[] mExternalFilesDirs(); 18 | 19 | @BField 20 | String mOpPackageName(); 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IActivityManagerL.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BMethod; 8 | 9 | @BClassName("android.app.IActivityManager") 10 | public interface IActivityManagerL { 11 | @BMethod 12 | Boolean finishActivity(IBinder IBinder0, int int1, Intent Intent2, boolean boolean3); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IActivityManagerN.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BMethod; 8 | 9 | @BClassName("android.app.IActivityManager") 10 | public interface IActivityManagerN { 11 | @BMethod 12 | Boolean finishActivity(IBinder IBinder0, int int1, Intent Intent2, int int3); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IActivityTaskManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.IActivityTaskManager") 10 | public interface IActivityTaskManager { 11 | @BClassName("android.app.IActivityTaskManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IAlarmManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.IAlarmManager") 10 | public interface IAlarmManager { 11 | @BClassName("android.app.IAlarmManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IApplicationThreadOreo.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BMethod; 8 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 9 | 10 | @BClassName("android.app.IApplicationThread") 11 | public interface IApplicationThreadOreo { 12 | @BMethod 13 | void scheduleServiceArgs(); 14 | 15 | @BClassName("android.app.IApplicationThread$Stub") 16 | interface Stub { 17 | @BStaticMethod 18 | IInterface asInterface(IBinder IBinder0); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ISearchManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.ISearchManager") 10 | public interface ISearchManager { 11 | @BClassName("android.app.ISearchManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IServiceConnectionO.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.ComponentName; 4 | import android.os.IBinder; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BMethod; 8 | 9 | @BClassName("android.app.IServiceConnection") 10 | public interface IServiceConnectionO { 11 | @BMethod 12 | void connected(ComponentName ComponentName0, IBinder IBinder1, boolean boolean2); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IUsageStatsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.usage.IUsageStatsManager") 10 | public interface IUsageStatsManager { 11 | @BClassName("android.app.usage.IUsageStatsManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/IWallpaperManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.IWallpaperManager") 10 | public interface IWallpaperManager { 11 | @BClassName("android.app.IWallpaperManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/Instrumentation.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.app.Instrumentation.ActivityResult; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.os.Bundle; 7 | import android.os.IBinder; 8 | 9 | import top.niunaijun.blackreflection.annotation.BClassName; 10 | import top.niunaijun.blackreflection.annotation.BMethod; 11 | 12 | @BClassName("android.app.Instrumentation") 13 | public interface Instrumentation { 14 | @BMethod 15 | ActivityResult execStartActivity(Context Context0, IBinder IBinder1, IBinder IBinder2, Activity Activity3, Intent Intent4, int int5, Bundle Bundle6); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/LoadedApkHuaWei.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.app.LoadedApk") 8 | public interface LoadedApkHuaWei { 9 | @BField 10 | Object mReceiverResource(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/LoadedApkICS.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.app.LoadedApk") 8 | public interface LoadedApkICS { 9 | @BField 10 | Object mCompatibilityInfo(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/LoadedApkKitkat.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.app.LoadedApk") 8 | public interface LoadedApkKitkat { 9 | @BField 10 | Object mDisplayAdjustments(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/Notification.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.app.PendingIntent; 4 | import android.content.Context; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BMethod; 8 | 9 | @BClassName("android.app.Notification") 10 | public interface Notification { 11 | @BMethod 12 | void setLatestEventInfo(Context Context0, CharSequence CharSequence1, CharSequence CharSequence2, PendingIntent PendingIntent3); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/NotificationChannel.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.app.NotificationChannel") 8 | public interface NotificationChannel { 9 | @BField 10 | String mId(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/NotificationChannelGroup.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import java.util.List; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.NotificationChannelGroup") 9 | public interface NotificationChannelGroup { 10 | @BField 11 | List mChannels(); 12 | 13 | @BField 14 | String mId(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/NotificationL.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.app.Notification; 4 | import android.content.Context; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.Notification") 10 | public interface NotificationL { 11 | @BClassName("android.app.Notification$Builder") 12 | interface Builder { 13 | @BStaticMethod 14 | Notification rebuild(Context Context0, Notification Notification1); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/NotificationM.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.graphics.drawable.Icon; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.Notification") 9 | public interface NotificationM { 10 | @BField 11 | Icon mLargeIcon(); 12 | 13 | @BField 14 | Icon mSmallIcon(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/NotificationManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.NotificationManager") 10 | public interface NotificationManager { 11 | @BStaticField 12 | IInterface sService(); 13 | 14 | @BStaticMethod 15 | IInterface getService(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/NotificationO.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.app.Notification") 8 | public interface NotificationO { 9 | @BField 10 | String mChannelId(); 11 | 12 | @BField 13 | String mGroupKey(); 14 | } 15 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/PendingIntentJBMR2.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BConstructor; 8 | import top.niunaijun.blackreflection.annotation.BMethod; 9 | 10 | @BClassName("android.app.PendingIntent") 11 | public interface PendingIntentJBMR2 { 12 | @BConstructor 13 | PendingIntentJBMR2 _new(IBinder IBinder0); 14 | 15 | @BMethod 16 | Intent getIntent(); 17 | } 18 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/PendingIntentO.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | 8 | @BClassName("android.app.PendingIntent") 9 | public interface PendingIntentO { 10 | @BConstructor 11 | PendingIntentO _new(IBinder IBinder0, Object Object1); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/Service.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import android.app.ActivityThread; 5 | import android.app.Application; 6 | import android.content.Context; 7 | import android.os.IBinder; 8 | 9 | import top.niunaijun.blackreflection.annotation.BClassName; 10 | import top.niunaijun.blackreflection.annotation.BMethod; 11 | import top.niunaijun.blackreflection.annotation.BParamClass; 12 | 13 | @BClassName("android.app.Service") 14 | public interface Service { 15 | @BMethod 16 | void attach(Context context, 17 | @BParamClass(ActivityThread.class) Object thread, String className, IBinder token, 18 | Application application, Object activityManager); 19 | } 20 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/ServiceStartArgs.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import android.content.Intent; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | import top.niunaijun.blackreflection.annotation.BField; 8 | 9 | @BClassName("android.app.ServiceStartArgs") 10 | public interface ServiceStartArgs { 11 | @BConstructor 12 | ServiceStartArgs _new(boolean boolean0, int int1, int int2, Intent Intent3); 13 | 14 | @BField 15 | Intent args(); 16 | 17 | @BField 18 | int flags(); 19 | 20 | @BField 21 | int startId(); 22 | 23 | @BField 24 | boolean taskRemoved(); 25 | } 26 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/SharedPreferencesImpl.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | 8 | @BClassName("android.app.SharedPreferencesImpl") 9 | public interface SharedPreferencesImpl { 10 | @BConstructor 11 | SharedPreferencesImpl _new(File File0, int int1); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/WallpaperManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | 8 | @BClassName("android.app.WallpaperManager") 9 | public interface WallpaperManager { 10 | @BStaticField 11 | Object sGlobals(); 12 | 13 | @BClassName("android.app.WallpaperManager$Globals") 14 | interface Globals { 15 | @BField 16 | Object mService(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/admin/IDevicePolicyManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app.admin; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.admin.IDevicePolicyManager") 10 | public interface IDevicePolicyManager { 11 | @BClassName("android.app.admin.IDevicePolicyManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/backup/IBackupManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app.backup; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.backup.IBackupManager") 10 | public interface IBackupManager { 11 | @BClassName("android.app.backup.IBackupManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/job/IJobScheduler.java: -------------------------------------------------------------------------------- 1 | package black.android.app.job; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.job.IJobScheduler") 10 | public interface IJobScheduler { 11 | @BClassName("android.app.job.IJobScheduler$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/job/JobInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.app.job; 2 | 3 | import android.content.ComponentName; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.job.JobInfo") 9 | public interface JobInfo { 10 | @BField 11 | long flexMillis(); 12 | 13 | @BField 14 | long intervalMillis(); 15 | 16 | @BField 17 | int jobId(); 18 | 19 | @BField 20 | ComponentName service(); 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/job/JobParameters.java: -------------------------------------------------------------------------------- 1 | package black.android.app.job; 2 | 3 | import android.os.IBinder; 4 | import android.os.PersistableBundle; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BField; 8 | 9 | @BClassName("android.app.job.JobParameters") 10 | public interface JobParameters { 11 | @BField 12 | IBinder callback(); 13 | 14 | @BField 15 | PersistableBundle extras(); 16 | 17 | @BField 18 | int jobId(); 19 | } 20 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/job/JobWorkItem.java: -------------------------------------------------------------------------------- 1 | package black.android.app.job; 2 | 3 | import android.content.Intent; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | import top.niunaijun.blackreflection.annotation.BField; 8 | import top.niunaijun.blackreflection.annotation.BMethod; 9 | 10 | @BClassName("android.app.job.JobWorkItem") 11 | public interface JobWorkItem { 12 | @BConstructor 13 | JobWorkItem _new(Intent Intent0); 14 | 15 | @BField 16 | int mDeliveryCount(); 17 | 18 | @BField 19 | Object mGrants(); 20 | 21 | @BField 22 | int mWorkId(); 23 | 24 | @BMethod 25 | Intent getIntent(); 26 | } 27 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/role/IRoleManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app.role; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.role.IRoleManager") 10 | public interface IRoleManager { 11 | @BClassName("android.app.role.IRoleManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/servertransaction/ActivityLifecycleItem.java: -------------------------------------------------------------------------------- 1 | package black.android.app.servertransaction; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | @BClassName("android.app.servertransaction.ActivityLifecycleItem") 8 | public interface ActivityLifecycleItem { 9 | @BMethod 10 | Integer getTargetState(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/servertransaction/ActivityResultItem.java: -------------------------------------------------------------------------------- 1 | package black.android.app.servertransaction; 2 | 3 | import java.util.List; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.servertransaction.ActivityResultItem") 9 | public interface ActivityResultItem { 10 | @BField 11 | List mResultInfoList(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/servertransaction/ClientTransaction.java: -------------------------------------------------------------------------------- 1 | package black.android.app.servertransaction; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import top.niunaijun.blackreflection.annotation.BClassName; 8 | import top.niunaijun.blackreflection.annotation.BField; 9 | 10 | @BClassName("android.app.servertransaction.ClientTransaction") 11 | public interface ClientTransaction { 12 | @BField 13 | List mActivityCallbacks(); 14 | 15 | @BField 16 | IBinder mActivityToken(); 17 | 18 | @BField 19 | Object mLifecycleStateRequest(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/servertransaction/LaunchActivityItem.java: -------------------------------------------------------------------------------- 1 | package black.android.app.servertransaction; 2 | 3 | import android.content.Intent; 4 | import android.content.pm.ActivityInfo; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BField; 8 | 9 | @BClassName("android.app.servertransaction.LaunchActivityItem") 10 | public interface LaunchActivityItem { 11 | @BField 12 | ActivityInfo mInfo(); 13 | 14 | @BField 15 | Intent mIntent(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/servertransaction/TopResumedActivityChangeItem.java: -------------------------------------------------------------------------------- 1 | package black.android.app.servertransaction; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.app.servertransaction.TopResumedActivityChangeItem") 8 | public interface TopResumedActivityChangeItem { 9 | @BField 10 | Boolean mOnTop(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/usage/IStorageStatsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.app.usage; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.app.usage.IStorageStatsManager") 10 | public interface IStorageStatsManager { 11 | @BClassName("android.app.usage.IStorageStatsManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/app/usage/StorageStats.java: -------------------------------------------------------------------------------- 1 | package black.android.app.usage; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.app.usage.StorageStats") 9 | public interface StorageStats { 10 | @BConstructor 11 | StorageStats _new(); 12 | 13 | @BField 14 | long cacheBytes(); 15 | 16 | @BField 17 | long codeBytes(); 18 | 19 | @BField 20 | long dataBytes(); 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/bluetooth/IBluetooth.java: -------------------------------------------------------------------------------- 1 | package black.android.bluetooth; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.bluetooth.IBluetooth") 10 | public interface IBluetooth { 11 | @BClassName("android.bluetooth.IBluetooth$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/bluetooth/IBluetoothManager.java: -------------------------------------------------------------------------------- 1 | package black.android.bluetooth; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.bluetooth.IBluetoothManager") 10 | public interface IBluetoothManager { 11 | @BClassName("android.bluetooth.IBluetoothManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/AttributionSource.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import top.niunaijun.blackreflection.annotation.BClassName; 4 | import top.niunaijun.blackreflection.annotation.BField; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | /** 8 | * Created by BlackBox on 2022/2/20. 9 | */ 10 | @BClassName("android.content.AttributionSource") 11 | public interface AttributionSource { 12 | @BField 13 | Object mAttributionSourceState(); 14 | 15 | @BMethod 16 | Object getNext(); 17 | } 18 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/AttributionSourceState.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import top.niunaijun.blackreflection.annotation.BClassName; 4 | import top.niunaijun.blackreflection.annotation.BField; 5 | 6 | /** 7 | * Created by BlackBox on 2022/2/20. 8 | */ 9 | @BClassName("android.content.AttributionSourceState") 10 | public interface AttributionSourceState { 11 | @BField 12 | String packageName(); 13 | 14 | @BField 15 | int uid(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/ClipboardManager.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.content.ClipboardManager") 10 | public interface ClipboardManager { 11 | @BStaticField 12 | IInterface sService(); 13 | 14 | @BStaticMethod 15 | IInterface getService(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/ClipboardManagerOreo.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | import top.niunaijun.blackreflection.annotation.BStaticField; 8 | 9 | @BClassName("android.content.ClipboardManager") 10 | public interface ClipboardManagerOreo { 11 | @BStaticField 12 | IInterface sService(); 13 | 14 | @BField 15 | IInterface mService(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/ContentProviderClient.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.content.ContentProviderClient") 9 | public interface ContentProviderClient { 10 | @BField 11 | IInterface mContentProvider(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/ContentProviderClientQ.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | 7 | @BClassName("android.content.ContentProviderClient") 8 | public interface ContentProviderClientQ { 9 | @BConstructor 10 | ContentProviderClientQ _new(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/ContentProviderHolderOreo.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.content.pm.ProviderInfo; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BField; 8 | 9 | @BClassName("android.app.ContentProviderHolder") 10 | public interface ContentProviderHolderOreo { 11 | @BField 12 | ProviderInfo info(); 13 | 14 | @BField 15 | boolean noReleaseNeeded(); 16 | 17 | @BField 18 | IInterface provider(); 19 | } 20 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/ContentProviderNative.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.content.ContentProviderNative") 10 | public interface ContentProviderNative { 11 | @BStaticMethod 12 | IInterface asInterface(IBinder IBinder0); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/ContentResolver.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | import top.niunaijun.blackreflection.annotation.BStaticField; 8 | 9 | @BClassName("android.content.ContentResolver") 10 | public interface ContentResolver { 11 | @BStaticField 12 | IInterface sContentService(); 13 | 14 | @BField 15 | String mPackageName(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/IClipboard.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("android.content.IClipboard") 7 | public interface IClipboard { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/IContentProvider.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("android.content.IContentProvider") 7 | public interface IContentProvider { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/IContentService.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.content.IContentService") 10 | public interface IContentService { 11 | @BClassName("android.content.IContentService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/IIntentReceiver.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BMethod; 8 | 9 | @BClassName("android.content.IIntentReceiver") 10 | public interface IIntentReceiver { 11 | @BMethod 12 | void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/IRestrictionsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.content.IRestrictionsManager") 10 | public interface IRestrictionsManager { 11 | @BClassName("android.content.IRestrictionsManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/IntentFilter.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import java.util.List; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.content.IntentFilter") 9 | public interface IntentFilter { 10 | @BField 11 | List mActions(); 12 | 13 | @BField 14 | List mCategories(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/IntentSender.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.content.IntentSender") 9 | public interface IntentSender { 10 | @BField 11 | IInterface mTarget(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/PeriodicSync.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.content.PeriodicSync") 8 | public interface PeriodicSync { 9 | @BField 10 | long flexTime(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/SyncAdapterType.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | 7 | @BClassName("android.content.SyncAdapterType") 8 | public interface SyncAdapterType { 9 | @BConstructor 10 | SyncAdapterType _new(String String0, String String1, boolean boolean2, boolean boolean3, boolean boolean4, boolean boolean5, String String6); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/SyncAdapterTypeN.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | 7 | @BClassName("android.content.SyncAdapterType") 8 | public interface SyncAdapterTypeN { 9 | @BConstructor 10 | SyncAdapterTypeN _new(String String0, String String1, boolean boolean2, boolean boolean3, boolean boolean4, boolean boolean5, String String6, String String7); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/SyncInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.accounts.Account; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | 8 | @BClassName("android.content.SyncInfo") 9 | public interface SyncInfo { 10 | @BConstructor 11 | SyncInfo _new(int int0, Account Account1, String String2, long long3); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/SyncRequest.java: -------------------------------------------------------------------------------- 1 | package black.android.content; 2 | 3 | import android.accounts.Account; 4 | import android.os.Bundle; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BField; 8 | 9 | @BClassName("android.content.SyncRequest") 10 | public interface SyncRequest { 11 | @BField 12 | Account mAccountToSync(); 13 | 14 | @BField 15 | String mAuthority(); 16 | 17 | @BField 18 | Bundle mExtras(); 19 | 20 | @BField 21 | boolean mIsPeriodic(); 22 | 23 | @BField 24 | long mSyncFlexTimeSecs(); 25 | 26 | @BField 27 | long mSyncRunTimeSecs(); 28 | } 29 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/ApplicationInfoL.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.content.pm.ApplicationInfo") 8 | public interface ApplicationInfoL { 9 | @BField 10 | String primaryCpuAbi(); 11 | 12 | @BField 13 | Integer privateFlags(); 14 | 15 | @BField 16 | String scanPublicSourceDir(); 17 | 18 | @BField 19 | String scanSourceDir(); 20 | 21 | @BField 22 | String secondaryCpuAbi(); 23 | 24 | @BField 25 | String secondaryNativeLibraryDir(); 26 | 27 | @BField 28 | String[] splitPublicSourceDirs(); 29 | 30 | @BField 31 | String[] splitSourceDirs(); 32 | } 33 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/ApplicationInfoN.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.content.pm.ApplicationInfo") 8 | public interface ApplicationInfoN { 9 | @BField 10 | String credentialEncryptedDataDir(); 11 | 12 | @BField 13 | String credentialProtectedDataDir(); 14 | 15 | @BField 16 | String deviceEncryptedDataDir(); 17 | 18 | @BField 19 | String deviceProtectedDataDir(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/ApplicationInfoP.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | import top.niunaijun.blackreflection.annotation.BMethod; 7 | 8 | @BClassName("android.content.pm.ApplicationInfo") 9 | public interface ApplicationInfoP { 10 | @BField 11 | String[] splitClassLoaderNames(); 12 | 13 | @BMethod 14 | void setHiddenApiEnforcementPolicy(int int0); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/ILauncherApps.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("mirror.android.content.pm.ILauncherApps") 10 | public interface ILauncherApps { 11 | @BClassName("android.content.pm.ILauncherApps$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder binder); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/IShortcutService.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.content.pm.IShortcutService") 10 | public interface IShortcutService { 11 | @BClassName("android.content.pm.IShortcutService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/LauncherApps.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageManager; 4 | import android.os.IInterface; 5 | import android.os.UserManager; 6 | 7 | import top.niunaijun.blackreflection.annotation.BClassName; 8 | import top.niunaijun.blackreflection.annotation.BField; 9 | 10 | @BClassName("android.content.pm.LauncherApps") 11 | public interface LauncherApps { 12 | @BField 13 | PackageManager mPm(); 14 | 15 | @BField 16 | IInterface mService(); 17 | 18 | @BField 19 | UserManager mUserManager(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/PackageParserNougat.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | 4 | import android.content.pm.PackageParser; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.content.pm.PackageParser") 10 | public interface PackageParserNougat { 11 | @BStaticMethod 12 | void collectCertificates(PackageParser.Package p, int flags); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/PackageUserState.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | 7 | @BClassName("android.content.pm.PackageUserState") 8 | public interface PackageUserState { 9 | @BConstructor 10 | PackageUserState _new(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/SigningInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | import android.content.pm.PackageParser.SigningDetails; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | import top.niunaijun.blackreflection.annotation.BField; 8 | 9 | @BClassName("android.content.pm.SigningInfo") 10 | public interface SigningInfo { 11 | @BConstructor 12 | android.content.pm.SigningInfo _new(SigningDetails SigningDetails0); 13 | 14 | @BField 15 | SigningDetails mSigningDetails(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/pm/UserInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.content.pm; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | 8 | @BClassName("android.content.pm.UserInfo") 9 | public interface UserInfo { 10 | @BConstructor 11 | Object _new(int id, String name, int flags); 12 | 13 | @BStaticField 14 | int FLAG_PRIMARY(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/res/AssetManager.java: -------------------------------------------------------------------------------- 1 | package black.android.content.res; 2 | 3 | import android.content.res.Configuration; 4 | import android.util.DisplayMetrics; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BConstructor; 8 | import top.niunaijun.blackreflection.annotation.BMethod; 9 | 10 | @BClassName("android.content.res.AssetManager") 11 | public interface AssetManager { 12 | @BConstructor 13 | android.content.res.AssetManager _new(); 14 | 15 | @BMethod 16 | Integer addAssetPath(String String0); 17 | 18 | @BMethod 19 | Configuration getConfiguration(); 20 | 21 | @BMethod 22 | DisplayMetrics getDisplayMetrics(); 23 | } 24 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/content/res/CompatibilityInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.content.res; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | import top.niunaijun.blackreflection.annotation.BStaticField; 8 | 9 | @BClassName("android.content.res.CompatibilityInfo") 10 | public interface CompatibilityInfo { 11 | @BConstructor 12 | CompatibilityInfo _new(ApplicationInfo ApplicationInfo0, int int1, int int2, boolean boolean3); 13 | 14 | @BConstructor 15 | CompatibilityInfo _new(ApplicationInfo ApplicationInfo0, int int1, int int2, boolean boolean3, int int4); 16 | 17 | @BStaticField 18 | Object DEFAULT_COMPATIBILITY_INFO(); 19 | } 20 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/ddm/DdmHandleAppName.java: -------------------------------------------------------------------------------- 1 | package black.android.ddm; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 6 | 7 | @BClassName("android.ddm.DdmHandleAppName") 8 | public interface DdmHandleAppName { 9 | @BStaticMethod 10 | void setAppName(String String0, int i); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/graphics/Compatibility.java: -------------------------------------------------------------------------------- 1 | package black.android.graphics; 2 | 3 | import top.niunaijun.blackreflection.annotation.BClassName; 4 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 5 | 6 | /** 7 | * Created by BlackBox on 2022/2/24. 8 | */ 9 | @BClassName("android.graphics.Compatibility") 10 | public interface Compatibility { 11 | @BStaticMethod 12 | void setTargetSdkVersion(int targetSdkVersion); 13 | } 14 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/hardware/display/DisplayManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package black.android.hardware.display; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.hardware.display.DisplayManagerGlobal") 10 | public interface DisplayManagerGlobal { 11 | @BField 12 | IInterface mDm(); 13 | 14 | @BStaticMethod 15 | Object getInstance(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/hardware/display/IDisplayManager.java: -------------------------------------------------------------------------------- 1 | package black.android.hardware.display; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("android.hardware.display.IDisplayManager") 7 | public interface IDisplayManager { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/hardware/location/IContextHubService.java: -------------------------------------------------------------------------------- 1 | package black.android.hardware.location; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | /** 10 | * Created by BlackBox on 2022/3/2. 11 | */ 12 | @BClassName("android.hardware.location.IContextHubService") 13 | public interface IContextHubService { 14 | 15 | @BClassName("android.hardware.location.IContextHubService$Stub") 16 | interface Stub { 17 | @BStaticMethod 18 | IInterface asInterface(IBinder iBinder); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/location/GpsStatus.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | @BClassName("android.location.GpsStatus") 8 | public interface GpsStatus { 9 | @BMethod 10 | void setStatus(int int0, int[] ints1, float[] floats2, float[] floats3, float[] floats4, int int5, int int6, int int7); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/location/GpsStatusL.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | @BClassName("android.location.GpsStatus") 8 | public interface GpsStatusL { 9 | @BMethod 10 | void setStatus(int int0, int[] ints1, float[] floats2, float[] floats3, float[] floats4, int[] ints5, int[] ints6, int[] ints7); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/location/ILocationListener.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | import android.location.Location; 4 | import android.os.IBinder; 5 | import android.os.IInterface; 6 | 7 | import top.niunaijun.blackreflection.annotation.BClassName; 8 | import top.niunaijun.blackreflection.annotation.BMethod; 9 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 10 | 11 | @BClassName("android.location.ILocationListener") 12 | public interface ILocationListener { 13 | @BMethod 14 | void onLocationChanged(Location Location0); 15 | 16 | @BClassName("android.location.ILocationListener$Stub") 17 | interface Stub { 18 | @BStaticMethod 19 | IInterface asInterface(IBinder IBinder0); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/location/ILocationManager.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.location.ILocationManager") 10 | public interface ILocationManager { 11 | @BClassName("android.location.ILocationManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/location/LocationManagerQ.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | import android.util.ArrayMap; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.location.LocationManager") 9 | public interface LocationManagerQ { 10 | @BField 11 | ArrayMap mGnssNmeaListeners(); 12 | 13 | @BField 14 | ArrayMap mGnssStatusListeners(); 15 | 16 | @BField 17 | ArrayMap mGpsNmeaListeners(); 18 | 19 | @BField 20 | ArrayMap mGpsStatusListeners(); 21 | 22 | @BField 23 | ArrayMap mListeners(); 24 | } 25 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/location/LocationRequestL.java: -------------------------------------------------------------------------------- 1 | package black.android.location; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | import top.niunaijun.blackreflection.annotation.BMethod; 7 | 8 | @BClassName("android.location.LocationRequest") 9 | public interface LocationRequestL { 10 | @BField 11 | boolean mHideFromAppOps(); 12 | 13 | @BField 14 | String mProvider(); 15 | 16 | @BField 17 | Object mWorkSource(); 18 | 19 | @BMethod 20 | String getProvider(); 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/location/provider/ProviderProperties.java: -------------------------------------------------------------------------------- 1 | package black.android.location.provider; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.location.provider.ProviderProperties") 8 | public interface ProviderProperties { 9 | @BField 10 | boolean mHasNetworkRequirement(); 11 | 12 | @BField 13 | boolean mHasSatelliteRequirement(); 14 | 15 | @BField 16 | boolean mHasCellRequirement(); 17 | 18 | @BField 19 | boolean mHasMonetaryCost(); 20 | 21 | @BField 22 | boolean mHasAltitudeSupport(); 23 | 24 | @BField 25 | boolean mHasSpeedSupport(); 26 | 27 | @BField 28 | boolean mHasBearingSupport(); 29 | } 30 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/media/AudioManager.java: -------------------------------------------------------------------------------- 1 | package black.android.media; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.media.AudioManager") 10 | public interface AudioManager { 11 | @BStaticField 12 | IInterface sService(); 13 | 14 | @BStaticMethod 15 | void getService(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/media/IAudioService.java: -------------------------------------------------------------------------------- 1 | package black.android.media; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.media.IAudioService") 10 | public interface IAudioService { 11 | @BClassName("android.media.IAudioService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/media/IMediaRouterService.java: -------------------------------------------------------------------------------- 1 | package black.android.media; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.media.IMediaRouterService") 10 | public interface IMediaRouterService { 11 | @BClassName("android.media.IMediaRouterService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/media/MediaRouter.java: -------------------------------------------------------------------------------- 1 | package black.android.media; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | import top.niunaijun.blackreflection.annotation.BStaticField; 8 | 9 | @BClassName("android.media.MediaRouter") 10 | public interface MediaRouter { 11 | @BStaticField 12 | Object sStatic(); 13 | 14 | @BClassName("android.media.MediaRouter$Static") 15 | interface StaticKitkat { 16 | @BField 17 | IInterface mMediaRouterService(); 18 | } 19 | 20 | @BClassName("android.media.MediaRouter$Static") 21 | interface Static { 22 | @BField 23 | IInterface mAudioService(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/media/session/ISessionManager.java: -------------------------------------------------------------------------------- 1 | package black.android.media.session; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.media.session.ISessionManager") 10 | public interface ISessionManager { 11 | @BClassName("android.media.session.ISessionManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/net/IConnectivityManager.java: -------------------------------------------------------------------------------- 1 | package black.android.net; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.net.IConnectivityManager") 10 | public interface IConnectivityManager { 11 | @BClassName("android.net.IConnectivityManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/net/IVpnManager.java: -------------------------------------------------------------------------------- 1 | package black.android.net; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | /** 10 | * Created by BlackBox on 2022/2/26. 11 | */ 12 | @BClassName("android.net.IVpnManager") 13 | public interface IVpnManager { 14 | 15 | @BClassName("android.net.IVpnManager$Stub") 16 | interface Stub { 17 | @BStaticMethod 18 | IInterface asInterface(IBinder IBinder0); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/net/wifi/IWifiManager.java: -------------------------------------------------------------------------------- 1 | package black.android.net.wifi; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.net.wifi.IWifiManager") 10 | public interface IWifiManager { 11 | @BClassName("android.net.wifi.IWifiManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/net/wifi/WifiManager.java: -------------------------------------------------------------------------------- 1 | package black.android.net.wifi; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | import top.niunaijun.blackreflection.annotation.BStaticField; 8 | 9 | @BClassName("android.net.wifi.WifiManager") 10 | public interface WifiManager { 11 | @BStaticField 12 | IInterface sService(); 13 | 14 | @BField 15 | IInterface mService(); 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/net/wifi/WifiScanner.java: -------------------------------------------------------------------------------- 1 | package black.android.net.wifi; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | 7 | @BClassName("android.net.wifi.WifiScanner") 8 | public interface WifiScanner { 9 | @BStaticField 10 | String GET_AVAILABLE_CHANNELS_EXTRA(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/net/wifi/WifiSsid.java: -------------------------------------------------------------------------------- 1 | package black.android.net.wifi; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 6 | 7 | @BClassName("android.net.wifi.WifiSsid") 8 | public interface WifiSsid { 9 | @BStaticMethod 10 | Object createFromAsciiEncoded(String asciiEncoded); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/nfc/INfcAdapter.java: -------------------------------------------------------------------------------- 1 | package black.android.nfc; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.nfc.INfcAdapter") 10 | public interface INfcAdapter { 11 | @BClassName("android.nfc.INfcAdapter$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/BaseBundle.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.Parcel; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.os.BaseBundle") 9 | public interface BaseBundle { 10 | @BField 11 | Parcel mParcelledData(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/Build.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("android.os.Build") 7 | public interface Build { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/Bundle.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BMethod; 7 | 8 | @BClassName("android.os.Bundle") 9 | public interface Bundle { 10 | @BMethod 11 | IBinder getIBinder(String String0); 12 | 13 | @BMethod 14 | void putIBinder(String String0, IBinder IBinder1); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/BundleICS.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.Parcel; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.os.Bundle") 9 | public interface BundleICS { 10 | @BField 11 | Parcel mParcelledData(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/DropBoxManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.os.DropBoxManager") 9 | public interface DropBoxManager { 10 | @BField 11 | IInterface mService(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/Handler.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.Handler.Callback; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.os.Handler") 9 | public interface Handler { 10 | @BField 11 | Callback mCallback(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/IDeviceIdentifiersPolicyService.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.IDeviceIdentifiersPolicyService") 10 | public interface IDeviceIdentifiersPolicyService { 11 | @BClassName("android.os.IDeviceIdentifiersPolicyService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/INetworkManagementService.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.INetworkManagementService") 10 | public interface INetworkManagementService { 11 | @BClassName("android.os.INetworkManagementService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/IPowerManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.IPowerManager") 10 | public interface IPowerManager { 11 | @BClassName("android.os.IPowerManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/IUserManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.IUserManager") 10 | public interface IUserManager { 11 | @BClassName("android.os.IUserManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/IVibratorManagerService.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | /** 10 | * Created by BlackBox on 2022/3/19. 11 | */ 12 | @BClassName("android.os.IVibratorManagerService") 13 | public interface IVibratorManagerService { 14 | 15 | @BClassName("android.os.IVibratorManagerService$Stub") 16 | interface Stub { 17 | @BStaticMethod 18 | IInterface asInterface(IBinder IBinder0); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/MemoryFile.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | import java.io.FileDescriptor; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BMethod; 7 | 8 | @BClassName("android.os.MemoryFile") 9 | public interface MemoryFile { 10 | @BMethod 11 | FileDescriptor getFileDescriptor(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/Message.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 6 | 7 | @BClassName("android.os.Message") 8 | public interface Message { 9 | @BStaticMethod 10 | void updateCheckRecycle(int int0); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/Parcel.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | 7 | @BClassName("android.os.Parcel") 8 | public interface Parcel { 9 | @BStaticField 10 | int VAL_PARCELABLE(); 11 | 12 | @BStaticField 13 | int VAL_PARCELABLEARRAY(); 14 | } 15 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/Process.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 6 | 7 | @BClassName("android.os.Process") 8 | public interface Process { 9 | @BStaticMethod 10 | void setArgV0(String String0); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/StrictMode.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.os.StrictMode") 9 | public interface StrictMode { 10 | @BStaticField 11 | int DETECT_VM_FILE_URI_EXPOSURE(); 12 | 13 | @BStaticField 14 | int PENALTY_DEATH_ON_FILE_URI_EXPOSURE(); 15 | 16 | @BStaticField 17 | int sVmPolicyMask(); 18 | 19 | @BStaticMethod 20 | void disableDeathOnFileUriExposure(); 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/UserHandle.java: -------------------------------------------------------------------------------- 1 | package black.android.os; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 6 | 7 | @BClassName("android.os.UserHandle") 8 | public interface UserHandle { 9 | @BStaticMethod 10 | Integer myUserId(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/health/SystemHealthManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os.health; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.os.health.SystemHealthManager") 9 | public interface SystemHealthManager { 10 | @BField 11 | IInterface mBatteryStats(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/mount/IMountService.java: -------------------------------------------------------------------------------- 1 | package black.android.os.mount; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.storage.IMountService") 10 | public interface IMountService { 11 | @BClassName("android.os.storage.IMountService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/storage/IStorageManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os.storage; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.storage.IStorageManager") 10 | public interface IStorageManager { 11 | @BClassName("android.os.storage.IStorageManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/storage/StorageManager.java: -------------------------------------------------------------------------------- 1 | package black.android.os.storage; 2 | 3 | import android.os.storage.StorageVolume; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.os.storage.StorageManager") 9 | public interface StorageManager { 10 | @BStaticMethod 11 | StorageVolume[] getVolumeList(int int0, int int1); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/os/storage/StorageVolume.java: -------------------------------------------------------------------------------- 1 | package black.android.os.storage; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.os.storage.StorageVolume") 9 | public interface StorageVolume { 10 | @BField 11 | File mInternalPath(); 12 | 13 | @BField 14 | File mPath(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/permission/IPermissionManager.java: -------------------------------------------------------------------------------- 1 | package black.android.permission; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.permission.IPermissionManager") 10 | public interface IPermissionManager { 11 | @BClassName("android.permission.IPermissionManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/renderscript/RenderScriptCacheDir.java: -------------------------------------------------------------------------------- 1 | package black.android.renderscript; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.renderscript.RenderScriptCacheDir") 9 | public interface RenderScriptCacheDir { 10 | @BStaticMethod 11 | void setupDiskCache(File File0); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/rms/HwSysResImplP.java: -------------------------------------------------------------------------------- 1 | package black.android.rms; 2 | 3 | import java.util.Map; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.rms.HwSysResImpl") 9 | public interface HwSysResImplP { 10 | @BField 11 | Map> mWhiteListMap(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/rms/resource/ReceiverResourceLP.java: -------------------------------------------------------------------------------- 1 | package black.android.rms.resource; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.rms.resource.ReceiverResource") 8 | public interface ReceiverResourceLP { 9 | @BField 10 | Object mResourceConfig(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/rms/resource/ReceiverResourceM.java: -------------------------------------------------------------------------------- 1 | package black.android.rms.resource; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.rms.resource.ReceiverResource") 8 | public interface ReceiverResourceM { 9 | @BField 10 | String[] mWhiteList(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/rms/resource/ReceiverResourceN.java: -------------------------------------------------------------------------------- 1 | package black.android.rms.resource; 2 | 3 | import java.util.List; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.rms.resource.ReceiverResource") 9 | public interface ReceiverResourceN { 10 | @BField 11 | List mWhiteList(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/rms/resource/ReceiverResourceO.java: -------------------------------------------------------------------------------- 1 | package black.android.rms.resource; 2 | 3 | import java.util.Map; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.rms.resource.ReceiverResource") 9 | public interface ReceiverResourceO { 10 | @BField 11 | Map> mWhiteListMap(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/security/net/config/NetworkSecurityConfigProvider.java: -------------------------------------------------------------------------------- 1 | package black.android.security.net.config; 2 | 3 | import android.content.Context; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.security.net.config.NetworkSecurityConfigProvider") 9 | public interface NetworkSecurityConfigProvider { 10 | @BStaticMethod 11 | void install(Context Context0); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/service/notification/StatusBarNotification.java: -------------------------------------------------------------------------------- 1 | package black.android.service.notification; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.service.notification.StatusBarNotification") 8 | public interface StatusBarNotification { 9 | @BField 10 | Integer id(); 11 | 12 | @BField 13 | String opPkg(); 14 | 15 | @BField 16 | String pkg(); 17 | 18 | @BField 19 | String tag(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/service/persistentdata/IPersistentDataBlockService.java: -------------------------------------------------------------------------------- 1 | package black.android.service.persistentdata; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.service.persistentdata.IPersistentDataBlockService") 10 | public interface IPersistentDataBlockService { 11 | @BClassName("android.service.persistentdata.IPersistentDataBlockService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/CellIdentityCdma.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.telephony.CellIdentityCdma") 9 | public interface CellIdentityCdma { 10 | @BConstructor 11 | CellIdentityCdma _new(); 12 | 13 | @BField 14 | int mBasestationId(); 15 | 16 | @BField 17 | int mNetworkId(); 18 | 19 | @BField 20 | int mSystemId(); 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/CellIdentityGsm.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.telephony.CellIdentityGsm") 9 | public interface CellIdentityGsm { 10 | @BConstructor 11 | CellIdentityGsm _new(); 12 | 13 | @BField 14 | int mCid(); 15 | 16 | @BField 17 | int mLac(); 18 | 19 | @BField 20 | int mMcc(); 21 | 22 | @BField 23 | int mMnc(); 24 | } 25 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/CellInfoCdma.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | import android.telephony.CellIdentityCdma; 4 | import android.telephony.CellSignalStrengthCdma; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BConstructor; 8 | import top.niunaijun.blackreflection.annotation.BField; 9 | 10 | @BClassName("android.telephony.CellInfoCdma") 11 | public interface CellInfoCdma { 12 | @BConstructor 13 | CellInfoCdma _new(); 14 | 15 | @BField 16 | CellIdentityCdma mCellIdentityCdma(); 17 | 18 | @BField 19 | CellSignalStrengthCdma mCellSignalStrengthCdma(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/CellInfoGsm.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | import android.telephony.CellIdentityGsm; 4 | import android.telephony.CellSignalStrengthGsm; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BConstructor; 8 | import top.niunaijun.blackreflection.annotation.BField; 9 | 10 | @BClassName("android.telephony.CellInfoGsm") 11 | public interface CellInfoGsm { 12 | @BConstructor 13 | CellInfoGsm _new(); 14 | 15 | @BField 16 | CellIdentityGsm mCellIdentityGsm(); 17 | 18 | @BField 19 | CellSignalStrengthGsm mCellSignalStrengthGsm(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/CellSignalStrengthCdma.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.telephony.CellSignalStrengthCdma") 9 | public interface CellSignalStrengthCdma { 10 | @BConstructor 11 | CellSignalStrengthCdma _new(); 12 | 13 | @BField 14 | int mCdmaDbm(); 15 | 16 | @BField 17 | int mCdmaEcio(); 18 | 19 | @BField 20 | int mEvdoDbm(); 21 | 22 | @BField 23 | int mEvdoEcio(); 24 | 25 | @BField 26 | int mEvdoSnr(); 27 | } 28 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/CellSignalStrengthGsm.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BConstructor; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.telephony.CellSignalStrengthGsm") 9 | public interface CellSignalStrengthGsm { 10 | @BConstructor 11 | CellSignalStrengthGsm _new(); 12 | 13 | @BField 14 | int mBitErrorRate(); 15 | 16 | @BField 17 | int mSignalStrength(); 18 | } 19 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/NeighboringCellInfo.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("android.telephony.NeighboringCellInfo") 8 | public interface NeighboringCellInfo { 9 | @BField 10 | int mCid(); 11 | 12 | @BField 13 | int mLac(); 14 | 15 | @BField 16 | int mRssi(); 17 | } 18 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/SmsManager.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | @BClassName("android.telephony.SmsManager") 8 | public interface SmsManager { 9 | @BMethod 10 | Boolean getAutoPersisting(); 11 | 12 | @BMethod 13 | void setAutoPersisting(boolean boolean0); 14 | } 15 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/telephony/TelephonyManager.java: -------------------------------------------------------------------------------- 1 | package black.android.telephony; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | /** 10 | * Created by BlackBox on 2022/2/26. 11 | */ 12 | @BClassName("android.telephony.TelephonyManager") 13 | public interface TelephonyManager { 14 | 15 | @BStaticMethod 16 | Object getSubscriberInfoService(); 17 | 18 | @BStaticField 19 | boolean sServiceHandleCacheEnabled(); 20 | 21 | @BStaticField 22 | IInterface sIPhoneSubInfo(); 23 | } 24 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/util/Singleton.java: -------------------------------------------------------------------------------- 1 | package black.android.util; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | import top.niunaijun.blackreflection.annotation.BMethod; 7 | 8 | @BClassName("android.util.Singleton") 9 | public interface Singleton { 10 | @BField 11 | Object mInstance(); 12 | 13 | @BMethod 14 | Object get(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/CompatibilityInfoHolder.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | @BClassName("android.view.CompatibilityInfoHolder") 8 | public interface CompatibilityInfoHolder { 9 | @BMethod 10 | void set(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/Display.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | 8 | @BClassName("android.view.Display") 9 | public interface Display { 10 | @BStaticField 11 | IInterface sWindowManager(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/DisplayAdjustments.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | @BClassName("android.view.DisplayAdjustments") 8 | public interface DisplayAdjustments { 9 | @BMethod 10 | void setCompatibilityInfo(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/HardwareRenderer.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.view.HardwareRenderer") 9 | public interface HardwareRenderer { 10 | @BStaticMethod 11 | void setupDiskCache(File File0); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/IAutoFillManager.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.view.autofill.IAutoFillManager") 10 | public interface IAutoFillManager { 11 | @BClassName("android.view.autofill.IAutoFillManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/IGraphicsStats.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.view.IGraphicsStats") 10 | public interface IGraphicsStats { 11 | @BClassName("android.view.IGraphicsStats$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/IWindowManager.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.view.IWindowManager") 10 | public interface IWindowManager { 11 | @BClassName("android.view.IWindowManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/RenderScript.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.renderscript.RenderScript") 9 | public interface RenderScript { 10 | @BStaticMethod 11 | void setupDiskCache(File File0); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/SurfaceControl.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.view.SurfaceControl") 9 | public interface SurfaceControl { 10 | @BStaticMethod 11 | Bitmap screnshot(int int0, int int1); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/ThreadedRenderer.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import java.io.File; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.view.ThreadedRenderer") 9 | public interface ThreadedRenderer { 10 | @BStaticMethod 11 | void setupDiskCache(File File0); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/WindowManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package black.android.view; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | 8 | @BClassName("android.view.WindowManagerGlobal") 9 | public interface WindowManagerGlobal { 10 | @BStaticField 11 | int ADD_PERMISSION_DENIED(); 12 | 13 | @BStaticField 14 | IInterface sWindowManagerService(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/view/accessibility/IAccessibilityManager.java: -------------------------------------------------------------------------------- 1 | package black.android.view.accessibility; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.view.accessibility.IAccessibilityManager") 10 | public interface IAccessibilityManager { 11 | @BClassName("android.view.accessibility.IAccessibilityManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/webkit/IWebViewUpdateService.java: -------------------------------------------------------------------------------- 1 | package black.android.webkit; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | 7 | @BClassName("android.webkit.IWebViewUpdateService") 8 | public interface IWebViewUpdateService { 9 | @BMethod 10 | String getCurrentWebViewPackageName(); 11 | 12 | @BMethod 13 | Object waitForAndGetProvider(); 14 | } 15 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/webkit/WebViewFactory.java: -------------------------------------------------------------------------------- 1 | package black.android.webkit; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("android.webkit.WebViewFactory") 9 | public interface WebViewFactory { 10 | @BStaticField 11 | Boolean sWebViewSupported(); 12 | 13 | @BStaticMethod 14 | Object getUpdateService(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/widget/RemoteViews.java: -------------------------------------------------------------------------------- 1 | package black.android.widget; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | 5 | import java.util.ArrayList; 6 | 7 | import top.niunaijun.blackreflection.annotation.BClassName; 8 | import top.niunaijun.blackreflection.annotation.BField; 9 | 10 | @BClassName("android.widget.RemoteViews") 11 | public interface RemoteViews { 12 | @BField 13 | ArrayList mActions(); 14 | 15 | @BField 16 | ApplicationInfo mApplication(); 17 | 18 | @BField 19 | String mPackage(); 20 | } 21 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/android/widget/Toast.java: -------------------------------------------------------------------------------- 1 | package black.android.widget; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | 8 | @BClassName("android.widget.Toast") 9 | public interface Toast { 10 | @BStaticField 11 | IInterface sService(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/app/IAppOpsService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.app.IAppOpsService") 10 | public interface IAppOpsService { 11 | @BClassName("com.android.internal.app.IAppOpsService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/app/IBatteryStats.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.app.IBatteryStats") 10 | public interface IBatteryStats { 11 | @BClassName("com.android.internal.app.IBatteryStats$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/app/ISmtOpsService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.app.ISmtOpsService") 10 | public interface ISmtOpsService { 11 | @BClassName("com.android.internal.app.ISmtOpsService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/appwidget/IAppWidgetService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.appwidget; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.appwidget.IAppWidgetService") 10 | public interface IAppWidgetService { 11 | @BClassName("com.android.internal.appwidget.IAppWidgetService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/content/ReferrerIntent.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.content; 2 | 3 | import android.content.Intent; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BConstructor; 7 | 8 | @BClassName("com.android.internal.content.ReferrerIntent") 9 | public interface ReferrerIntent { 10 | @BConstructor 11 | Intent _new(Intent Intent0, String String1); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/net/VpnConfig.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.net; 2 | 3 | import java.util.List; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | /** 9 | * Created by BlackBox on 2022/2/25. 10 | */ 11 | @BClassName("com.android.internal.net.VpnConfig") 12 | public interface VpnConfig { 13 | @BField 14 | String user(); 15 | 16 | @BField 17 | List disallowedApplications(); 18 | 19 | @BField 20 | List allowedApplications(); 21 | } 22 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/os/IDropBoxManagerService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.os.IDropBoxManagerService") 10 | public interface IDropBoxManagerService { 11 | @BClassName("com.android.internal.os.IDropBoxManagerService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/os/IVibratorService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.IVibratorService") 10 | public interface IVibratorService { 11 | @BClassName("android.os.IVibratorService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/os/UserManager.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("android.os.UserManager") 10 | public interface UserManager { 11 | @BClassName("android.os.IUserManager$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/policy/PhoneWindow.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.policy; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BStaticField; 7 | 8 | @BClassName("com.android.internal.policy.PhoneWindow$WindowManagerHolder") 9 | public interface PhoneWindow { 10 | @BStaticField 11 | IInterface sWindowManager(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telecom/ITelecomService.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telecom; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.telecom.ITelecomService") 10 | public interface ITelecomService { 11 | @BClassName("com.android.internal.telecom.ITelecomService$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telephony/IMms.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.telephony.IMms") 10 | public interface IMms { 11 | @BClassName("com.android.internal.telephony.IMms$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telephony/IPhoneSubInfo.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.telephony.IPhoneSubInfo") 10 | public interface IPhoneSubInfo { 11 | @BClassName("com.android.internal.telephony.IPhoneSubInfo$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telephony/ISms.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.telephony.ISms") 10 | public interface ISms { 11 | @BClassName("com.android.internal.telephony.ISms$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telephony/ISub.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.telephony.ISub") 10 | public interface ISub { 11 | @BClassName("com.android.internal.telephony.ISub$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telephony/ITelephony.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.telephony.ITelephony") 10 | public interface ITelephony { 11 | @BClassName("com.android.internal.telephony.ITelephony$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telephony/ITelephonyRegistry.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import top.niunaijun.blackreflection.annotation.BClassName; 7 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 8 | 9 | @BClassName("com.android.internal.telephony.ITelephonyRegistry") 10 | public interface ITelephonyRegistry { 11 | @BClassName("com.android.internal.telephony.ITelephonyRegistry$Stub") 12 | interface Stub { 13 | @BStaticMethod 14 | IInterface asInterface(IBinder IBinder0); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/telephony/PhoneConstantsMtk.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.telephony; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | 7 | @BClassName("com.android.internal.telephony.PhoneConstants") 8 | public interface PhoneConstantsMtk { 9 | @BStaticField 10 | int GEMINI_SIM_NUM(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/view/IInputMethodManager.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.view; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("com.android.internal.view.IInputMethodManager") 7 | public interface IInputMethodManager { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/com/android/internal/view/inputmethod/InputMethodManager.java: -------------------------------------------------------------------------------- 1 | package black.com.android.internal.view.inputmethod; 2 | 3 | import android.os.IInterface; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("android.view.inputmethod.InputMethodManager") 9 | public interface InputMethodManager { 10 | @BField 11 | IInterface mService(); 12 | } 13 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/dalvik/system/VMRuntime.java: -------------------------------------------------------------------------------- 1 | package black.dalvik.system; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BMethod; 6 | import top.niunaijun.blackreflection.annotation.BStaticMethod; 7 | 8 | @BClassName("dalvik.system.VMRuntime") 9 | public interface VMRuntime { 10 | @BStaticMethod 11 | String getCurrentInstructionSet(); 12 | 13 | @BStaticMethod 14 | Object getRuntime(); 15 | 16 | @BStaticMethod 17 | Boolean is64BitAbi(String String0); 18 | 19 | @BMethod 20 | Boolean is64Bit(); 21 | 22 | @BMethod 23 | Boolean isJavaDebuggable(); 24 | 25 | @BMethod 26 | void setTargetSdkVersion(int int0); 27 | } 28 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/java/io/File.java: -------------------------------------------------------------------------------- 1 | package black.java.io; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | 7 | @BClassName("java.io.File") 8 | public interface File { 9 | @BStaticField 10 | Object fs(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/java/io/FileSystem.java: -------------------------------------------------------------------------------- 1 | package black.java.io; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("java.io.FileSystem") 7 | public interface FileSystem { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/java/io/UnixFileSystem.java: -------------------------------------------------------------------------------- 1 | package black.java.io; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("java.io.UnixFileSystem") 7 | public interface UnixFileSystem { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/java/lang/ThreadGroup.java: -------------------------------------------------------------------------------- 1 | package black.java.lang; 2 | 3 | import java.util.List; 4 | 5 | import top.niunaijun.blackreflection.annotation.BClassName; 6 | import top.niunaijun.blackreflection.annotation.BField; 7 | 8 | @BClassName("java.lang.ThreadGroup") 9 | public interface ThreadGroup { 10 | @BField 11 | List groups(); 12 | 13 | @BField 14 | java.lang.ThreadGroup parent(); 15 | } 16 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/java/lang/ThreadGroupN.java: -------------------------------------------------------------------------------- 1 | package black.java.lang; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("java.lang.ThreadGroup") 8 | public interface ThreadGroupN { 9 | @BField 10 | java.lang.ThreadGroup[] groups(); 11 | 12 | @BField 13 | Integer ngroups(); 14 | 15 | @BField 16 | java.lang.ThreadGroup parent(); 17 | } 18 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/libcore/io/ForwardingOs.java: -------------------------------------------------------------------------------- 1 | package black.libcore.io; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BField; 6 | 7 | @BClassName("libcore.io.ForwardingOs") 8 | public interface ForwardingOs { 9 | @BField 10 | Object os(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/libcore/io/Libcore.java: -------------------------------------------------------------------------------- 1 | package black.libcore.io; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | import top.niunaijun.blackreflection.annotation.BStaticField; 6 | 7 | @BClassName("libcore.io.Libcore") 8 | public interface Libcore { 9 | @BStaticField 10 | Object os(); 11 | } 12 | -------------------------------------------------------------------------------- /android-mirror/src/main/java/black/libcore/io/Os.java: -------------------------------------------------------------------------------- 1 | package black.libcore.io; 2 | 3 | 4 | import top.niunaijun.blackreflection.annotation.BClassName; 5 | 6 | @BClassName("libcore.io.Os") 7 | public interface Os { 8 | } 9 | -------------------------------------------------------------------------------- /android-mirror/src/test/java/top/niunaijun/android_mirror/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package top.niunaijun.android_mirror; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/bean/AppInfo.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.bean 2 | 3 | import android.graphics.drawable.Drawable 4 | 5 | /** 6 | * 7 | * @Description: 8 | * @Author: wukaicheng 9 | * @CreateDate: 2021/4/29 21:57 10 | */ 11 | data class AppInfo(val name:String,val icon:Drawable,val packageName:String,val sourceDir:String,val isXpModule:Boolean) -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/bean/FakeLocationBean.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.bean 2 | 3 | import android.graphics.drawable.Drawable 4 | import top.niunaijun.blackbox.entity.location.BLocation 5 | 6 | data class FakeLocationBean( 7 | val userID: Int, 8 | val name: String, 9 | val icon: Drawable, 10 | val packageName: String, 11 | var fakeLocationPattern: Int, 12 | var fakeLocation: BLocation? 13 | ) 14 | 15 | data class FakeLocationBeanInstallBean(val userID: Int, val success: Boolean, val msg: String) -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/bean/GmsBean.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.bean 2 | 3 | /** 4 | * 5 | * @Description: 6 | * @Author: BlackBox 7 | * @CreateDate: 2022/3/2 21:30 8 | */ 9 | data class GmsBean(val userID:Int,val userName:String,var isInstalledGms:Boolean) 10 | 11 | 12 | data class GmsInstallBean(val userID: Int,val success:Boolean,val msg:String) -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/bean/InstalledAppBean.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.bean 2 | 3 | import android.graphics.drawable.Drawable 4 | 5 | /** 6 | * 7 | * @Description: 8 | * @Author: wukaicheng 9 | * @CreateDate: 2022/3/6 19:26 10 | */ 11 | data class InstalledAppBean(val name:String, val icon: Drawable, val packageName:String, val sourceDir:String, val isInstall:Boolean) 12 | -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/bean/XpModuleInfo.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.bean 2 | 3 | import android.graphics.drawable.Drawable 4 | 5 | /** 6 | * 7 | * @Description: 8 | * @Author: wukaicheng 9 | * @CreateDate: 2021/5/2 21:03 10 | */ 11 | data class XpModuleInfo( 12 | val name: String, 13 | val desc: String, 14 | val packageName: String, 15 | val version: String, 16 | var enable:Boolean, 17 | val icon: Drawable 18 | ) 19 | -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/data/AppsSortCompon.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.data 2 | 3 | import android.content.pm.ApplicationInfo 4 | 5 | /** 6 | * 7 | * @Description: app sort 8 | * @Author: BlackBox 9 | * @CreateDate: 2022/2/27 23:21 10 | */ 11 | class AppsSortComparator(private val sortedList: List) : Comparator { 12 | override fun compare(o1: ApplicationInfo?, o2: ApplicationInfo?): Int { 13 | if (o1 == null || o2 == null) { 14 | return 0 15 | } 16 | 17 | val first = sortedList.indexOf(o1.packageName) 18 | val second = sortedList.indexOf(o2.packageName) 19 | return first - second 20 | 21 | } 22 | } -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/util/ContextUtil.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.util 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | import android.net.Uri 6 | import android.provider.Settings 7 | 8 | /** 9 | * 10 | * @Description: 11 | * @Author: kotlinMiku 12 | * @CreateDate: 2022/4/17 16:32 13 | */ 14 | object ContextUtil { 15 | 16 | fun Context.openAppSystemSettings() { 17 | startActivity(Intent().apply { 18 | action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS 19 | addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 20 | data = Uri.fromParts("package", packageName, null) 21 | }) 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/util/ResUtil.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.util 2 | 3 | import androidx.annotation.StringRes 4 | import top.niunaijun.blackboxa.app.App 5 | 6 | 7 | fun getString(@StringRes id:Int,vararg arg:String):String{ 8 | if(arg.isEmpty()){ 9 | return App.getContext().getString(id) 10 | } 11 | return App.getContext().getString(id,*arg) 12 | } 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/util/ToastEx.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.util 2 | 3 | import android.content.Context 4 | import android.widget.Toast 5 | import androidx.annotation.StringRes 6 | import top.niunaijun.blackboxa.app.App 7 | 8 | /** 9 | * 10 | * @Description: 11 | * @Author: wukaicheng 12 | * @CreateDate: 2021/5/2 0:13 13 | */ 14 | var toastImpl:Toast? = null 15 | 16 | fun Context.toast(msg:String){ 17 | toastImpl?.cancel() 18 | toastImpl = Toast.makeText(this,msg,Toast.LENGTH_SHORT) 19 | toastImpl?.show() 20 | } 21 | 22 | fun toast(msg: String){ 23 | App.getContext().toast(msg) 24 | } 25 | 26 | fun toast(@StringRes msgID:Int){ 27 | toast(getString(msgID)) 28 | } -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/view/apps/AppsFactory.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.view.apps 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.ViewModelProvider 5 | import top.niunaijun.blackboxa.data.AppsRepository 6 | 7 | /** 8 | * 9 | * @Description: 10 | * @Author: wukaicheng 11 | * @CreateDate: 2021/4/29 22:36 12 | */ 13 | @Suppress("UNCHECKED_CAST") 14 | class AppsFactory(private val appsRepository: AppsRepository) : ViewModelProvider.NewInstanceFactory() { 15 | 16 | override fun create(modelClass: Class): T { 17 | return AppsViewModel(appsRepository) as T 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/view/fake/FakeLocationFactory.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.view.fake 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.ViewModelProvider 5 | import top.niunaijun.blackboxa.data.FakeLocationRepository 6 | 7 | /** 8 | * 9 | * @Author: BlackBoxing 10 | * @CreateDate: 2022/3/14 11 | */ 12 | class FakeLocationFactory(private val repo: FakeLocationRepository) : 13 | ViewModelProvider.NewInstanceFactory() { 14 | 15 | override fun create(modelClass: Class): T { 16 | return FakeLocationViewModel(repo) as T 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/view/gms/GmsFactory.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.view.gms 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.ViewModelProvider 5 | import top.niunaijun.blackboxa.data.GmsRepository 6 | 7 | /** 8 | * 9 | * @Description: 10 | * @Author: BlackBox 11 | * @CreateDate: 2022/3/2 21:15 12 | */ 13 | class GmsFactory(private val repo:GmsRepository): ViewModelProvider.NewInstanceFactory() { 14 | 15 | override fun create(modelClass: Class): T { 16 | return GmsViewModel(repo) as T 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/view/list/ListFactory.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.view.list 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.ViewModelProvider 5 | import top.niunaijun.blackboxa.data.AppsRepository 6 | 7 | /** 8 | * 9 | * @Description: 10 | * @Author: wukaicheng 11 | * @CreateDate: 2021/4/29 22:36 12 | */ 13 | @Suppress("UNCHECKED_CAST") 14 | class ListFactory(private val appsRepository: AppsRepository) : ViewModelProvider.NewInstanceFactory() { 15 | 16 | override fun create(modelClass: Class): T { 17 | return ListViewModel(appsRepository) as T 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/main/java/top/niunaijun/blackboxa/view/xp/XpFactory.kt: -------------------------------------------------------------------------------- 1 | package top.niunaijun.blackboxa.view.xp 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.ViewModelProvider 5 | import top.niunaijun.blackboxa.data.XpRepository 6 | 7 | /** 8 | * 9 | * @Description: 10 | * @Author: wukaicheng 11 | * @CreateDate: 2021/5/2 20:56 12 | */ 13 | @Suppress("UNCHECKED_CAST") 14 | class XpFactory(private val repo:XpRepository): ViewModelProvider.NewInstanceFactory() { 15 | override fun create(modelClass: Class): T { 16 | return XpViewModel(repo) as T 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable-anydpi/ic_add.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-anydpi/ic_location_change.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-anydpi/ic_search.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-hdpi/ic_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_location_change.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-hdpi/ic_location_change.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-hdpi/ic_search.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-mdpi/ic_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_location_change.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-mdpi/ic_location_change.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-mdpi/ic_search.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-xhdpi/ic_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_location_change.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-xhdpi/ic_location_change.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-xhdpi/ic_search.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-xxhdpi/ic_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_location_change.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-xxhdpi/ic_location_change.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/drawable-xxhdpi/ic_search.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_osmdroid.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/base_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_apps.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_viewpager.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_switch.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/menu/app_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-hdpi/ic_launcher_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-hdpi/ic_launcher_round_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-ldpi/ic_launcher_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-ldpi/ic_launcher_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-ldpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-ldpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-ldpi/ic_launcher_round_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-ldpi/ic_launcher_round_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-mdpi/ic_launcher_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-mdpi/ic_launcher_round_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xhdpi/ic_launcher_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xhdpi/ic_launcher_round_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxhdpi/ic_launcher_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxhdpi/ic_launcher_round_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxxhdpi/ic_launcher_beta.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round_beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round_beta.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F3F3F 4 | #3F3F3F 5 | #3F3F3F 6 | #ffffff 7 | #212121 8 | #757575 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/assets/banner.png -------------------------------------------------------------------------------- /assets/multiw.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/assets/multiw.gif -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/refgd/BlackBox/20e199257ac34fedf4935f259a827945837e5c31/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-7.3.3-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':Bcore' 2 | include ':app' 3 | include ':Bcore:black-fake' 4 | include ':Bcore:black-hook' 5 | include ':Bcore:pine-xposed' 6 | include ':Bcore:pine-core' 7 | include ':Bcore:pine-xposed-res' 8 | include ':android-mirror' 9 | 10 | rootProject.name = "BlackBox" 11 | --------------------------------------------------------------------------------