├── app ├── .gitignore └── src │ ├── main │ ├── res │ │ ├── drawable-hdpi │ │ │ ├── ic_add.png │ │ │ ├── ic_menu.png │ │ │ ├── ic_check.png │ │ │ ├── ic_crash.png │ │ │ ├── ic_no_check.png │ │ │ ├── ic_shortcut.png │ │ │ └── ic_add_circle.png │ │ ├── drawable-xxhdpi │ │ │ ├── ic_vs.png │ │ │ ├── ic_about.png │ │ │ ├── ic_wifi.png │ │ │ ├── ic_account.png │ │ │ ├── ic_device.png │ │ │ ├── ic_reboot.png │ │ │ ├── ic_settings.png │ │ │ ├── ic_menu_donate.png │ │ │ └── ic_notification.png │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ ├── values │ │ │ ├── ids.xml │ │ │ ├── integers.xml │ │ │ └── fitTextView.xml │ │ ├── drawable │ │ │ ├── blue_circle.xml │ │ │ ├── home_bg.xml │ │ │ ├── shape_clone_app_btn.xml │ │ │ ├── shape_clone_app_btn_pressed.xml │ │ │ ├── icon_bg.xml │ │ │ ├── sel_clone_app_btn.xml │ │ │ └── sel_guide_btn.xml │ │ ├── values-en │ │ │ └── strings.xml │ │ ├── menu │ │ │ ├── main_menu.xml │ │ │ └── marktet_map.xml │ │ ├── drawable-nodpi │ │ │ └── ic_more.xml │ │ └── layout │ │ │ ├── activity_location_settings.xml │ │ │ └── activity_users.xml │ ├── assets │ │ └── XposedInstaller_3.1.5.apk_ │ └── java │ │ └── io │ │ └── virtualapp │ │ ├── abs │ │ ├── BasePresenter.java │ │ ├── Callback.java │ │ └── BaseView.java │ │ ├── home │ │ ├── models │ │ │ ├── AppInfo.java │ │ │ └── AppData.java │ │ └── ListAppContract.java │ │ ├── utils │ │ └── DialogUtil.java │ │ ├── VCommends.java │ │ └── delegate │ │ └── MyPhoneInfoDelegate.java │ └── fdroid │ └── java │ └── io │ └── virtualapp │ └── delegate │ └── MyVirtualInitializer.java ├── launcher ├── MODULE_LICENSE_APACHE2 ├── tests │ └── res │ │ ├── raw │ │ └── db_schema_v10.json │ │ ├── layout │ │ ├── test_layout_appwidget_red.xml │ │ ├── test_layout_appwidget_blue.xml │ │ └── test_layout_appwidget_view.xml │ │ └── xml │ │ ├── appwidget_no_config.xml │ │ └── appwidget_with_config.xml ├── res │ ├── drawable-xhdpi │ │ ├── home_bg.png │ │ ├── ic_allapps.png │ │ ├── workspace_bg.9.png │ │ ├── ic_allapps_pressed.png │ │ ├── workspace_bg_dark.9.png │ │ ├── ic_widget_resize_handle.png │ │ ├── widget_resize_frame.9.png │ │ └── widget_resize_shadow.9.png │ ├── drawable-hdpi │ │ ├── ic_allapps.png │ │ ├── workspace_bg.9.png │ │ ├── ic_allapps_pressed.png │ │ ├── workspace_bg_dark.9.png │ │ ├── widget_resize_frame.9.png │ │ ├── ic_widget_resize_handle.png │ │ └── widget_resize_shadow.9.png │ ├── drawable-mdpi │ │ ├── ic_allapps.png │ │ ├── workspace_bg.9.png │ │ ├── ic_allapps_pressed.png │ │ ├── workspace_bg_dark.9.png │ │ ├── widget_resize_frame.9.png │ │ ├── ic_widget_resize_handle.png │ │ └── widget_resize_shadow.9.png │ ├── drawable-xxhdpi │ │ ├── ic_allapps.png │ │ ├── workspace_bg.9.png │ │ ├── ic_hotseat_addapp.png │ │ ├── ic_allapps_pressed.png │ │ ├── ic_hotseat_settings.png │ │ ├── workspace_bg_dark.9.png │ │ ├── widget_resize_frame.9.png │ │ ├── widget_resize_shadow.9.png │ │ └── ic_widget_resize_handle.png │ ├── mipmap-hdpi │ │ ├── ic_launcher_home.png │ │ ├── ic_launcher_home_background.png │ │ └── ic_launcher_home_foreground.png │ ├── mipmap-mdpi │ │ ├── ic_launcher_home.png │ │ ├── ic_launcher_home_background.png │ │ └── ic_launcher_home_foreground.png │ ├── mipmap-xhdpi │ │ ├── ic_launcher_home.png │ │ ├── ic_launcher_home_background.png │ │ └── ic_launcher_home_foreground.png │ ├── mipmap-xxhdpi │ │ ├── ic_launcher_home.png │ │ ├── ic_launcher_home_background.png │ │ └── ic_launcher_home_foreground.png │ ├── drawable-xxxhdpi │ │ ├── workspace_bg.9.png │ │ ├── widget_resize_frame.9.png │ │ ├── workspace_bg_dark.9.png │ │ ├── ic_widget_resize_handle.png │ │ └── widget_resize_shadow.9.png │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher_home.png │ │ ├── ic_launcher_home_background.png │ │ └── ic_launcher_home_foreground.png │ ├── values-sw600dp │ │ └── config.xml │ ├── xml │ │ ├── file_paths.xml │ │ └── backupscheme.xml │ ├── values-sw720dp-land │ │ └── dimens.xml │ ├── values │ │ ├── bridge.xml │ │ └── plurals.xml │ ├── layout │ │ └── zzz_weight_watcher.xml │ ├── values-ja │ │ └── plurals.xml │ ├── values-ko │ │ └── plurals.xml │ ├── values-hy │ │ └── plurals.xml │ ├── values-km │ │ └── plurals.xml │ ├── values-am │ │ └── plurals.xml │ ├── values-bg │ │ └── plurals.xml │ ├── values-ca │ │ └── plurals.xml │ ├── values-da │ │ └── plurals.xml │ ├── values-de │ │ └── plurals.xml │ ├── values-el │ │ └── plurals.xml │ ├── values-es-rUS │ │ └── plurals.xml │ ├── values-es │ │ └── plurals.xml │ ├── values-et │ │ └── plurals.xml │ ├── values-eu │ │ └── plurals.xml │ ├── values-fi │ │ └── plurals.xml │ ├── values-fr-rCA │ │ └── plurals.xml │ ├── values-fr │ │ └── plurals.xml │ ├── values-gl │ │ └── plurals.xml │ ├── values-in │ │ └── plurals.xml │ ├── values-it │ │ └── plurals.xml │ ├── values-ka │ │ └── plurals.xml │ ├── values-kk │ │ └── plurals.xml │ ├── values-ky │ │ └── plurals.xml │ ├── values-lo │ │ └── plurals.xml │ ├── values-mn │ │ └── plurals.xml │ ├── values-mr │ │ └── plurals.xml │ ├── values-ms │ │ └── plurals.xml │ ├── values-nb │ │ └── plurals.xml │ ├── values-nl │ │ └── plurals.xml │ ├── values-pt-rPT │ │ └── plurals.xml │ ├── values-pt │ │ └── plurals.xml │ ├── values-sv │ │ └── plurals.xml │ ├── values-te │ │ └── plurals.xml │ ├── values-tr │ │ └── plurals.xml │ ├── values-zh-rCN │ │ └── plurals.xml │ ├── values-zh-rHK │ │ └── plurals.xml │ ├── values-zh-rTW │ │ └── plurals.xml │ ├── values-af │ │ └── plurals.xml │ ├── values-az │ │ └── plurals.xml │ ├── values-en-rAU │ │ └── plurals.xml │ ├── values-en-rGB │ │ └── plurals.xml │ ├── values-en-rIN │ │ └── plurals.xml │ ├── values-hi │ │ └── plurals.xml │ ├── values-hu │ │ └── plurals.xml │ ├── values-mk │ │ └── plurals.xml │ ├── values-pa │ │ └── plurals.xml │ ├── values-si │ │ └── plurals.xml │ ├── values-sq │ │ └── plurals.xml │ ├── values-th │ │ └── plurals.xml │ ├── values-vi │ │ └── plurals.xml │ ├── values-bn │ │ └── plurals.xml │ ├── values-fa │ │ └── plurals.xml │ ├── values-gu │ │ └── plurals.xml │ ├── values-is │ │ └── plurals.xml │ ├── values-kn │ │ └── plurals.xml │ ├── values-my │ │ └── plurals.xml │ ├── values-ne │ │ └── plurals.xml │ ├── values-sw │ │ └── plurals.xml │ ├── values-ta │ │ └── plurals.xml │ ├── values-tl │ │ └── plurals.xml │ ├── values-uz │ │ └── plurals.xml │ ├── values-ur │ │ └── plurals.xml │ ├── values-zu │ │ └── plurals.xml │ ├── values-ml │ │ └── plurals.xml │ ├── values-ar-rXB │ │ └── plurals.xml │ ├── values-en-rXA │ │ └── plurals.xml │ ├── drawable │ │ ├── gutter_horizontal.xml │ │ ├── ic_kill_app.xml │ │ ├── ic_clear_app.xml │ │ └── ic_create_shortcut.xml │ ├── values-sw720dp │ │ └── config.xml │ ├── values-bs │ │ └── plurals.xml │ ├── values-hr │ │ └── plurals.xml │ ├── values-ro │ │ └── plurals.xml │ ├── values-sr │ │ └── plurals.xml │ ├── values-lv │ │ └── plurals.xml │ ├── values-b+sr+Latn │ │ └── plurals.xml │ ├── menu │ │ └── change_wallpaper.xml │ ├── values-v23 │ │ └── styles.xml │ ├── values-sl │ │ └── plurals.xml │ ├── values-cs │ │ └── plurals.xml │ ├── values-sk │ │ └── plurals.xml │ ├── values-uk │ │ └── plurals.xml │ ├── values-be │ │ └── plurals.xml │ ├── values-iw │ │ └── plurals.xml │ ├── values-ru │ │ └── plurals.xml │ ├── values-lt │ │ └── plurals.xml │ ├── values-pl │ │ └── plurals.xml │ └── values-v24 │ │ └── config.xml ├── assets │ └── fonts │ │ └── GoogleSans-Regular.ttf ├── src │ ├── com │ │ ├── android │ │ │ └── launcher3 │ │ │ │ ├── OnAlarmListener.java │ │ │ │ ├── CustomAppWidget.java │ │ │ │ ├── AppFilter.java │ │ │ │ └── LauncherProviderChangeListener.java │ │ └── google │ │ │ └── android │ │ │ ├── apps │ │ │ └── nexuslauncher │ │ │ │ ├── smartspace │ │ │ │ └── ISmartspace.java │ │ │ │ ├── qsb │ │ │ │ └── OPAStatusReceiver.java │ │ │ │ └── search │ │ │ │ └── SearchResult.java │ │ │ └── libraries │ │ │ ├── gsa │ │ │ └── launcherclient │ │ │ │ ├── ISerializableScrollCallback.java │ │ │ │ ├── StaticInteger.java │ │ │ │ └── IScrollCallback.java │ │ │ └── launcherclient │ │ │ └── ILauncherOverlayCallback.aidl │ └── amirz │ │ └── aidlbridge │ │ ├── Bridge.aidl │ │ └── BridgeCallback.aidl └── .gitignore ├── lib ├── .gitignore └── src │ └── main │ ├── aidl │ ├── com │ │ └── lody │ │ │ └── virtual │ │ │ ├── os │ │ │ └── VUserInfo.aidl │ │ │ ├── remote │ │ │ ├── Problem.aidl │ │ │ ├── vloc │ │ │ │ ├── VCell.aidl │ │ │ │ ├── VWifi.aidl │ │ │ │ └── VLocation.aidl │ │ │ ├── AppTaskInfo.aidl │ │ │ ├── BadgerInfo.aidl │ │ │ ├── VDeviceInfo.aidl │ │ │ ├── InstallResult.aidl │ │ │ ├── ReceiverInfo.aidl │ │ │ ├── InstalledAppInfo.aidl │ │ │ ├── PendingIntentData.aidl │ │ │ ├── PendingResultData.aidl │ │ │ └── VParceledListSlice.aidl │ │ │ └── server │ │ │ ├── pm │ │ │ └── installer │ │ │ │ ├── SessionInfo.aidl │ │ │ │ └── SessionParams.aidl │ │ │ ├── interfaces │ │ │ ├── IAppRequestListener.aidl │ │ │ ├── IUiCallback.aidl │ │ │ ├── IServiceFetcher.aidl │ │ │ ├── IProcessObserver.aidl │ │ │ ├── IPackageObserver.aidl │ │ │ └── IIntentFilterObserver.aidl │ │ │ ├── IBinderDelegateService.aidl │ │ │ ├── IDeviceInfoManager.aidl │ │ │ ├── IVirtualStorageService.aidl │ │ │ ├── IJobScheduler.aidl │ │ │ └── IPackageInstallerSession.aidl │ └── android │ │ ├── content │ │ ├── ISyncStatusObserver.aidl │ │ └── pm │ │ │ ├── IPackageInstallObserver.aidl │ │ │ ├── IPackageDataObserver.aidl │ │ │ ├── IPackageInstallerCallback.aidl │ │ │ └── IPackageInstallerSession.aidl │ │ ├── app │ │ ├── IActivityManager │ │ │ └── ContentProviderHolder.aidl │ │ └── job │ │ │ └── IJobService.aidl │ │ ├── net │ │ ├── wifi │ │ │ └── IWifiScanner.aidl │ │ └── IConnectivityManager.aidl │ │ ├── accounts │ │ └── IAccountManagerResponse.aidl │ │ └── location │ │ └── ILocationListener.aidl │ ├── java │ ├── android │ │ └── app │ │ │ ├── LoadedApk.java │ │ │ └── ActivityThread.java │ ├── com │ │ └── lody │ │ │ └── virtual │ │ │ ├── server │ │ │ ├── pm │ │ │ │ └── installer │ │ │ │ │ └── PackageInstallInfo.java │ │ │ └── ServiceCache.java │ │ │ ├── client │ │ │ ├── core │ │ │ │ ├── CrashHandler.java │ │ │ │ └── InstallStrategy.java │ │ │ ├── ipc │ │ │ │ └── ActivityClientRecord.java │ │ │ ├── hook │ │ │ │ ├── providers │ │ │ │ │ └── InternalProviderHook.java │ │ │ │ ├── base │ │ │ │ │ ├── StaticMethodProxy.java │ │ │ │ │ ├── SkipInject.java │ │ │ │ │ ├── Inject.java │ │ │ │ │ ├── ResultStaticMethodProxy.java │ │ │ │ │ ├── ReplaceLastPkgMethodProxy.java │ │ │ │ │ └── ReplaceCallingPkgMethodProxy.java │ │ │ │ ├── delegate │ │ │ │ │ └── TaskDescriptionDelegate.java │ │ │ │ └── proxies │ │ │ │ │ ├── wifi_scanner │ │ │ │ │ └── WifiScannerStub.java │ │ │ │ │ └── content │ │ │ │ │ └── ContentServiceStub.java │ │ │ ├── badger │ │ │ │ └── IBadger.java │ │ │ └── interfaces │ │ │ │ └── IInjector.java │ │ │ ├── Build.java │ │ │ └── helper │ │ │ ├── utils │ │ │ ├── EncodeUtils.java │ │ │ ├── ReflectException.java │ │ │ ├── marks │ │ │ │ ├── FakeLocMark.java │ │ │ │ └── FakeDeviceMark.java │ │ │ ├── XmlSerializerAndParser.java │ │ │ ├── Singleton.java │ │ │ └── ClassUtils.java │ │ │ └── compat │ │ │ ├── ObjectsCompat.java │ │ │ └── ApplicationThreadCompat.java │ └── mirror │ │ ├── android │ │ ├── content │ │ │ ├── IClipboard.java │ │ │ ├── IContentProvider.java │ │ │ ├── pm │ │ │ │ ├── PackageUserState.java │ │ │ │ ├── UserInfo.java │ │ │ │ ├── ILauncherApps.java │ │ │ │ ├── PackageParserNougat.java │ │ │ │ ├── ApplicationInfoN.java │ │ │ │ ├── ApplicationInfoL.java │ │ │ │ ├── IShortcutService.java │ │ │ │ ├── LauncherApps.java │ │ │ │ └── ShortcutInfo.java │ │ │ ├── ContentResolverJBMR2.java │ │ │ ├── ClipboardManagerOreo.java │ │ │ ├── ContentProviderClient.java │ │ │ ├── IntentFilter.java │ │ │ ├── ContentResolver.java │ │ │ ├── SyncInfo.java │ │ │ ├── ClipboardManager.java │ │ │ ├── ContentProviderNative.java │ │ │ ├── SyncAdapterType.java │ │ │ ├── SyncAdapterTypeN.java │ │ │ ├── res │ │ │ │ ├── AssetManager.java │ │ │ │ └── CompatibilityInfo.java │ │ │ ├── ContentProviderHolderOreo.java │ │ │ ├── IIntentReceiver.java │ │ │ ├── IIntentReceiverJB.java │ │ │ └── IRestrictionsManager.java │ │ ├── hardware │ │ │ ├── display │ │ │ │ ├── IDisplayManager.java │ │ │ │ └── DisplayManagerGlobal.java │ │ │ └── fingerprint │ │ │ │ └── IFingerprintService.java │ │ ├── os │ │ │ ├── StrictMode.java │ │ │ ├── Handler.java │ │ │ ├── BundleICS.java │ │ │ ├── BaseBundle.java │ │ │ ├── Build.java │ │ │ ├── Process.java │ │ │ ├── Message.java │ │ │ ├── Bundle.java │ │ │ ├── IUserManager.java │ │ │ ├── mount │ │ │ │ └── IMountService.java │ │ │ ├── UserHandle.java │ │ │ ├── storage │ │ │ │ └── IStorageManager.java │ │ │ ├── IPowerManager.java │ │ │ └── INetworkManagementService.java │ │ ├── rms │ │ │ └── resource │ │ │ │ ├── ReceiverResourceM.java │ │ │ │ ├── ReceiverResourceLP.java │ │ │ │ └── ReceiverResourceN.java │ │ ├── view │ │ │ ├── Display.java │ │ │ ├── WindowManagerGlobal.java │ │ │ ├── RenderScript.java │ │ │ ├── HardwareRenderer.java │ │ │ ├── ThreadedRenderer.java │ │ │ ├── SurfaceControl.java │ │ │ ├── IGraphicsStats.java │ │ │ └── IWindowManager.java │ │ ├── widget │ │ │ ├── Toast.java │ │ │ └── RemoteViews.java │ │ ├── app │ │ │ ├── LoadedApkHuaWei.java │ │ │ ├── PendingIntentJBMR2.java │ │ │ ├── ContextImplICS.java │ │ │ ├── NotificationM.java │ │ │ ├── ContextImplKitkat.java │ │ │ ├── ActivityManagerNative.java │ │ │ ├── NotificationManager.java │ │ │ ├── IActivityManagerICS.java │ │ │ ├── IServiceConnectionO.java │ │ │ ├── Notification.java │ │ │ ├── ActivityThreadNMR1.java │ │ │ ├── ActivityManagerOreo.java │ │ │ ├── ApplicationThreadNative.java │ │ │ ├── IActivityManagerN.java │ │ │ ├── IActivityManagerL.java │ │ │ ├── job │ │ │ │ ├── JobInfo.java │ │ │ │ └── IJobScheduler.java │ │ │ ├── IApplicationThreadJBMR1.java │ │ │ ├── ISearchManager.java │ │ │ ├── backup │ │ │ │ └── IBackupManager.java │ │ │ ├── NotificationL.java │ │ │ └── IAlarmManager.java │ │ ├── util │ │ │ └── Singleton.java │ │ ├── webkit │ │ │ ├── WebViewFactory.java │ │ │ └── IWebViewUpdateService.java │ │ ├── net │ │ │ └── wifi │ │ │ │ ├── WifiScanner.java │ │ │ │ ├── WifiSsid.java │ │ │ │ └── IWifiManager.java │ │ ├── ddm │ │ │ ├── DdmHandleAppName.java │ │ │ └── DdmHandleAppNameJBMR1.java │ │ ├── media │ │ │ ├── AudioManager.java │ │ │ ├── IAudioService.java │ │ │ ├── IMediaRouterService.java │ │ │ └── session │ │ │ │ └── ISessionManager.java │ │ ├── telephony │ │ │ ├── NeighboringCellInfo.java │ │ │ └── CellSignalStrengthGsm.java │ │ ├── renderscript │ │ │ └── RenderScriptCacheDir.java │ │ ├── location │ │ │ ├── LocationRequestL.java │ │ │ └── ILocationManager.java │ │ └── accounts │ │ │ └── IAccountManager.java │ │ ├── libcore │ │ └── io │ │ │ ├── Os.java │ │ │ ├── ForwardingOs.java │ │ │ └── Libcore.java │ │ ├── com │ │ └── android │ │ │ └── internal │ │ │ ├── view │ │ │ ├── IInputMethodManager.java │ │ │ └── inputmethod │ │ │ │ └── InputMethodManager.java │ │ │ ├── telephony │ │ │ ├── PhoneConstantsMtk.java │ │ │ ├── ISms.java │ │ │ ├── IMms.java │ │ │ └── ITelephony.java │ │ │ ├── content │ │ │ └── ReferrerIntent.java │ │ │ ├── os │ │ │ ├── UserManager.java │ │ │ └── IVibratorService.java │ │ │ ├── policy │ │ │ └── PhoneWindow.java │ │ │ └── app │ │ │ └── IAppOpsService.java │ │ ├── MethodParams.java │ │ ├── MethodReflectParams.java │ │ ├── java │ │ └── lang │ │ │ ├── ThreadGroup.java │ │ │ └── ThreadGroupN.java │ │ └── dalvik │ │ └── system │ │ └── VMRuntime.java │ ├── res │ ├── values │ │ ├── integer.xml │ │ └── strings.xml │ ├── layout │ │ └── custom_notification_lite.xml │ ├── values-uk │ │ └── strings.xml │ └── values-ru │ │ └── strings.xml │ └── jni │ ├── Application.mk │ ├── fb │ ├── jni │ │ ├── java │ │ │ ├── BUCK │ │ │ └── CppException.java │ │ └── OnLoad.cpp │ ├── include │ │ ├── fb │ │ │ ├── visibility.h │ │ │ ├── nonmovable.h │ │ │ ├── noncopyable.h │ │ │ └── Build.h │ │ └── jni │ │ │ └── JniTerminateHandler.h │ └── Doxyfile │ ├── Foundation │ ├── SymbolFinder.h │ └── Path.h │ ├── Substrate │ └── SubstrateHook.h │ └── Jni │ └── VAJni.h ├── bond.jks ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties └── .gitignore /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /launcher/MODULE_LICENSE_APACHE2: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | .externalNativeBuild/ 3 | obj/ 4 | -------------------------------------------------------------------------------- /bond.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/bond.jks -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':lib', ':app', ':launcher' 2 | rootProject.name="VirtualDump" 3 | -------------------------------------------------------------------------------- /launcher/tests/res/raw/db_schema_v10.json: -------------------------------------------------------------------------------- 1 | { 2 | "version" : 10, 3 | "downgrade_to_9" : [] 4 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/os/VUserInfo.aidl: -------------------------------------------------------------------------------- 1 | // VUserInfo.aidl 2 | package com.lody.virtual.os; 3 | 4 | parcelable VUserInfo; -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/home_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/home_bg.png -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/Problem.aidl: -------------------------------------------------------------------------------- 1 | // Problem.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable Problem; -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-hdpi/ic_add.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-hdpi/ic_menu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_vs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_vs.png -------------------------------------------------------------------------------- /launcher/res/drawable-hdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-hdpi/ic_allapps.png -------------------------------------------------------------------------------- /launcher/res/drawable-mdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-mdpi/ic_allapps.png -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/ic_allapps.png -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/vloc/VCell.aidl: -------------------------------------------------------------------------------- 1 | // VCell.aidl 2 | package com.lody.virtual.remote.vloc; 3 | 4 | parcelable VCell; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/vloc/VWifi.aidl: -------------------------------------------------------------------------------- 1 | // VWifi.aidl 2 | package com.lody.virtual.remote.vloc; 3 | 4 | parcelable VWifi; -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-hdpi/ic_check.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_crash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-hdpi/ic_crash.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_about.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_wifi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_wifi.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /launcher/assets/fonts/GoogleSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/assets/fonts/GoogleSans-Regular.ttf -------------------------------------------------------------------------------- /launcher/res/drawable-hdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-hdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-mdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-mdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/ic_allapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/ic_allapps.png -------------------------------------------------------------------------------- /launcher/res/mipmap-hdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-hdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /launcher/res/mipmap-mdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-mdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/AppTaskInfo.aidl: -------------------------------------------------------------------------------- 1 | // AppTaskInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable AppTaskInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/BadgerInfo.aidl: -------------------------------------------------------------------------------- 1 | // BadgerInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable BadgerInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/VDeviceInfo.aidl: -------------------------------------------------------------------------------- 1 | // VDeviceInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable VDeviceInfo; -------------------------------------------------------------------------------- /app/src/main/assets/XposedInstaller_3.1.5.apk_: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/assets/XposedInstaller_3.1.5.apk_ -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_no_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-hdpi/ic_no_check.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_shortcut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-hdpi/ic_shortcut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_account.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_device.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_device.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_reboot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_reboot.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xhdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xhdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xxhdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xxhdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/InstallResult.aidl: -------------------------------------------------------------------------------- 1 | // InstallResult.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable InstallResult; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/ReceiverInfo.aidl: -------------------------------------------------------------------------------- 1 | // ReceiverInfo.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable ReceiverInfo; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/vloc/VLocation.aidl: -------------------------------------------------------------------------------- 1 | // VLocation.aidl 2 | package com.lody.virtual.remote.vloc; 3 | 4 | parcelable VLocation; -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-hdpi/ic_add_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_settings.png -------------------------------------------------------------------------------- /launcher/res/drawable-hdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-hdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /launcher/res/drawable-hdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-hdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-mdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-mdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /launcher/res/drawable-mdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-mdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/ic_hotseat_addapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/ic_hotseat_addapp.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxxhdpi/workspace_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxxhdpi/workspace_bg.9.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xxxhdpi/ic_launcher_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xxxhdpi/ic_launcher_home.png -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/InstalledAppInfo.aidl: -------------------------------------------------------------------------------- 1 | // AppSetting.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable InstalledAppInfo; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .idea 7 | .DS_Store 8 | /build 9 | /captures 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_donate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_menu_donate.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/app/src/main/res/drawable-xxhdpi/ic_notification.png -------------------------------------------------------------------------------- /launcher/res/drawable-hdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-hdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-mdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-mdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/ic_allapps_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/ic_allapps_pressed.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/ic_hotseat_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/ic_hotseat_settings.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /launcher/res/values-sw600dp/config.xml: -------------------------------------------------------------------------------- 1 | 2 | true 3 | true 4 | 5 | -------------------------------------------------------------------------------- /launcher/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -2 4 | -------------------------------------------------------------------------------- /launcher/res/drawable-hdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-hdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /launcher/res/drawable-hdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-hdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-mdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-mdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /launcher/res/drawable-mdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-mdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xhdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xhdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxxhdpi/widget_resize_frame.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxxhdpi/widget_resize_frame.9.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxxhdpi/workspace_bg_dark.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxxhdpi/workspace_bg_dark.9.png -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/PendingIntentData.aidl: -------------------------------------------------------------------------------- 1 | // PendingIntentData.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable PendingIntentData; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/PendingResultData.aidl: -------------------------------------------------------------------------------- 1 | // PendingResultData.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable PendingResultData; -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/remote/VParceledListSlice.aidl: -------------------------------------------------------------------------------- 1 | // VParceledListSlice.aidl 2 | package com.lody.virtual.remote; 3 | 4 | parcelable VParceledListSlice; -------------------------------------------------------------------------------- /launcher/res/drawable-xxhdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxhdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxxhdpi/ic_widget_resize_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxxhdpi/ic_widget_resize_handle.png -------------------------------------------------------------------------------- /launcher/res/drawable-xxxhdpi/widget_resize_shadow.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/drawable-xxxhdpi/widget_resize_shadow.9.png -------------------------------------------------------------------------------- /launcher/res/mipmap-hdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-hdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /launcher/res/mipmap-hdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-hdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /launcher/res/mipmap-mdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-mdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /launcher/res/mipmap-mdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-mdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xhdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xhdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xhdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xhdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/pm/installer/SessionInfo.aidl: -------------------------------------------------------------------------------- 1 | // SessionInfo.aidl 2 | package com.lody.virtual.server.pm.installer; 3 | 4 | parcelable SessionInfo; -------------------------------------------------------------------------------- /lib/src/main/java/android/app/LoadedApk.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | /** 4 | * @author weishu 5 | * @date 2018/8/7. 6 | */ 7 | public class LoadedApk { 8 | } 9 | -------------------------------------------------------------------------------- /launcher/res/mipmap-xxhdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xxhdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xxhdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xxhdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xxxhdpi/ic_launcher_home_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xxxhdpi/ic_launcher_home_background.png -------------------------------------------------------------------------------- /launcher/res/mipmap-xxxhdpi/ic_launcher_home_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LiveSalton/VirtualDump/HEAD/launcher/res/mipmap-xxxhdpi/ic_launcher_home_foreground.png -------------------------------------------------------------------------------- /launcher/res/values-sw720dp-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -50.0dip 4 | 5 | -------------------------------------------------------------------------------- /lib/src/main/res/values/integer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 4 | -------------------------------------------------------------------------------- /launcher/src/com/android/launcher3/OnAlarmListener.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | public interface OnAlarmListener { 4 | public void onAlarm(Alarm alarm); 5 | } 6 | -------------------------------------------------------------------------------- /lib/src/main/aidl/android/content/ISyncStatusObserver.aidl: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | 4 | interface ISyncStatusObserver { 5 | void onStatusChanged(int which); 6 | } 7 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/pm/installer/SessionParams.aidl: -------------------------------------------------------------------------------- 1 | // SessionParams.aidl 2 | package com.lody.virtual.server.pm.installer; 3 | 4 | parcelable SessionParams; -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/BasePresenter.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public interface BasePresenter { 7 | void start(); 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/main/aidl/android/app/IActivityManager/ContentProviderHolder.aidl: -------------------------------------------------------------------------------- 1 | // ContentProviderHolder.aidl 2 | package android.app.IActivityManager; 3 | 4 | parcelable ContentProviderHolder; -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/Callback.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public interface Callback { 8 | void callback(T result); 9 | } 10 | -------------------------------------------------------------------------------- /launcher/src/amirz/aidlbridge/Bridge.aidl: -------------------------------------------------------------------------------- 1 | package amirz.aidlbridge; 2 | 3 | import amirz.aidlbridge.BridgeCallback; 4 | 5 | interface Bridge { 6 | oneway void setCallback(in int index, in BridgeCallback cb); 7 | } 8 | -------------------------------------------------------------------------------- /launcher/src/amirz/aidlbridge/BridgeCallback.aidl: -------------------------------------------------------------------------------- 1 | package amirz.aidlbridge; 2 | 3 | interface BridgeCallback { 4 | oneway void onBridgeConnected(in IBinder service); 5 | 6 | oneway void onBridgeDisconnected(); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/pm/installer/PackageInstallInfo.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server.pm.installer; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class PackageInstallInfo { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/main/jni/Application.mk: -------------------------------------------------------------------------------- 1 | APP_ABI := x86 armeabi-v7a 2 | APP_PLATFORM := android-14 3 | APP_STL := c++_static 4 | APP_OPTIM := release 5 | VA_ROOT := $(call my-dir) 6 | NDK_MODULE_PATH := $(NDK_MODULE_PATH):$(VA_ROOT) -------------------------------------------------------------------------------- /launcher/res/values/bridge.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0xB662CC2F 4 | v2 5 | -------------------------------------------------------------------------------- /lib/src/main/java/android/app/ActivityThread.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | /** 4 | * @author weishu 5 | * @date 2018/8/7. 6 | */ 7 | public class ActivityThread { 8 | public static class ActivityClientRecord {} 9 | } 10 | -------------------------------------------------------------------------------- /launcher/src/com/google/android/apps/nexuslauncher/smartspace/ISmartspace.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.smartspace; 2 | 3 | public interface ISmartspace { 4 | void cq(); 5 | 6 | void cr(final SmartspaceDataContainer p0); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IClipboard.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import mirror.RefClass; 4 | 5 | public class IClipboard { 6 | public static Class TYPE = RefClass.load(IClipboard.class, "android.content.IClipboard"); 7 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/libcore/io/Os.java: -------------------------------------------------------------------------------- 1 | package mirror.libcore.io; 2 | 3 | import mirror.RefClass; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class Os { 10 | public static Class TYPE = RefClass.load(Os.class, "libcore.io.Os"); 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/core/CrashHandler.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.core; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public interface CrashHandler { 8 | 9 | void handleUncaughtException(Thread t, Throwable e); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /launcher/res/layout/zzz_weight_watcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /launcher/src/com/google/android/libraries/gsa/launcherclient/ISerializableScrollCallback.java: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.gsa.launcherclient; 2 | 3 | public interface ISerializableScrollCallback extends IScrollCallback { 4 | void setPersistentFlags(int flags); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/blue_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/home_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /launcher/.gitignore: -------------------------------------------------------------------------------- 1 | db_files 2 | *.iml 3 | .project 4 | .classpath 5 | .project.properties 6 | gen/ 7 | tests/stress/gen/ 8 | WallpaperPicker/gen/ 9 | WallpaperPicker/.project.properties 10 | bin/ 11 | .idea/ 12 | .gradle/ 13 | local.properties 14 | gradle/ 15 | build/ 16 | gradlew* -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_clone_app_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Oct 29 11:05:44 CST 2018 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip 7 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IAppRequestListener.aidl: -------------------------------------------------------------------------------- 1 | // IAppRequestListener.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IAppRequestListener { 5 | void onRequestInstall(in String path); 6 | void onRequestUninstall(in String pkg); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/ipc/ActivityClientRecord.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.ipc; 2 | 3 | import android.app.Activity; 4 | import android.content.pm.ActivityInfo; 5 | 6 | public class ActivityClientRecord { 7 | public Activity activity; 8 | public ActivityInfo info; 9 | } -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/java/BUCK: -------------------------------------------------------------------------------- 1 | include_defs("//ReactAndroid/DEFS") 2 | 3 | java_library( 4 | name = "java", 5 | srcs = glob(["**/*.java"]), 6 | visibility = ["PUBLIC"], 7 | deps = [ 8 | "//java/com/facebook/proguard/annotations:annotations", 9 | ], 10 | ) 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_clone_app_btn_pressed.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/fitTextView.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /launcher/src/com/google/android/libraries/gsa/launcherclient/StaticInteger.java: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.gsa.launcherclient; 2 | 3 | public class StaticInteger { 4 | public final int mData; 5 | 6 | public StaticInteger(int data) { 7 | mData = data; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/icon_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /launcher/src/com/google/android/libraries/gsa/launcherclient/IScrollCallback.java: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.gsa.launcherclient; 2 | 3 | public interface IScrollCallback { 4 | void onOverlayScrollChanged(float progress); 5 | 6 | void onServiceStateChanged(boolean overlayAttached); 7 | } 8 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IUiCallback.aidl: -------------------------------------------------------------------------------- 1 | // IUiCallback.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IUiCallback { 5 | void onAppOpened(in String packageName, in int userId); 6 | void onOpenFailed(in String packageName, in int userId); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/jni/Foundation/SymbolFinder.h: -------------------------------------------------------------------------------- 1 | #ifndef SYMBOL_FINDER 2 | #define SYMBOL_FINDER 3 | 4 | #include 5 | 6 | extern int find_name(pid_t pid, const char *name,const char *libn, unsigned long *addr); 7 | extern int find_libbase(pid_t pid, const char *libn, unsigned long *addr); 8 | #endif 9 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/hardware/display/IDisplayManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.hardware.display; 2 | 3 | import mirror.RefClass; 4 | 5 | public class IDisplayManager { 6 | public static Class TYPE = RefClass.load(IDisplayManager.class, "android.hardware.display.IDisplayManager"); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_clone_app_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/src/main/jni/Foundation/Path.h: -------------------------------------------------------------------------------- 1 | // 2 | // VirtualApp Native Project 3 | // 4 | 5 | #ifndef FOUNDATION_PATH 6 | #define FOUNDATION_PATH 7 | 8 | #include 9 | 10 | int get_last_slash_pos(char *s); 11 | 12 | char* canonicalize_filename(const char *str); 13 | 14 | 15 | #endif //FOUNDATION_PATH 16 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IServiceFetcher.aidl: -------------------------------------------------------------------------------- 1 | // IServiceFetcher.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IServiceFetcher { 5 | IBinder getService(String name); 6 | void addService(String name,in IBinder service); 7 | void removeService(String name); 8 | } -------------------------------------------------------------------------------- /launcher/src/com/google/android/libraries/launcherclient/ILauncherOverlayCallback.aidl: -------------------------------------------------------------------------------- 1 | package com.google.android.libraries.launcherclient; 2 | 3 | interface ILauncherOverlayCallback { 4 | 5 | oneway void overlayScrollChanged(float progress); 6 | 7 | oneway void overlayStatusChanged(int status); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/IBinderDelegateService.aidl: -------------------------------------------------------------------------------- 1 | // IBinderDelegateService.aidl 2 | package com.lody.virtual.server; 3 | 4 | import android.content.ComponentName; 5 | 6 | interface IBinderDelegateService { 7 | 8 | ComponentName getComponent(); 9 | 10 | IBinder getService(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/view/IInputMethodManager.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.view; 2 | 3 | import mirror.RefClass; 4 | 5 | public class IInputMethodManager { 6 | public static Class TYPE = RefClass.load(IInputMethodManager.class, "com.android.internal.view.IInputMethodManager"); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IProcessObserver.aidl: -------------------------------------------------------------------------------- 1 | // IProcessObserver.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IProcessObserver { 5 | void onProcessCreated(in String pkg, in String processName); 6 | 7 | void onProcessDied(in String pkg, in String processName); 8 | } 9 | -------------------------------------------------------------------------------- /launcher/tests/res/layout/test_layout_appwidget_red.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IContentProvider.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import mirror.RefClass; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class IContentProvider { 10 | public static Class TYPE = RefClass.load(IContentProvider.class, "android.content.IContentProvider"); 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/StrictMode.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefStaticInt; 6 | 7 | public class StrictMode { 8 | public static Class TYPE = RefClass.load(StrictMode.class, "android.os.StrictMode"); 9 | public static RefStaticInt sVmPolicyMask; 10 | } -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/abs/BaseView.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.abs; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | public interface BaseView { 10 | Activity getActivity(); 11 | Context getContext(); 12 | void setPresenter(T presenter); 13 | } 14 | -------------------------------------------------------------------------------- /launcher/tests/res/layout/test_layout_appwidget_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/providers/InternalProviderHook.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.providers; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class InternalProviderHook extends ProviderHook { 8 | 9 | public InternalProviderHook(Object base) { 10 | super(base); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Handler.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class Handler { 8 | public static Class TYPE = RefClass.load(Handler.class, "android.os.Handler"); 9 | public static RefObject mCallback; 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/Build.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual; 2 | 3 | /** 4 | * 5 | * Version info of VirtualApp project. 6 | * 7 | * @author Lody 8 | * 9 | */ 10 | 11 | public class Build { 12 | 13 | public static final String VERSION_NAME = "Build-823-01"; 14 | 15 | public static final int VERSION_CODE = 8230001; 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/IDeviceInfoManager.aidl: -------------------------------------------------------------------------------- 1 | // IDeviceInfoManager.aidl 2 | package com.lody.virtual.server; 3 | 4 | import com.lody.virtual.remote.VDeviceInfo; 5 | 6 | interface IDeviceInfoManager { 7 | 8 | VDeviceInfo getDeviceInfo(int userId); 9 | 10 | void updateDeviceInfo(int userId, in VDeviceInfo info); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/BundleICS.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.Parcel; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | 9 | public class BundleICS { 10 | public static Class TYPE = RefClass.load(BundleICS.class, "android.os.Bundle"); 11 | public static RefObject mParcelledData; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/badger/IBadger.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.badger; 2 | 3 | import android.content.Intent; 4 | 5 | import com.lody.virtual.remote.BadgerInfo; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | public interface IBadger { 11 | 12 | String getAction(); 13 | 14 | BadgerInfo handleBadger(Intent intent); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/PackageUserState.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefConstructor; 5 | 6 | public class PackageUserState { 7 | public static Class TYPE = RefClass.load(PackageUserState.class, "android.content.pm.PackageUserState"); 8 | public static RefConstructor ctor; 9 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/EncodeUtils.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | import android.util.Base64; 4 | 5 | /** 6 | * @author weishu 7 | * @date 18/3/20. 8 | */ 9 | public class EncodeUtils { 10 | 11 | public static String decode(String base64) { 12 | return new String(Base64.decode(base64, 0)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/BaseBundle.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.Parcel; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | 9 | public class BaseBundle { 10 | public static Class TYPE = RefClass.load(BaseBundle.class, "android.os.BaseBundle"); 11 | public static RefObject mParcelledData; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/libcore/io/ForwardingOs.java: -------------------------------------------------------------------------------- 1 | package mirror.libcore.io; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefObject; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class ForwardingOs { 11 | public static Class TYPE = RefClass.load(ForwardingOs.class, "libcore.io.ForwardingOs"); 12 | public static RefObject os; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/libcore/io/Libcore.java: -------------------------------------------------------------------------------- 1 | package mirror.libcore.io; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticObject; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class Libcore { 11 | public static Class TYPE = RefClass.load(Libcore.class, "libcore.io.Libcore"); 12 | 13 | public static RefStaticObject os; 14 | } 15 | -------------------------------------------------------------------------------- /launcher/res/xml/backupscheme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Build.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefStaticObject; 6 | 7 | public class Build { 8 | public static Class TYPE = RefClass.load(Build.class, android.os.Build.class); 9 | public static RefStaticObject DEVICE; 10 | public static RefStaticObject SERIAL; 11 | } -------------------------------------------------------------------------------- /app/src/main/res/values-en/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | VirtualXposed 4 | Upgrade now 5 | If you want to install apk from external storage, please give VirtualXposed the permission. 6 | 7 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/MethodParams.java: -------------------------------------------------------------------------------- 1 | package mirror; 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 | @Target({ElementType.FIELD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface MethodParams { 11 | Class[] value(); 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/rms/resource/ReceiverResourceM.java: -------------------------------------------------------------------------------- 1 | package mirror.android.rms.resource; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class ReceiverResourceM { 8 | public static Class TYPE = RefClass.load(ReceiverResourceM.class, "android.rms.resource.ReceiverResource"); 9 | public static RefObject mWhiteList; 10 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/Display.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class Display { 9 | public static Class TYPE = RefClass.load(Display.class, android.view.Display.class); 10 | public static RefStaticObject sWindowManager; 11 | } 12 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/compat/ObjectsCompat.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.compat; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class ObjectsCompat { 8 | 9 | /** 10 | * Null-safe equivalent of {@code a.equals(b)}. 11 | */ 12 | public static boolean equals(Object a, Object b) { 13 | return (a == null) ? (b == null) : a.equals(b); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/rms/resource/ReceiverResourceLP.java: -------------------------------------------------------------------------------- 1 | package mirror.android.rms.resource; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class ReceiverResourceLP { 8 | public static Class TYPE = RefClass.load(ReceiverResourceLP.class, "android.rms.resource.ReceiverResource"); 9 | public static RefObject mResourceConfig; 10 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/widget/Toast.java: -------------------------------------------------------------------------------- 1 | package mirror.android.widget; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class Toast { 9 | public static Class TYPE = RefClass.load(Toast.class, android.widget.Toast.class); 10 | 11 | public static RefStaticObject sService; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/MethodReflectParams.java: -------------------------------------------------------------------------------- 1 | package mirror; 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 | @Target({ElementType.FIELD}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface MethodReflectParams { 11 | String[] value(); 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/LoadedApkHuaWei.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefObject; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class LoadedApkHuaWei { 11 | public static Class TYPE = RefClass.load(LoadedApkHuaWei.class, "android.app.LoadedApk"); 12 | public static RefObject mReceiverResource; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Process.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import mirror.RefClass; 4 | import mirror.MethodParams; 5 | import mirror.RefStaticMethod; 6 | 7 | public class Process { 8 | public static Class TYPE = RefClass.load(Process.class, android.os.Process.class); 9 | @MethodParams({String.class}) 10 | public static RefStaticMethod setArgV0; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/ReflectException.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public class ReflectException extends RuntimeException { 7 | 8 | public ReflectException(String message, Throwable cause) { 9 | super(message, cause); 10 | } 11 | 12 | public ReflectException(Throwable cause) { 13 | super(cause); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /launcher/res/values-ja/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d分 5 | %d分 6 | 7 | 8 | %d時間 9 | %d時間 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-ko/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d분 5 | %d분 6 | 7 | 8 | %d시간 9 | %d시간 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/util/Singleton.java: -------------------------------------------------------------------------------- 1 | package mirror.android.util; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | import mirror.RefMethod; 7 | 8 | public class Singleton { 9 | public static Class TYPE = RefClass.load(Singleton.class, "android.util.Singleton"); 10 | public static RefMethod get; 11 | public static RefObject mInstance; 12 | } 13 | -------------------------------------------------------------------------------- /launcher/res/values-hy/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ր 5 | %d ր 6 | 7 | 8 | %d ժ 9 | %d ժ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-km/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ន 5 | %d ន 6 | 7 | 8 | %d ម៉ 9 | %d ម៉ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentResolverJBMR2.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.ContentResolver; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContentResolverJBMR2 { 9 | public static Class Class = RefClass.load(ContentResolverJBMR2.class, ContentResolver.class);; 10 | public static RefObject mPackageName; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/webkit/WebViewFactory.java: -------------------------------------------------------------------------------- 1 | package mirror.android.webkit; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticMethod; 5 | 6 | /** 7 | * @author CodeHz 8 | */ 9 | 10 | public class WebViewFactory { 11 | public static Class TYPE = RefClass.load(WebViewFactory.class, "android.webkit.WebViewFactory"); 12 | public static RefStaticMethod getUpdateService; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/PhoneConstantsMtk.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticInt; 5 | 6 | public class PhoneConstantsMtk { 7 | public static Class TYPE = RefClass.load(PhoneConstantsMtk.class, "com.android.internal.telephony.PhoneConstants"); 8 | public static RefStaticInt GEMINI_SIM_NUM; 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/main/jni/Substrate/SubstrateHook.h: -------------------------------------------------------------------------------- 1 | #ifndef __SUBSTRATEHOOK_H__ 2 | #define __SUBSTRATEHOOK_H__ 3 | 4 | 5 | #include 6 | 7 | #define _extern extern "C" __attribute__((__visibility__("default"))) 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | void MSHookFunction(void *symbol, void *replace, void **result); 14 | 15 | #ifdef __cplusplus 16 | } 17 | #endif 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /launcher/res/values-am/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ደቂቃ 5 | %d ደቂቃ 6 | 7 | 8 | %d ሰዓ 9 | %d ሰዓ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-bg/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | 7 | 8 | %d ч 9 | %d ч 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-ca/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-da/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | 7 | 8 | %d t. 9 | %d t. 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-de/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-el/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d λ. 5 | %d λ. 6 | 7 | 8 | %d ώ. 9 | %d ώ. 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-es-rUS/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-es/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-et/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-eu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-fi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-fr-rCA/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-fr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-gl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-in/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d mnt 5 | %d mnt 6 | 7 | 8 | %d jam 9 | %d jam 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-it/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-ka/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d წთ 5 | %d წთ 6 | 7 | 8 | %d სთ 9 | %d სთ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-kk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | 7 | 8 | %d сағ 9 | %d сағ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-ky/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мүн. 5 | %d мүн. 6 | 7 | 8 | %d с. 9 | %d с. 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-lo/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ນທ 5 | %d ນທ 6 | 7 | 8 | %d ຊມ 9 | %d ຊມ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-mn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | 7 | 8 | %d цаг 9 | %d цаг 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-mr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d मि 5 | %d मि 6 | 7 | 8 | %d ता 9 | %d ता 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-ms/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d jam 9 | %d jam 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-nb/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d t 9 | %d t 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-nl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d u 9 | %d u 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-pt-rPT/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-pt/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d h 9 | %d h 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-sv/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d tim 9 | %d tim 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-te/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d నిమి 5 | %d నిమి 6 | 7 | 8 | %d గం 9 | %d గం 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-tr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d dk. 5 | %d dk. 6 | 7 | 8 | %d sa. 9 | %d sa. 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-zh-rCN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d 分钟 5 | %d 分钟 6 | 7 | 8 | %d 小时 9 | %d 小时 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-zh-rHK/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d 分鐘 5 | %d 分鐘 6 | 7 | 8 | %d 小時 9 | %d 小時 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-zh-rTW/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d 分鐘 5 | %d 分鐘 6 | 7 | 8 | %d 小時 9 | %d 小時 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/PendingIntentJBMR2.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.app.PendingIntent; 4 | import android.content.Intent; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | 9 | public class PendingIntentJBMR2 { 10 | public static Class Class = RefClass.load(PendingIntentJBMR2.class, PendingIntent.class); 11 | public static RefMethod getIntent; 12 | } -------------------------------------------------------------------------------- /launcher/res/values-af/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | 7 | 8 | %d uur 9 | %d uur 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-az/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d dəq 5 | %d dəq 6 | 7 | 8 | %d saat 9 | %d saat 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-en-rAU/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-en-rGB/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-en-rIN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | 7 | 8 | %d hr 9 | %d hr 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-hi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d मिनट 5 | %d मिनट 6 | 7 | 8 | %d घंटे 9 | %d घंटे 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-hu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d perc 5 | %d perc 6 | 7 | 8 | %d óra 9 | %d óra 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-mk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин. 5 | %d мин. 6 | 7 | 8 | %d часа 9 | %d час 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-pa/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ਮਿੰਟ 5 | %d ਮਿੰਟ 6 | 7 | 8 | %d ਘੰਟੇ 9 | %d ਘੰਟਾ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-si/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | මිනි %d 5 | මිනි %d 6 | 7 | 8 | පැය %d 9 | පැය %d 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-sq/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | 7 | 8 | %d orë 9 | %d orë 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-th/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d นาที 5 | %d นาที 6 | 7 | 8 | %d ชม. 9 | %d ชม. 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-vi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d phút 5 | %d phút 6 | 7 | 8 | %d giờ 9 | %d giờ 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ClipboardManagerOreo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ClipboardManagerOreo { 9 | public static Class TYPE = RefClass.load(ClipboardManagerOreo.class, android.content.ClipboardManager.class); 10 | public static RefObject mService; 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/net/wifi/WifiScanner.java: -------------------------------------------------------------------------------- 1 | package mirror.android.net.wifi; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefStaticObject; 5 | 6 | public final class WifiScanner { 7 | public static Class Class; 8 | public static RefStaticObject GET_AVAILABLE_CHANNELS_EXTRA; 9 | 10 | static { 11 | RefClass.load(WifiScanner.class, "android.net.wifi.WifiScanner"); 12 | } 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/rms/resource/ReceiverResourceN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.rms.resource; 2 | 3 | 4 | import java.util.List; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefObject; 8 | 9 | public class ReceiverResourceN { 10 | public static Class TYPE = RefClass.load(ReceiverResourceN.class, "android.rms.resource.ReceiverResource"); 11 | public static RefObject> mWhiteList; 12 | } -------------------------------------------------------------------------------- /launcher/res/values-bn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d মিনিট 5 | %d মিনিট 6 | 7 | 8 | %d ঘণ্টা 9 | %d ঘণ্টা 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-fa/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏%d دقیقه 5 | ‏%d دقیقه 6 | 7 | 8 | ‏%d ساعت 9 | ‏%d ساعت 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-gu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d મિનિટ 5 | %d મિનિટ 6 | 7 | 8 | %d કલાક 9 | %d કલાક 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-is/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d mín. 5 | %d mín. 6 | 7 | 8 | %d klst. 9 | %d klst. 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-kn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d ನಿಮಿಷ 5 | %d ನಿಮಿಷ 6 | 7 | 8 | %d ಗಂಟೆ 9 | %d ಗಂಟೆ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-my/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d မိနစ် 5 | %d မိနစ် 6 | 7 | 8 | %d နာရီ 9 | %d နာရီ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-ne/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d मिनेट 5 | %d मिनेट 6 | 7 | 8 | %d घन्टा 9 | %d घन्टा 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-sw/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dakika %d 5 | Dakika %d 6 | 7 | 8 | Saa %d 9 | Saa %d 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-ta/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d நிமி. 5 | %d நிமி. 6 | 7 | 8 | %d ம.நே 9 | %d ம.நே 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-tl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d na min 5 | %d min 6 | 7 | 8 | %d na oras 9 | %d oras 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-uz/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d daqiqa 5 | %d daqiqa 6 | 7 | 8 | %d soat 9 | %d soat 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/StaticMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | 7 | public class StaticMethodProxy extends MethodProxy { 8 | 9 | private String mName; 10 | 11 | public StaticMethodProxy(String name) { 12 | this.mName = name; 13 | } 14 | 15 | @Override 16 | public String getMethodName() { 17 | return mName; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/ddm/DdmHandleAppName.java: -------------------------------------------------------------------------------- 1 | package mirror.android.ddm; 2 | 3 | import mirror.RefClass; 4 | import mirror.MethodParams; 5 | import mirror.RefStaticMethod; 6 | 7 | public class DdmHandleAppName { 8 | public static Class Class = RefClass.load(DdmHandleAppName.class, "android.ddm.DdmHandleAppName"); 9 | @MethodParams({String.class}) 10 | public static RefStaticMethod setAppName; 11 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Message.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import mirror.MethodParams; 4 | import mirror.RefClass; 5 | import mirror.RefMethod; 6 | import mirror.RefStaticMethod; 7 | 8 | public class Message { 9 | public static Class TYPE = RefClass.load(Message.class, android.os.Message.class); 10 | @MethodParams({int.class}) 11 | public static RefStaticMethod updateCheckRecycle; 12 | } -------------------------------------------------------------------------------- /launcher/res/values-ur/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏‎%d منٹ 5 | ‏‎%d منٹ 6 | 7 | 8 | ‏‎%d گھنٹہ 9 | ‏‎%d گھنٹہ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-zu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d iminithi 5 | %d iminithi 6 | 7 | 8 | %d ihora 9 | %d ihora 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentProviderClient.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContentProviderClient { 9 | public static Class Class = RefClass.load(ContentProviderClient.class, android.content.ContentProviderClient.class); 10 | public static RefObject mContentProvider; 11 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IntentFilter.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import java.util.List; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class IntentFilter { 13 | public static Class Class = RefClass.load(IntentFilter.class, android.content.IntentFilter.class); 14 | public static RefObject> mActions; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/WindowManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class WindowManagerGlobal { 9 | public static Class TYPE = RefClass.load(WindowManagerGlobal.class, "android.view.WindowManagerGlobal"); 10 | public static RefStaticObject sWindowManagerService; 11 | } 12 | -------------------------------------------------------------------------------- /launcher/res/values-ml/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d മിനിറ്റ് 5 | %d മിനിറ്റ് 6 | 7 | 8 | %d മണിക്കൂർ 9 | %d മണിക്കൂർ 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ContextImplICS.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import java.io.File; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContextImplICS { 9 | public static Class TYPE = RefClass.load(ContextImplICS.class, "android.app.ContextImpl"); 10 | public static RefObject mExternalCacheDir; 11 | public static RefObject mExternalFilesDir; 12 | } 13 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/core/InstallStrategy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.core; 2 | 3 | /** 4 | * @author Lody 5 | * 6 | * 7 | */ 8 | public interface InstallStrategy { 9 | int TERMINATE_IF_EXIST = 0x01 << 1; 10 | int UPDATE_IF_EXIST = 0x01 << 2; 11 | int COMPARE_VERSION = 0X01 << 3; 12 | int IGNORE_NEW_VERSION = 0x01 << 4; 13 | int DEPEND_SYSTEM_IF_EXIST = 0x01 << 5; 14 | int SKIP_DEX_OPT = 0x01 << 6; 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/res/menu/main_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | -------------------------------------------------------------------------------- /launcher/src/com/android/launcher3/CustomAppWidget.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | public interface CustomAppWidget { 4 | public String getLabel(); 5 | public int getPreviewImage(); 6 | public int getIcon(); 7 | public int getWidgetLayout(); 8 | 9 | public int getSpanX(); 10 | public int getSpanY(); 11 | public int getMinSpanX(); 12 | public int getMinSpanY(); 13 | public int getResizeMode(); 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/marks/FakeLocMark.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils.marks; 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 | @Target(ElementType.TYPE) 10 | @Retention(RetentionPolicy.SOURCE) 11 | public @interface FakeLocMark { 12 | String value() default ""; 13 | } -------------------------------------------------------------------------------- /launcher/res/values-ar-rXB/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏‮%d‬‏ ‏‮min‬‏ 5 | ‏‮%d‬‏ ‏‮min‬‏ 6 | 7 | 8 | ‏‮%d‬‏ ‏‮hr‬‏ 9 | ‏‮%d‬‏ ‏‮hr‬‏ 10 | 11 | 12 | -------------------------------------------------------------------------------- /launcher/res/values-en-rXA/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [»%d« ḿîñ one] 5 | [»%d« ḿîñ one] 6 | 7 | 8 | [»%d« ĥŕ one] 9 | [»%d« ĥŕ one] 10 | 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/delegate/TaskDescriptionDelegate.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.delegate; 2 | 3 | import android.annotation.TargetApi; 4 | import android.app.Activity; 5 | import android.app.ActivityManager; 6 | import android.os.Build; 7 | 8 | public interface TaskDescriptionDelegate { 9 | public ActivityManager.TaskDescription getTaskDescription(ActivityManager.TaskDescription oldTaskDescription); 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/marks/FakeDeviceMark.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils.marks; 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 | @Target(ElementType.TYPE) 10 | @Retention(RetentionPolicy.SOURCE) 11 | public @interface FakeDeviceMark { 12 | String value() default ""; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/ddm/DdmHandleAppNameJBMR1.java: -------------------------------------------------------------------------------- 1 | package mirror.android.ddm; 2 | 3 | import mirror.RefClass; 4 | import mirror.MethodParams; 5 | import mirror.RefStaticMethod; 6 | 7 | public class DdmHandleAppNameJBMR1 { 8 | public static Class Class = RefClass.load(DdmHandleAppNameJBMR1.class, "android.ddm.DdmHandleAppName"); 9 | @MethodParams({String.class, int.class}) 10 | public static RefStaticMethod setAppName; 11 | } -------------------------------------------------------------------------------- /lib/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 | } -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IPackageObserver.aidl: -------------------------------------------------------------------------------- 1 | // IPackageObserver.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | interface IPackageObserver { 5 | void onPackageInstalled(in String packageName); 6 | void onPackageUninstalled(in String packageName); 7 | void onPackageInstalledAsUser(in int userId, in String packageName); 8 | void onPackageUninstalledAsUser(in int userId, in String packageName); 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/SkipInject.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 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 | * @author Lody 10 | * 11 | */ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface SkipInject { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/proxies/wifi_scanner/WifiScannerStub.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.proxies.wifi_scanner; 2 | 3 | import com.lody.virtual.client.hook.base.BinderInvocationProxy; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class WifiScannerStub extends BinderInvocationProxy { 10 | 11 | public WifiScannerStub() { 12 | super(new GhostWifiScannerImpl(), "wifiscanner"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /launcher/res/drawable/gutter_horizontal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/RenderScript.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import java.io.File; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefStaticMethod; 8 | 9 | public class RenderScript { 10 | public static Class TYPE = RefClass.load(RenderScript.class, android.renderscript.RenderScript.class); 11 | @MethodParams({File.class}) 12 | public static RefStaticMethod setupDiskCache; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/webkit/IWebViewUpdateService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.webkit; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefMethod; 5 | 6 | /** 7 | * @author CodeHz 8 | */ 9 | 10 | public class IWebViewUpdateService { 11 | public static Class TYPE = RefClass.load(IWebViewUpdateService.class, "android.webkit.IWebViewUpdateService$Stub$Proxy"); 12 | 13 | public static RefMethod getCurrentWebViewPackageName; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/visibility.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | #define FBEXPORT __attribute__((visibility("default"))) 13 | -------------------------------------------------------------------------------- /launcher/tests/res/xml/appwidget_no_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/Inject.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 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 | * @author Lody 10 | * 11 | */ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface Inject { 15 | Class value(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/NotificationM.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | 4 | import android.app.Notification; 5 | import android.graphics.drawable.Icon; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefObject; 9 | 10 | public class NotificationM { 11 | public static Class TYPE = RefClass.load(NotificationM.class, Notification.class); 12 | public static RefObject mLargeIcon; 13 | public static RefObject mSmallIcon; 14 | } -------------------------------------------------------------------------------- /app/src/fdroid/java/io/virtualapp/delegate/MyVirtualInitializer.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.delegate; 2 | 3 | import android.app.Application; 4 | 5 | import com.lody.virtual.client.core.VirtualCore; 6 | 7 | /** 8 | * @author weishu 9 | * @date 2019/2/25. 10 | */ 11 | public class MyVirtualInitializer extends BaseVirtualInitializer { 12 | public MyVirtualInitializer(Application application, VirtualCore core) { 13 | super(application, core); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /launcher/res/values-sw720dp/config.xml: -------------------------------------------------------------------------------- 1 | 2 | true 3 | true 4 | 5 | 6 | 7 | 90 8 | 9 | 10 | false 11 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentResolver.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class ContentResolver { 13 | public static Class TYPE = RefClass.load(ContentResolver.class, android.content.ContentResolver.class); 14 | public static RefStaticObject sContentService; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/HardwareRenderer.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | 4 | import java.io.File; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class HardwareRenderer { 11 | public static Class TYPE = RefClass.load(HardwareRenderer.class, "android.view.HardwareRenderer"); 12 | @MethodParams({File.class}) 13 | public static RefStaticMethod setupDiskCache; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/ThreadedRenderer.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | 4 | import java.io.File; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ThreadedRenderer { 11 | public static Class TYPE = RefClass.load(ThreadedRenderer.class, "android.view.ThreadedRenderer"); 12 | @MethodParams({File.class}) 13 | public static RefStaticMethod setupDiskCache; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/view/inputmethod/InputMethodManager.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.view.inputmethod; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class InputMethodManager { 9 | public static Class TYPE = RefClass.load(InputMethodManager.class, android.view.inputmethod.InputMethodManager.class); 10 | public static RefObject mService; 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/marktet_map.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/AudioManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class AudioManager { 10 | public static Class TYPE = RefClass.load(AudioManager.class, android.media.AudioManager.class); 11 | public static RefStaticMethod getService; 12 | public static RefStaticObject sService; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/NeighboringCellInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefInt; 5 | 6 | /** 7 | * @author Lody 8 | */ 9 | 10 | public class NeighboringCellInfo { 11 | public static Class TYPE = RefClass.load(NeighboringCellInfo.class, android.telephony.NeighboringCellInfo.class); 12 | public static RefInt mLac; 13 | public static RefInt mCid; 14 | public static RefInt mRssi; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/java/lang/ThreadGroup.java: -------------------------------------------------------------------------------- 1 | package mirror.java.lang; 2 | 3 | 4 | import java.util.List; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefObject; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | public class ThreadGroup { 13 | public static Class TYPE = RefClass.load(ThreadGroup.class, java.lang.ThreadGroup.class); 14 | public static RefObject> groups; 15 | public static RefObject parent; 16 | } -------------------------------------------------------------------------------- /lib/src/main/res/layout/custom_notification_lite.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/models/AppInfo.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home.models; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class AppInfo { 10 | public String packageName; 11 | public String path; 12 | public boolean fastOpen; 13 | public Drawable icon; 14 | public CharSequence name; 15 | public CharSequence version; 16 | public int cloneCount; 17 | public boolean disableMultiVersion; 18 | } 19 | -------------------------------------------------------------------------------- /launcher/res/drawable/ic_kill_app.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/XmlSerializerAndParser.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | import org.xmlpull.v1.XmlPullParser; 4 | import org.xmlpull.v1.XmlPullParserException; 5 | import org.xmlpull.v1.XmlSerializer; 6 | 7 | import java.io.IOException; 8 | 9 | public interface XmlSerializerAndParser { 10 | void writeAsXml(T item, XmlSerializer out) throws IOException; 11 | T createFromXml(XmlPullParser parser) throws IOException, XmlPullParserException; 12 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/java/lang/ThreadGroupN.java: -------------------------------------------------------------------------------- 1 | package mirror.java.lang; 2 | 3 | 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | public class ThreadGroupN { 11 | public static Class Class = RefClass.load(ThreadGroupN.class, java.lang.ThreadGroup.class); 12 | public static RefObject ngroups; 13 | public static RefObject groups; 14 | public static RefObject parent; 15 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable-nodpi/ic_more.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_guide_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_location_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /launcher/res/values-bs/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /launcher/res/values-hr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /launcher/res/values-ro/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /launcher/res/values-sr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин 5 | %d мин 6 | %d мин 7 | 8 | 9 | %d ч 10 | %d ч 11 | %d ч 12 | 13 | 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ContextImplKitkat.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import java.io.File; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ContextImplKitkat { 9 | public static Class TYPE = RefClass.load(ContextImplKitkat.class, "android.app.ContextImpl"); 10 | public static RefObject mExternalCacheDirs; 11 | public static RefObject mExternalFilesDirs; 12 | public static RefObject mOpPackageName; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/SyncInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.accounts.Account; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | 9 | public class SyncInfo { 10 | public static Class TYPE = RefClass.load(SyncInfo.class, android.content.SyncInfo.class); 11 | @MethodParams({int.class, Account.class, String.class, long.class}) 12 | public static RefConstructor ctor; 13 | } -------------------------------------------------------------------------------- /launcher/res/values-lv/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d h 10 | %d h 11 | %d h 12 | 13 | 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/renderscript/RenderScriptCacheDir.java: -------------------------------------------------------------------------------- 1 | package mirror.android.renderscript; 2 | 3 | 4 | import java.io.File; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class RenderScriptCacheDir { 11 | public static Class TYPE = RefClass.load(RenderScriptCacheDir.class, "android.renderscript.RenderScriptCacheDir"); 12 | @MethodParams({File.class}) 13 | public static RefStaticMethod setupDiskCache; 14 | } -------------------------------------------------------------------------------- /launcher/res/values-b+sr+Latn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | 8 | 9 | %d č 10 | %d č 11 | %d č 12 | 13 | 14 | -------------------------------------------------------------------------------- /lib/src/main/jni/Jni/VAJni.h: -------------------------------------------------------------------------------- 1 | // 2 | // VirtualApp Native Project 3 | // 4 | 5 | #ifndef NDK_CORE_H 6 | #define NDK_CORE_H 7 | 8 | #include 9 | #include 10 | 11 | 12 | #include "Helper.h" 13 | #include "Foundation/VMPatch.h" 14 | #include "Foundation/IOUniformer.h" 15 | 16 | extern alias_ref nativeEngineClass; 17 | 18 | JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved); 19 | JNIEXPORT void JNICALL JNI_OnUnload(JavaVM* vm, void* reserved); 20 | 21 | 22 | #endif //NDK_CORE_H 23 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/utils/DialogUtil.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.utils; 2 | 3 | import android.support.v7.app.AlertDialog; 4 | 5 | /** 6 | * @author weishu 7 | * @date 2018/7/5. 8 | */ 9 | public class DialogUtil { 10 | public static void showDialog(AlertDialog dialog) { 11 | if (dialog == null) { 12 | return; 13 | } 14 | try { 15 | dialog.show(); 16 | } catch (Throwable e) { 17 | e.printStackTrace(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ClipboardManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class ClipboardManager { 10 | public static Class TYPE = RefClass.load(ClipboardManager.class, android.content.ClipboardManager.class); 11 | public static RefStaticMethod getService; 12 | public static RefStaticObject sService; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/UserInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | 4 | import mirror.MethodParams; 5 | import mirror.RefClass; 6 | import mirror.RefConstructor; 7 | import mirror.RefStaticInt; 8 | 9 | public class UserInfo { 10 | public static Class TYPE = RefClass.load(UserInfo.class, "android.content.pm.UserInfo"); 11 | public static RefStaticInt FLAG_PRIMARY; 12 | @MethodParams({int.class, String.class, int.class}) 13 | public static RefConstructor ctor; 14 | } -------------------------------------------------------------------------------- /launcher/res/drawable/ic_clear_app.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ActivityManagerNative.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefStaticObject; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ActivityManagerNative { 11 | public static Class TYPE = RefClass.load(ActivityManagerNative.class, "android.app.ActivityManagerNative"); 12 | public static RefStaticObject gDefault; 13 | public static RefStaticMethod getDefault; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/NotificationManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class NotificationManager { 10 | public static Class TYPE = RefClass.load(NotificationManager.class, "android.app.NotificationManager"); 11 | 12 | public static RefStaticMethod getService; 13 | public static RefStaticObject sService; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /launcher/src/com/android/launcher3/AppFilter.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | import android.content.ComponentName; 4 | import android.content.Context; 5 | import android.os.UserHandle; 6 | 7 | public class AppFilter { 8 | 9 | public static AppFilter newInstance(Context context) { 10 | return Utilities.getOverrideObject(AppFilter.class, context, R.string.app_filter_class); 11 | } 12 | 13 | public boolean shouldShowApp(ComponentName app, UserHandle user) { 14 | return true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IActivityManagerICS.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | import mirror.RefClass; 6 | import mirror.RefMethod; 7 | import mirror.MethodParams; 8 | 9 | public class IActivityManagerICS { 10 | public static Class TYPE = RefClass.load(IActivityManagerICS.class, "android.app.IActivityManager"); 11 | @MethodParams({IBinder.class, int.class, Intent.class}) 12 | public static RefMethod finishActivity; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/net/wifi/WifiSsid.java: -------------------------------------------------------------------------------- 1 | package mirror.android.net.wifi; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | @TargetApi(Build.VERSION_CODES.KITKAT) 14 | public class WifiSsid { 15 | public static final Class TYPE = RefClass.load(WifiSsid.class, "android.net.wifi.WifiSsid"); 16 | public static RefStaticMethod createFromAsciiEncoded; 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/interfaces/IIntentFilterObserver.aidl: -------------------------------------------------------------------------------- 1 | // IIntentFilterObserver.aidl 2 | package com.lody.virtual.server.interfaces; 3 | 4 | // Declare any non-default types here with import statements 5 | 6 | interface IIntentFilterObserver { 7 | /** 8 | * Demonstrates some basic types that you can use as parameters 9 | * and return values in AIDL. 10 | */ 11 | 12 | Intent filter(in Intent intent); 13 | void setCallBack(IBinder callBack); 14 | IBinder getCallBack(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ILauncherApps.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticMethod; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | public class ILauncherApps { 12 | 13 | public static final class Stub { 14 | public static Class TYPE = RefClass.load(ILauncherApps.class, "android.content.pm.ILauncherApps$Stub"); 15 | public static RefStaticMethod asInterface; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /launcher/src/com/android/launcher3/LauncherProviderChangeListener.java: -------------------------------------------------------------------------------- 1 | package com.android.launcher3; 2 | 3 | /** 4 | * This class is a listener for {@link LauncherProvider} changes. It gets notified in the 5 | * sendNotify method. This listener is needed because by default the Launcher suppresses 6 | * standard data change callbacks. 7 | */ 8 | public interface LauncherProviderChangeListener { 9 | 10 | void onLauncherProviderChanged(); 11 | 12 | void onExtractedColorsChanged(); 13 | 14 | void onAppWidgetHostReset(); 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/hardware/display/DisplayManagerGlobal.java: -------------------------------------------------------------------------------- 1 | package mirror.android.hardware.display; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | import mirror.RefStaticMethod; 8 | 9 | public class DisplayManagerGlobal { 10 | public static Class TYPE = RefClass.load(DisplayManagerGlobal.class, "android.hardware.display.DisplayManagerGlobal"); 11 | public static RefStaticMethod getInstance; 12 | public static RefObject mDm; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Встановлювач VirtualPackage 4 | Адмін 5 | Вибрати 6 | Пустий вибір 7 | Немає додатків для пошуку 8 | Додати акаунт 9 | Цей ярлик вже існує 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/VCommends.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp; 2 | 3 | /** 4 | * @author Lody 5 | */ 6 | public class VCommends { 7 | 8 | public static final String TAG_NEW_VERSION = "First launch new Version"; 9 | public static final String TAG_SHOW_ADD_APP_GUIDE = "Should show add app guide"; 10 | 11 | public static final int REQUEST_SELECT_APP = 5; 12 | 13 | public static final String EXTRA_APP_INFO_LIST = "va.extra.APP_INFO_LIST"; 14 | 15 | public static final String TAG_ASK_INSTALL_GMS = "va.extra.ASK_INSTALL_GMS"; 16 | } 17 | -------------------------------------------------------------------------------- /launcher/res/menu/change_wallpaper.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/IVirtualStorageService.aidl: -------------------------------------------------------------------------------- 1 | // IVirtualStorageService.aidl 2 | package com.lody.virtual.server; 3 | 4 | 5 | interface IVirtualStorageService { 6 | 7 | void setVirtualStorage(in String packageName, in int userId, in String vsPath); 8 | 9 | String getVirtualStorage(in String packageName, in int userId); 10 | 11 | void setVirtualStorageState(in String packageName, in int userId, in boolean enable); 12 | 13 | boolean isVirtualStorageEnable(in String packageName, in int userId); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentProviderNative.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ContentProviderNative { 11 | public static Class TYPE = RefClass.load(ContentProviderNative.class, "android.content.ContentProviderNative"); 12 | @MethodParams({IBinder.class}) 13 | public static RefStaticMethod asInterface; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Установщик VirtualPackage 4 | Админ 5 | Выбрать 6 | Выбор пуст 7 | Нет приложений для поиска 8 | Добавить аккаунт 9 | Этот ярлык уже существует 10 | 11 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/SyncAdapterType.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | 4 | import mirror.MethodParams; 5 | import mirror.RefClass; 6 | import mirror.RefConstructor; 7 | 8 | public class SyncAdapterType { 9 | public static Class TYPE = RefClass.load(SyncAdapterType.class, android.content.SyncAdapterType.class); 10 | @MethodParams({String.class, String.class, boolean.class, boolean.class, boolean.class, boolean.class, String.class}) 11 | public static RefConstructor ctor; 12 | } -------------------------------------------------------------------------------- /lib/src/main/jni/fb/Doxyfile: -------------------------------------------------------------------------------- 1 | PROJECT_NAME = "Facebook Android Support" 2 | JAVADOC_AUTOBRIEF = YES 3 | EXTRACT_ALL = YES 4 | RECURSIVE = YES 5 | EXCLUDE = tests 6 | EXCLUDE_PATTERNS = *.cpp 7 | GENERATE_HTML = YES 8 | GENERATE_LATEX = NO 9 | ENABLE_PREPROCESSING = YES 10 | HIDE_UNDOC_MEMBERS = YES 11 | HIDE_SCOPE_NAMES = YES 12 | HIDE_FRIEND_COMPOUNDS = YES 13 | HIDE_UNDOC_CLASSES = YES 14 | SHOW_INCLUDE_FILES = NO 15 | #ENABLED_SECTIONS = INTERNAL 16 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/models/AppData.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home.models; 2 | 3 | import android.graphics.drawable.Drawable; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public interface AppData { 10 | 11 | boolean isInstalling(); 12 | 13 | boolean isLoading(); 14 | 15 | boolean isFirstOpen(); 16 | 17 | Drawable getIcon(); 18 | 19 | String getName(); 20 | 21 | boolean canReorder(); 22 | 23 | boolean canLaunch(); 24 | 25 | boolean canDelete(); 26 | 27 | boolean canCreateShortcut(); 28 | } 29 | -------------------------------------------------------------------------------- /launcher/tests/res/xml/appwidget_with_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IServiceConnectionO.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.ComponentName; 4 | import android.os.IBinder; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefMethod; 9 | 10 | public class IServiceConnectionO { 11 | public static Class TYPE = RefClass.load(IServiceConnectionO.class, "android.app.IServiceConnection"); 12 | 13 | @MethodParams({ComponentName.class, IBinder.class, boolean.class}) 14 | public static RefMethod connected; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/Notification.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.app.PendingIntent; 4 | import android.content.Context; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefMethod; 9 | 10 | public class Notification { 11 | public static Class TYPE = RefClass.load(Notification.class, android.app.Notification.class); 12 | @MethodParams({Context.class, CharSequence.class, CharSequence.class, PendingIntent.class}) 13 | public static RefMethod setLatestEventInfo; 14 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/SurfaceControl.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefStaticMethod; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class SurfaceControl { 14 | 15 | public static Class TYPE = RefClass.load(SurfaceControl.class, "android.view.SurfaceControl"); 16 | 17 | @MethodParams({int.class/*width*/, int.class/*height*/}) 18 | public static RefStaticMethod screnshot; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/jni/JniTerminateHandler.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | #include 13 | 14 | namespace facebook { 15 | namespace jni { 16 | 17 | void FBEXPORT installTerminateHandler(); 18 | }}; 19 | -------------------------------------------------------------------------------- /launcher/tests/res/layout/test_layout_appwidget_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/PackageParserNougat.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import mirror.MethodReflectParams; 4 | import mirror.RefClass; 5 | import mirror.RefStaticMethod; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class PackageParserNougat { 12 | public static Class TYPE = RefClass.load(PackageParserNougat.class, "android.content.pm.PackageParser"); 13 | @MethodReflectParams({"android.content.pm.PackageParser$Package", "int"}) 14 | public static RefStaticMethod collectCertificates; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/content/ReferrerIntent.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.content; 2 | 3 | import android.content.Intent; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefConstructor; 7 | import mirror.MethodParams; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ReferrerIntent { 14 | public static Class TYPE = RefClass.load(ReferrerIntent.class, "com.android.internal.content.ReferrerIntent"); 15 | @MethodParams({Intent.class, String.class}) 16 | public static RefConstructor ctor; 17 | } 18 | -------------------------------------------------------------------------------- /launcher/res/drawable/ic_create_shortcut.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /launcher/res/values-v23/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ActivityThreadNMR1.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IBinder; 4 | 5 | import java.util.List; 6 | 7 | import mirror.MethodParams; 8 | import mirror.RefClass; 9 | import mirror.RefMethod; 10 | 11 | /** 12 | * @author Lody 13 | */ 14 | 15 | public class ActivityThreadNMR1 { 16 | public static Class Class = RefClass.load(ActivityThreadNMR1.class, "android.app.ActivityThread"); 17 | @MethodParams({IBinder.class, List.class, boolean.class}) 18 | public static RefMethod performNewIntents; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/IJobScheduler.aidl: -------------------------------------------------------------------------------- 1 | //package com.lody.virtual.server; 2 | // 3 | //import android.app.job.JobInfo; 4 | //import android.app.job.JobParameters; 5 | // 6 | // /** 7 | // * IPC interface that supports the app-facing {@link #JobScheduler} api. 8 | // */ 9 | //interface IJobScheduler { 10 | // int schedule(in JobInfo job); 11 | // void cancel(int jobId); 12 | // void cancelAll(); 13 | // List getAllPendingJobs(); 14 | // int enqueue(in JobInfo job, in JobParameters work); 15 | // JobInfo getPendingJob(int i); 16 | //} 17 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/SyncAdapterTypeN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.SyncAdapterType; 4 | 5 | import mirror.MethodParams; 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | 9 | public class SyncAdapterTypeN { 10 | public static Class Class = RefClass.load(SyncAdapterTypeN.class, SyncAdapterType.class); 11 | @MethodParams({String.class, String.class, boolean.class, boolean.class, boolean.class, boolean.class, String.class, String.class}) 12 | public static RefConstructor ctor; 13 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/location/LocationRequestL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.location; 2 | 3 | import mirror.RefBoolean; 4 | import mirror.RefClass; 5 | import mirror.RefMethod; 6 | import mirror.RefObject; 7 | 8 | public class LocationRequestL { 9 | public static Class TYPE = RefClass.load(LocationRequestL.class, "android.location.LocationRequest"); 10 | public static RefBoolean mHideFromAppOps; 11 | public static RefObject mWorkSource; 12 | public static RefObject mProvider; 13 | public static RefMethod getProvider; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ActivityManagerOreo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticMethod; 7 | import mirror.RefStaticObject; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ActivityManagerOreo { 14 | 15 | public static Class TYPE = RefClass.load(ActivityManagerOreo.class, "android.app.ActivityManager"); 16 | 17 | public static RefStaticMethod getService; 18 | public static RefStaticObject IActivityManagerSingleton; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ApplicationThreadNative.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | public class ApplicationThreadNative { 14 | public static Class TYPE = RefClass.load(ApplicationThreadNative.class, "android.app.ApplicationThreadNative"); 15 | 16 | @MethodParams({IBinder.class}) 17 | public static RefStaticMethod asInterface; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IActivityManagerN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IActivityManagerN { 15 | public static Class TYPE = RefClass.load(IActivityManagerN.class, "android.app.IActivityManager"); 16 | @MethodParams({IBinder.class, int.class, Intent.class, int.class}) 17 | public static RefMethod finishActivity; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/Bundle.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.IBinder; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefMethod; 7 | import mirror.MethodParams; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class Bundle { 14 | public static Class TYPE = RefClass.load(Bundle.class, android.os.Bundle.class); 15 | 16 | @MethodParams({String.class, IBinder.class}) 17 | public static RefMethod putIBinder; 18 | 19 | @MethodParams({String.class}) 20 | public static RefMethod getIBinder; 21 | } 22 | -------------------------------------------------------------------------------- /launcher/src/com/google/android/apps/nexuslauncher/qsb/OPAStatusReceiver.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.qsb; 2 | 3 | import com.android.launcher3.Utilities; 4 | import android.content.Intent; 5 | import android.content.Context; 6 | import android.content.BroadcastReceiver; 7 | 8 | public class OPAStatusReceiver extends BroadcastReceiver { 9 | @Override 10 | public void onReceive(Context context, Intent intent) { 11 | Utilities.getDevicePrefs(context).edit().putBoolean("opa_enabled", intent.getBooleanExtra("OPA_ENABLED", false)).apply(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IActivityManagerL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.content.Intent; 4 | import android.os.IBinder; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | import mirror.MethodParams; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IActivityManagerL { 15 | public static Class TYPE = RefClass.load(IActivityManagerL.class, "android.app.IActivityManager"); 16 | @MethodParams({IBinder.class, int.class, Intent.class, boolean.class}) 17 | public static RefMethod finishActivity; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/res/AssetManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.res; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefConstructor; 5 | import mirror.RefMethod; 6 | import mirror.MethodParams; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class AssetManager { 13 | public static Class TYPE = RefClass.load(AssetManager.class, android.content.res.AssetManager.class); 14 | public static RefConstructor ctor; 15 | @MethodParams(String.class) 16 | public static RefMethod addAssetPath; 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/interfaces/IInjector.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.interfaces; 2 | 3 | /** 4 | * @author Lody 5 | * 6 | * The Objects who implemention this interface will be able to inject other object. 7 | * 8 | */ 9 | public interface IInjector { 10 | 11 | /** 12 | * 13 | * Do injection. 14 | * 15 | * @throws Throwable if inject failed 16 | */ 17 | void inject() throws Throwable; 18 | 19 | /** 20 | * Check if the injection has bad. 21 | * 22 | * @return If the injection has bad 23 | */ 24 | boolean isEnvBad(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /launcher/res/values-sl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d h 11 | %d h 12 | %d h 13 | %d h 14 | 15 | 16 | -------------------------------------------------------------------------------- /launcher/res/values-cs/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d h 11 | %d h 12 | %d h 13 | %d h 14 | 15 | 16 | -------------------------------------------------------------------------------- /launcher/res/values-sk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d h 11 | %d h 12 | %d h 13 | %d h 14 | 15 | 16 | -------------------------------------------------------------------------------- /launcher/res/values-uk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d хв 5 | %d хв 6 | %d хв 7 | %d хв 8 | 9 | 10 | %d год 11 | %d год 12 | %d год 13 | %d год 14 | 15 | 16 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/widget/RemoteViews.java: -------------------------------------------------------------------------------- 1 | package mirror.android.widget; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | 5 | import java.util.ArrayList; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefObject; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class RemoteViews { 15 | public static Class TYPE = RefClass.load(RemoteViews.class, android.widget.RemoteViews.class); 16 | public static RefObject mApplication; 17 | public static RefObject> mActions; 18 | public static RefObject mPackage; 19 | } 20 | -------------------------------------------------------------------------------- /launcher/res/values-be/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d хв 5 | %d хв 6 | %d хв 7 | %d хв 8 | 9 | 10 | %d гадз 11 | %d гадз 12 | %d гадз 13 | %d гадз 14 | 15 | 16 | -------------------------------------------------------------------------------- /launcher/res/values-iw/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ‏%d ד’ 5 | ‏%d ד’ 6 | ‏%d ד’ 7 | ‏%d ד’ 8 | 9 | 10 | ‏%d ש’ 11 | ‏%d ש’ 12 | ‏%d ש’ 13 | ‏%d ש’ 14 | 15 | 16 | -------------------------------------------------------------------------------- /launcher/res/values-ru/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d мин. 5 | %d мин. 6 | %d мин. 7 | %d мин. 8 | 9 | 10 | %d ч. 11 | %d ч. 12 | %d ч. 13 | %d ч. 14 | 15 | 16 | -------------------------------------------------------------------------------- /lib/src/main/aidl/com/lody/virtual/server/IPackageInstallerSession.aidl: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server; 2 | 3 | import android.content.IntentSender; 4 | import android.os.ParcelFileDescriptor; 5 | 6 | interface IPackageInstallerSession { 7 | void setClientProgress(float progress); 8 | void addClientProgress(float progress); 9 | 10 | String[] getNames(); 11 | ParcelFileDescriptor openWrite(String name, long offsetBytes, long lengthBytes); 12 | ParcelFileDescriptor openRead(String name); 13 | void close(); 14 | void commit(in IntentSender statusReceiver); 15 | void abandon(); 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/proxies/content/ContentServiceStub.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.proxies.content; 2 | 3 | import com.lody.virtual.client.hook.base.BinderInvocationProxy; 4 | import com.lody.virtual.client.hook.base.Inject; 5 | 6 | import mirror.android.content.IContentService; 7 | 8 | /** 9 | * @author Lody 10 | * @see IContentService 11 | */ 12 | @Inject(MethodProxies.class) 13 | public class ContentServiceStub extends BinderInvocationProxy { 14 | 15 | public ContentServiceStub() { 16 | super(IContentService.Stub.asInterface, "content"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/job/JobInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.job; 2 | 3 | import android.annotation.TargetApi; 4 | import android.content.ComponentName; 5 | import android.os.Build; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefInt; 9 | import mirror.RefObject; 10 | 11 | /** 12 | * @author Lody 13 | */ 14 | 15 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 16 | public class JobInfo { 17 | public static Class TYPE = RefClass.load(JobInfo.class, android.app.job.JobInfo.class); 18 | 19 | public static RefInt jobId; 20 | public static RefObject service; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | :x 4 | VirtualPackage Installer 5 | Admin 6 | Choose 7 | Chooser is Empty 8 | No find applications 9 | Add account 10 | The shortcut already exists 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/home/ListAppContract.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.home; 2 | 3 | import java.util.List; 4 | 5 | import io.virtualapp.abs.BasePresenter; 6 | import io.virtualapp.abs.BaseView; 7 | import io.virtualapp.home.models.AppInfo; 8 | 9 | /** 10 | * @author Lody 11 | * @version 1.0 12 | */ 13 | /*package*/ class ListAppContract { 14 | interface ListAppView extends BaseView { 15 | 16 | void startLoading(); 17 | 18 | void loadFinish(List infoList); 19 | } 20 | 21 | interface ListAppPresenter extends BasePresenter { 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /launcher/res/values-lt/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min. 5 | %d min. 6 | %d min. 7 | %d min. 8 | 9 | 10 | %d val. 11 | %d val. 12 | %d val. 13 | %d val. 14 | 15 | 16 | -------------------------------------------------------------------------------- /launcher/res/values-pl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d min 5 | %d min 6 | %d min 7 | %d min 8 | 9 | 10 | %d godz. 11 | %d godz. 12 | %d godz. 13 | %d godz. 14 | 15 | 16 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/nonmovable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | namespace facebook { 13 | 14 | struct nonmovable { 15 | nonmovable(nonmovable&&) = delete; 16 | nonmovable& operator=(nonmovable&&) = delete; 17 | protected: 18 | nonmovable() = default; 19 | }; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/Singleton.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | /** 4 | * Singleton helper class for lazily initialization. 5 | * 6 | * Modeled after frameworks/base/include/utils/Singleton.h 7 | * 8 | * @hide 9 | */ 10 | public abstract class Singleton { 11 | private T mInstance; 12 | 13 | protected abstract T create(); 14 | 15 | public final T get() { 16 | synchronized (this) { 17 | if (mInstance == null) { 18 | mInstance = create(); 19 | } 20 | return mInstance; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ApplicationInfoN.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefObject; 7 | 8 | public class ApplicationInfoN { 9 | public static Class TYPE = RefClass.load(ApplicationInfoN.class, ApplicationInfo.class); 10 | public static RefObject deviceProtectedDataDir; 11 | public static RefObject deviceEncryptedDataDir; 12 | public static RefObject credentialProtectedDataDir; 13 | public static RefObject credentialEncryptedDataDir; 14 | } 15 | -------------------------------------------------------------------------------- /launcher/res/values-v24/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0 5 | 1 6 | 2 7 | 256 8 | 9 | 10 | 11 | @string/theme_automatic 12 | @string/theme_default 13 | @string/theme_light 14 | @string/theme_dark 15 | @string/theme_transparent 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_users.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/noncopyable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #pragma once 11 | 12 | namespace facebook { 13 | 14 | struct noncopyable { 15 | noncopyable(const noncopyable&) = delete; 16 | noncopyable& operator=(const noncopyable&) = delete; 17 | protected: 18 | noncopyable() = default; 19 | }; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ResultStaticMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | /** 6 | * @author Lody 7 | */ 8 | 9 | public class ResultStaticMethodProxy extends StaticMethodProxy { 10 | 11 | Object mResult; 12 | 13 | public ResultStaticMethodProxy(String name, Object result) { 14 | super(name); 15 | mResult = result; 16 | } 17 | 18 | public Object getResult() { 19 | return mResult; 20 | } 21 | 22 | @Override 23 | public Object call(Object who, Method method, Object... args) throws Throwable { 24 | return mResult; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ApplicationInfoL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | import mirror.RefClass; 5 | import mirror.RefObject; 6 | 7 | public class ApplicationInfoL { 8 | public static Class TYPE = RefClass.load(ApplicationInfoL.class, ApplicationInfo.class); 9 | public static RefObject primaryCpuAbi; 10 | public static RefObject scanPublicSourceDir; 11 | public static RefObject scanSourceDir; 12 | public static RefObject splitPublicSourceDirs; 13 | public static RefObject splitSourceDirs; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/res/CompatibilityInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.res; 2 | 3 | import android.content.pm.ApplicationInfo; 4 | import mirror.RefClass; 5 | import mirror.RefConstructor; 6 | import mirror.MethodParams; 7 | import mirror.RefStaticObject; 8 | 9 | public class CompatibilityInfo { 10 | public static Class TYPE = RefClass.load(CompatibilityInfo.class, "android.content.res.CompatibilityInfo"); 11 | @MethodParams({ApplicationInfo.class, int.class, int.class, boolean.class}) 12 | public static RefConstructor ctor; 13 | public static RefStaticObject DEFAULT_COMPATIBILITY_INFO; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/ContentProviderHolderOreo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.pm.ProviderInfo; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefBoolean; 7 | import mirror.RefClass; 8 | import mirror.RefObject; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class ContentProviderHolderOreo { 15 | public static Class TYPE = RefClass.load(ContentProviderHolderOreo.class, "android.app.ContentProviderHolder"); 16 | public static RefObject info; 17 | public static RefObject provider; 18 | public static RefBoolean noReleaseNeeded; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IIntentReceiver.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | import mirror.MethodParams; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IIntentReceiver { 15 | public static Class TYPE = RefClass.load(IIntentReceiver.class, "android.content.IIntentReceiver"); 16 | 17 | @MethodParams({Intent.class, int.class, 18 | String.class, Bundle.class, boolean.class, boolean.class}) 19 | public static RefMethod performReceive; 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/IUserManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IUserManager { 11 | public static Class TYPE = RefClass.load(IUserManager.class, "android.os.IUserManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IUserManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/include/fb/Build.h: -------------------------------------------------------------------------------- 1 | // Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include 6 | 7 | #if defined(__ANDROID__) 8 | # include 9 | #endif 10 | 11 | namespace facebook { 12 | namespace build { 13 | 14 | struct Build { 15 | static int getAndroidSdk() { 16 | static auto android_sdk = ([] { 17 | char sdk_version_str[PROP_VALUE_MAX]; 18 | __system_property_get("ro.build.version.sdk", sdk_version_str); 19 | return atoi(sdk_version_str); 20 | })(); 21 | return android_sdk; 22 | } 23 | }; 24 | 25 | } // build 26 | } // facebook 27 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/java/CppException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | package fb.jni.java; 11 | 12 | import com.facebook.proguard.annotations.DoNotStrip; 13 | 14 | @DoNotStrip 15 | public class CppException extends RuntimeException { 16 | @DoNotStrip 17 | public CppException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/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 | 8 | NetworkInfo getActiveNetworkInfo(); 9 | NetworkInfo getActiveNetworkInfoForUid(int uid, boolean ignoreBlocked); 10 | 11 | NetworkInfo getNetworkInfo(int networkType); 12 | NetworkInfo[] getAllNetworkInfo(); 13 | boolean isActiveNetworkMetered(); 14 | boolean requestRouteToHostAddress(int networkType, int address); 15 | LinkProperties getActiveLinkProperties(); 16 | LinkProperties getLinkProperties(int networkType); 17 | 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceLastPkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.lody.virtual.client.hook.utils.MethodParameterUtils; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class ReplaceLastPkgMethodProxy extends StaticMethodProxy { 12 | 13 | public ReplaceLastPkgMethodProxy(String name) { 14 | super(name); 15 | } 16 | 17 | @Override 18 | public boolean beforeCall(Object who, Method method, Object... args) { 19 | MethodParameterUtils.replaceLastAppPkg(args); 20 | return super.beforeCall(who, method, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/IShortcutService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IShortcutService { 15 | 16 | public static final class Stub { 17 | public static Class TYPE = RefClass.load(IShortcutService.Stub.class, "android.content.pm.IShortcutService$Stub"); 18 | @MethodParams({IBinder.class}) 19 | public static RefStaticMethod asInterface; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/IAudioService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media; 2 | import android.os.IBinder; 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.MethodParams; 7 | import mirror.RefStaticMethod; 8 | 9 | public class IAudioService { 10 | public static Class TYPE = RefClass.load(IAudioService.class, "android.media.IAudioService"); 11 | 12 | public static class Stub { 13 | public static Class TYPE = RefClass.load(Stub.class, "android.media.IAudioService$Stub"); 14 | @MethodParams({IBinder.class}) 15 | public static RefStaticMethod asInterface; 16 | } 17 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IApplicationThreadJBMR1.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefMethod; 5 | import mirror.MethodReflectParams; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class IApplicationThreadJBMR1 { 12 | public static Class TYPE = RefClass.load(IApplicationThreadJBMR1.class, "android.app.IApplicationThread"); 13 | 14 | @MethodReflectParams({"android.content.Intent", "android.content.pm.ActivityInfo", "android.content.res.CompatibilityInfo", "int", "java.lang.String", "android.os.Bundle", "boolean", "int"}) 15 | public static RefMethod scheduleReceiver; 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/client/hook/base/ReplaceCallingPkgMethodProxy.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.client.hook.base; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import com.lody.virtual.client.hook.utils.MethodParameterUtils; 6 | 7 | /** 8 | * @author Lody 9 | */ 10 | 11 | public class ReplaceCallingPkgMethodProxy extends StaticMethodProxy { 12 | 13 | public ReplaceCallingPkgMethodProxy(String name) { 14 | super(name); 15 | } 16 | 17 | @Override 18 | public boolean beforeCall(Object who, Method method, Object... args) { 19 | MethodParameterUtils.replaceFirstAppPkg(args); 20 | return super.beforeCall(who, method, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/ISearchManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ISearchManager { 11 | public static Class TYPE = RefClass.load(ISearchManager.class, "android.app.ISearchManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.app.ISearchManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IIntentReceiverJB.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefMethod; 8 | import mirror.MethodParams; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IIntentReceiverJB { 15 | public static Class TYPE = RefClass.load(IIntentReceiverJB.class, "android.content.IIntentReceiver"); 16 | 17 | @MethodParams({Intent.class, int.class, 18 | String.class, Bundle.class, boolean.class, boolean.class, int.class}) 19 | public static RefMethod performReceive; 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/LauncherApps.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.content.pm.PackageManager; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefObject; 8 | import mirror.com.android.internal.os.UserManager; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class LauncherApps { 15 | 16 | public static Class TYPE = RefClass.load(LauncherApps.class, "android.content.pm.LauncherApps"); 17 | 18 | public static RefObject mPm; 19 | public static RefObject mService; 20 | public static RefObject mUserManager; 21 | } 22 | -------------------------------------------------------------------------------- /launcher/src/com/google/android/apps/nexuslauncher/search/SearchResult.java: -------------------------------------------------------------------------------- 1 | package com.google.android.apps.nexuslauncher.search; 2 | 3 | import com.android.launcher3.allapps.search.AllAppsSearchBarController; 4 | import com.android.launcher3.util.ComponentKey; 5 | 6 | import java.util.ArrayList; 7 | 8 | class SearchResult { 9 | final AllAppsSearchBarController.Callbacks mCallbacks; 10 | final String mQuery; 11 | final ArrayList mApps; 12 | 13 | SearchResult(String query, AllAppsSearchBarController.Callbacks callbacks) { 14 | mApps = new ArrayList<>(); 15 | mQuery = query; 16 | mCallbacks = callbacks; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/IGraphicsStats.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IGraphicsStats { 11 | public static Class TYPE = RefClass.load(IGraphicsStats.class, "android.view.IGraphicsStats"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.view.IGraphicsStats$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/view/IWindowManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.view; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IWindowManager { 11 | public static Class TYPE = RefClass.load(IWindowManager.class, "android.view.IWindowManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.view.IWindowManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/compat/ApplicationThreadCompat.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.compat; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.android.app.ApplicationThreadNative; 7 | import mirror.android.app.IApplicationThreadOreo; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ApplicationThreadCompat { 14 | 15 | public static IInterface asInterface(IBinder binder) { 16 | if (BuildCompat.isOreo()) { 17 | return IApplicationThreadOreo.Stub.asInterface.call(binder); 18 | } 19 | return ApplicationThreadNative.asInterface.call(binder); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/job/IJobScheduler.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.job; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IJobScheduler { 11 | public static Class TYPE = RefClass.load(IJobScheduler.class, "android.app.job.IJobScheduler"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.app.job.IJobScheduler$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/net/wifi/IWifiManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.net.wifi; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IWifiManager { 11 | public static Class TYPE = RefClass.load(IWifiManager.class, "android.net.wifi.IWifiManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.net.wifi.IWifiManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/os/UserManager.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class UserManager { 11 | public static Class TYPE = RefClass.load(UserManager.class, "android.os.UserManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IUserManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/policy/PhoneWindow.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.policy; 2 | 3 | import android.os.IInterface; 4 | 5 | import mirror.RefClass; 6 | import mirror.RefStaticObject; 7 | 8 | public class PhoneWindow { 9 | public static Class TYPE; 10 | public static RefStaticObject sWindowManager; 11 | 12 | static { 13 | TYPE = RefClass.load(PhoneWindow.class, "com.android.internal.policy.impl.PhoneWindow$WindowManagerHolder"); 14 | if (TYPE == null) { 15 | TYPE = RefClass.load(PhoneWindow.class, "com.android.internal.policy.PhoneWindow$WindowManagerHolder"); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/accounts/IAccountManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.accounts; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IAccountManager { 11 | public static Class TYPE = RefClass.load(IAccountManager.class, "android.accounts.IAccountManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.accounts.IAccountManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/backup/IBackupManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app.backup; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IBackupManager { 11 | public static Class TYPE = RefClass.load(IBackupManager.class, "android.app.backup.IBackupManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.app.backup.IBackupManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/mount/IMountService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os.mount; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IMountService { 11 | public static Class TYPE = RefClass.load(IMountService.class, "android.os.storage.IMountService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.storage.IMountService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/ISms.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ISms { 11 | public static Class TYPE = RefClass.load(ISms.class, "com.android.internal.telephony.ISms"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.ISms$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/dalvik/system/VMRuntime.java: -------------------------------------------------------------------------------- 1 | package mirror.dalvik.system; 2 | 3 | import mirror.RefClass; 4 | import mirror.RefMethod; 5 | import mirror.MethodParams; 6 | import mirror.RefStaticMethod; 7 | 8 | /** 9 | * @author Lody 10 | */ 11 | 12 | public class VMRuntime { 13 | public static Class TYPE = RefClass.load(VMRuntime.class, "dalvik.system.VMRuntime"); 14 | public static RefStaticMethod getRuntime; 15 | @MethodParams({int.class}) 16 | public static RefMethod setTargetSdkVersion; 17 | public static RefMethod is64Bit; 18 | public static RefStaticMethod getCurrentInstructionSet; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/NotificationL.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.app.Notification; 4 | import android.content.Context; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class NotificationL { 11 | public static Class TYPE = RefClass.load(NotificationL.class, Notification.class); 12 | 13 | public static class Builder { 14 | public static Class TYPE = RefClass.load(Builder.class, android.app.Notification.Builder.class); 15 | 16 | @MethodParams({Context.class, Notification.class}) 17 | public static RefStaticMethod rebuild; 18 | } 19 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/IMediaRouterService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IMediaRouterService { 11 | public static Class TYPE = RefClass.load(IMediaRouterService.class, "android.media.IMediaRouterService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.media.IMediaRouterService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/UserHandle.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefConstructor; 9 | import mirror.RefMethod; 10 | 11 | /** 12 | * author: weishu on 18/2/11. 13 | */ 14 | 15 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 16 | public class UserHandle { 17 | public static Class TYPE = RefClass.load(UserHandle.class, android.os.UserHandle.class); 18 | @MethodParams({int.class}) 19 | public static RefConstructor ctor; 20 | public static RefMethod getIdentifier; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/IMms.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IMms { 11 | public static Class TYPE = RefClass.load(IMms.class, "com.android.internal.telephony.IMms"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.IMms$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/location/ILocationManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.location; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ILocationManager { 11 | public static Class TYPE = RefClass.load(ILocationManager.class, "android.location.ILocationManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.location.ILocationManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/storage/IStorageManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os.storage; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IStorageManager { 11 | public static Class Class = RefClass.load(IStorageManager.class, "android.os.storage.IStorageManager"); 12 | 13 | public static class Stub { 14 | public static Class Class = RefClass.load(Stub.class, "android.os.storage.IStorageManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/os/IVibratorService.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IVibratorService { 11 | public static Class TYPE = RefClass.load(IVibratorService.class, "android.os.IVibratorService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IVibratorService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/app/IAlarmManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IAlarmManager { 15 | public static Class TYPE = RefClass.load(IAlarmManager.class, "android.app.IAlarmManager"); 16 | public static class Stub { 17 | public static Class TYPE = RefClass.load(Stub.class, "android.app.IAlarmManager$Stub"); 18 | @MethodParams({IBinder.class}) 19 | public static RefStaticMethod asInterface; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/IPowerManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | public class IPowerManager { 15 | public static Class TYPE = RefClass.load(IPowerManager.class, "android.os.IPowerManager"); 16 | 17 | public static class Stub { 18 | public static Class TYPE = RefClass.load(Stub.class, "android.os.IPowerManager$Stub"); 19 | @MethodParams({IBinder.class}) 20 | public static RefStaticMethod asInterface; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/io/virtualapp/delegate/MyPhoneInfoDelegate.java: -------------------------------------------------------------------------------- 1 | package io.virtualapp.delegate; 2 | 3 | import com.lody.virtual.client.hook.delegate.PhoneInfoDelegate; 4 | 5 | 6 | /** 7 | * Fake the Device ID. 8 | */ 9 | public class MyPhoneInfoDelegate implements PhoneInfoDelegate { 10 | 11 | @Override 12 | public String getDeviceId(String oldDeviceId, int userId) { 13 | return oldDeviceId; 14 | } 15 | 16 | @Override 17 | public String getBluetoothAddress(String oldAddress, int userId) { 18 | return oldAddress; 19 | } 20 | 21 | @Override 22 | public String getMacAddress(String oldAddress, int userId) { 23 | return oldAddress; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/server/ServiceCache.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.server; 2 | 3 | import android.os.IBinder; 4 | 5 | import com.lody.virtual.helper.collection.ArrayMap; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | * @author Lody 11 | */ 12 | 13 | public class ServiceCache { 14 | 15 | private static final Map sCache = new ArrayMap<>(5); 16 | 17 | public static void addService(String name, IBinder service) { 18 | sCache.put(name, service); 19 | } 20 | 21 | public static IBinder removeService(String name) { 22 | return sCache.remove(name); 23 | } 24 | 25 | public static IBinder getService(String name) { 26 | return sCache.get(name); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/IRestrictionsManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IRestrictionsManager { 11 | public static Class TYPE = RefClass.load(IRestrictionsManager.class, "android.content.IRestrictionsManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.content.IRestrictionsManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/src/main/java/com/lody/virtual/helper/utils/ClassUtils.java: -------------------------------------------------------------------------------- 1 | package com.lody.virtual.helper.utils; 2 | 3 | /** 4 | * @author Lody 5 | * 6 | */ 7 | public class ClassUtils { 8 | 9 | public static boolean isClassExist(String className) { 10 | try { 11 | Class.forName(className); 12 | return true; 13 | } catch (ClassNotFoundException e) { 14 | return false; 15 | } 16 | } 17 | 18 | public static void fixArgs(Class[] types, Object[] args) { 19 | for (int i = 0; i < types.length; i++) { 20 | if (types[i] == int.class && args[i] == null) { 21 | args[i] = 0; 22 | } else if (types[i] == boolean.class && args[i] == null) { 23 | args[i] = false; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/media/session/ISessionManager.java: -------------------------------------------------------------------------------- 1 | package mirror.android.media.session; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ISessionManager { 11 | public static Class TYPE = RefClass.load(ISessionManager.class, "android.media.session.ISessionManager"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.media.session.ISessionManager$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/app/IAppOpsService.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.app; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class IAppOpsService { 11 | public static Class TYPE = RefClass.load(IAppOpsService.class, "com.android.internal.app.IAppOpsService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.app.IAppOpsService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } -------------------------------------------------------------------------------- /lib/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 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/hardware/fingerprint/IFingerprintService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.hardware.fingerprint; 2 | 3 | import android.os.*; 4 | 5 | import mirror.*; 6 | 7 | /** 8 | * Created by natsuki on 12/10/2017. 9 | */ 10 | 11 | public class IFingerprintService { 12 | 13 | public static Class TYPE = RefClass.load(IFingerprintService.class, "android.hardware.fingerprint.IFingerprintService"); 14 | 15 | public static class Stub { 16 | public static Class TYPE = RefClass.load(Stub.class, "android.hardware.fingerprint.IFingerprintService$Stub"); 17 | @MethodParams({IBinder.class}) 18 | public static RefStaticMethod asInterface; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/os/INetworkManagementService.java: -------------------------------------------------------------------------------- 1 | package mirror.android.os; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.MethodParams; 7 | import mirror.RefClass; 8 | import mirror.RefStaticMethod; 9 | 10 | public class INetworkManagementService { 11 | public static Class TYPE = RefClass.load(INetworkManagementService.class, "android.os.INetworkManagementService"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "android.os.INetworkManagementService$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/telephony/CellSignalStrengthGsm.java: -------------------------------------------------------------------------------- 1 | package mirror.android.telephony; 2 | 3 | import android.annotation.TargetApi; 4 | import android.os.Build; 5 | 6 | import mirror.RefClass; 7 | import mirror.RefConstructor; 8 | import mirror.RefInt; 9 | 10 | /** 11 | * @author Lody 12 | */ 13 | 14 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 15 | public class CellSignalStrengthGsm { 16 | public static Class TYPE = RefClass.load(CellSignalStrengthGsm.class, android.telephony.CellSignalStrengthGsm.class); 17 | public static RefConstructor ctor; 18 | public static RefInt mSignalStrength; 19 | public static RefInt mBitErrorRate; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/android/content/pm/ShortcutInfo.java: -------------------------------------------------------------------------------- 1 | package mirror.android.content.pm; 2 | 3 | import android.content.Intent; 4 | import android.graphics.drawable.Icon; 5 | import android.os.PersistableBundle; 6 | 7 | import mirror.RefClass; 8 | import mirror.RefObject; 9 | 10 | /** 11 | * author: weishu on 18/3/3. 12 | */ 13 | 14 | public class ShortcutInfo { 15 | public static Class TYPE = RefClass.load(ShortcutInfo.class, "android.content.pm.ShortcutInfo"); 16 | public static RefObject mPackageName; 17 | public static RefObject mIcon; 18 | public static RefObject mIntents; 19 | public static RefObject mIntentPersistableExtrases; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/main/java/mirror/com/android/internal/telephony/ITelephony.java: -------------------------------------------------------------------------------- 1 | package mirror.com.android.internal.telephony; 2 | 3 | import android.os.IBinder; 4 | import android.os.IInterface; 5 | 6 | import mirror.RefClass; 7 | import mirror.MethodParams; 8 | import mirror.RefStaticMethod; 9 | 10 | public class ITelephony { 11 | public static Class TYPE = RefClass.load(ITelephony.class, "com.android.internal.telephony.ITelephony"); 12 | 13 | public static class Stub { 14 | public static Class TYPE = RefClass.load(Stub.class, "com.android.internal.telephony.ITelephony$Stub"); 15 | @MethodParams({IBinder.class}) 16 | public static RefStaticMethod asInterface; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/main/jni/fb/jni/OnLoad.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | using namespace facebook::jni; 16 | 17 | void initialize_fbjni() { 18 | CountableOnLoad(Environment::current()); 19 | HybridDataOnLoad(); 20 | JNativeRunnable::OnLoad(); 21 | ThreadScope::OnLoad(); 22 | } 23 | --------------------------------------------------------------------------------