From eac9707b754f73fd1204d66af117bc261aba1ff0 Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Fri, 18 Mar 2022 23:36:10 +0800 Subject: [PATCH] Update version to 1.0.55 --- README.md | 8 +- build.gradle | 2 +- .../highcapable/yukihookapi/YukiHookAPI.kt | 4 +- .../hook/type/android/ComponentTypeFactory.kt | 279 +++++++++++++++++- .../hook/type/android/GraphicsTypeFactory.kt | 44 +++ .../hook/type/android/ViewTypeFactory.kt | 190 +++++++++++- .../hook/type/java/VariableTypeFactory.kt | 7 + 7 files changed, 522 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 08165518..c1c9b9bd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![Eclipse Marketplace](https://img.shields.io/badge/build-passing-brightgreen) ![Eclipse Marketplace](https://img.shields.io/badge/license-MIT-blue) -![Eclipse Marketplace](https://img.shields.io/badge/version-v1.0.5.2-green) +![Eclipse Marketplace](https://img.shields.io/badge/version-v1.0.55-green) [![Telegram](https://img.shields.io/static/v1?label=Telegram&message=交流讨论&color=0088cc)](https://t.me/XiaofangInternet)

@@ -150,10 +150,10 @@ class MainHook : YukiHookXposedInitProxy { 新增 `by` 方法来设置 Hook 的时机和条件;
`YukiHookModulePrefs` 新增可控制的键值缓存,可在宿主运行时模块动态更新数据;
修复了一些可能存在的 BUG。

-- 1.0.5.1
+- 1.0.55
修正一处注释错误;
- 临时修复一个 BUG。

-- 1.0.5.2
+ 临时修复一个 BUG;
+ 增加了 `type` 中的大量 `android` 类型以及少量 `java` 类型;
修复新版与旧版 Kotlin APIs 的兼容性问题。 # Cooperations diff --git a/build.gradle b/build.gradle index 69987eaa..30a2be8c 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ ext { devUser = "fankesyooni" userEmail = "qzmmcn@163.com" groupId = "com.highcapable.yukihookapi" - apiVersion = "1.0.5.2" + apiVersion = "1.0.55" repoName = "YukiHookAPI" repoDescription = "An efficient Kotlin version of the Xposed Hook API." licenceName = "MIT License" diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/YukiHookAPI.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/YukiHookAPI.kt index 89659d6f..c8501040 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/YukiHookAPI.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/YukiHookAPI.kt @@ -65,10 +65,10 @@ object YukiHookAPI { private var isXposedInitialized = false /** 获取当前 [YukiHookAPI] 的版本 */ - const val API_VERSION_NAME = "1.0.5.2" + const val API_VERSION_NAME = "1.0.55" /** 获取当前 [YukiHookAPI] 的版本号 */ - const val API_VERSION_CODE = 8 + const val API_VERSION_CODE = 9 /** * 模块是否装载了 Xposed 回调方法 diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt index e562841d..9eb0a63e 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ComponentTypeFactory.kt @@ -30,21 +30,36 @@ package com.highcapable.yukihookapi.hook.type.android import android.app.* +import android.appwidget.AppWidgetHost +import android.appwidget.AppWidgetManager +import android.appwidget.AppWidgetProvider +import android.appwidget.AppWidgetProviderInfo import android.content.* +import android.content.Intent.ShortcutIconResource +import android.content.pm.* +import android.content.pm.LauncherApps.ShortcutQuery import android.content.res.ColorStateList +import android.content.res.Configuration import android.content.res.Resources +import android.content.res.TypedArray +import android.database.sqlite.SQLiteDatabase import android.graphics.drawable.* import android.icu.text.SimpleDateFormat import android.media.MediaPlayer import android.os.* +import android.provider.Settings import android.service.notification.StatusBarNotification import android.text.SpannableStringBuilder +import android.text.TextUtils import android.util.* -import android.view.Display -import android.view.Window -import android.view.WindowManager +import android.view.* +import android.view.accessibility.AccessibilityEvent +import android.view.accessibility.AccessibilityManager +import android.view.accessibility.AccessibilityNodeInfo import android.widget.Toast import com.highcapable.yukihookapi.hook.factory.classOf +import org.w3c.dom.UserDataHandler +import java.awt.Component /** * 获得 [android.R] 类型 @@ -184,6 +199,18 @@ val BaseBundleClass get() = BaseBundle::class.java */ val ResourcesClass get() = Resources::class.java +/** + * 获得 [Configuration] 类型 + * @return [Class] + */ +val ConfigurationClass get() = Configuration::class.java + +/** + * 获得 [ConfigurationInfo] 类型 + * @return [Class] + */ +val ConfigurationInfoClass get() = ConfigurationInfo::class.java + /** * 获得 [ContentResolver] 类型 * @return [Class] @@ -196,6 +223,66 @@ val ContentResolverClass get() = ContentResolver::class.java */ val ContentProviderClass get() = ContentProvider::class.java +/** + * 获得 [Settings] 类型 + * @return [Class] + */ +val SettingsClass get() = Settings::class.java + +/** + * 获得 [Settings.System] 类型 + * @return [Class] + */ +val Settings_SystemClass get() = Settings.System::class.java + +/** + * 获得 [Settings.Secure] 类型 + * @return [Class] + */ +val Settings_SecureClass get() = Settings.Secure::class.java + +/** + * 获得 [TypedArray] 类型 + * @return [Class] + */ +val TypedArrayClass get() = TypedArray::class.java + +/** + * 获得 [TypedValue] 类型 + * @return [Class] + */ +val TypedValueClass get() = TypedValue::class.java + +/** + * 获得 [SparseArray] 类型 + * @return [Class] + */ +val SparseArrayClass get() = SparseArray::class.java + +/** + * 获得 [SparseIntArray] 类型 + * @return [Class] + */ +val SparseIntArrayClass get() = SparseIntArray::class.java + +/** + * 获得 [SparseBooleanArray] 类型 + * @return [Class] + */ +val SparseBooleanArrayClass get() = SparseBooleanArray::class.java + +/** + * 获得 [SparseLongArray] 类型 + * @return [Class] + */ +val SparseLongArrayClass get() = SparseLongArray::class.java + +/** + * 获得 [LongSparseArray] 类型 + * @return [Class] + */ +val LongSparseArrayClass get() = LongSparseArray::class.java + /** * 获得 [ArrayMap] 类型 * @return [Class] @@ -260,12 +347,40 @@ val SimpleDateFormatClass_Android get() = SimpleDateFormat::class.java */ val Base64Class_Android get() = Base64::class.java +/** + * 获得 [TextUtils] 类型 + * @return [Class] + */ +val TextUtilsClass get() = TextUtils::class.java + /** * 获得 [Window] 类型 * @return [Class] */ val WindowClass get() = Window::class.java +/** + * 获得 [WindowMetrics] 类型 + * + * ❗在 Android R (30) 及以上系统加入 + * @return [Class] + */ +val WindowMetricsClass get() = WindowMetrics::class.java + +/** + * 获得 [WindowInsets] 类型 + * @return [Class] + */ +val WindowInsetsClass get() = WindowInsets::class.java + +/** + * 获得 [WindowInsets.Type] 类型 + * + * ❗在 Android R (30) 及以上系统加入 + * @return [Class] + */ +val WindowInsets_TypeClass get() = WindowInsets.Type::class.java + /** * 获得 [WindowManager] 类型 * @return [Class] @@ -326,6 +441,24 @@ val ToastClass get() = Toast::class.java */ val IntentClass get() = Intent::class.java +/** + * 获得 [Component] 类型 + * @return [Class] + */ +val ComponentClass get() = Component::class.java + +/** + * 获得 [ComponentInfo] 类型 + * @return [Class] + */ +val ComponentInfoClass get() = ComponentInfo::class.java + +/** + * 获得 [ComponentName] 类型 + * @return [Class] + */ +val ComponentNameClass get() = ComponentName::class.java + /** * 获得 [PendingIntent] 类型 * @return [Class] @@ -490,4 +623,142 @@ val PowerManagerClass get() = PowerManager::class.java * 获得 [PowerManager.WakeLock] 类型 * @return [Class] */ -val PowerManager_WakeLockClass get() = PowerManager.WakeLock::class.java \ No newline at end of file +val PowerManager_WakeLockClass get() = PowerManager.WakeLock::class.java + +/** + * 获得 [UserHandle] 类型 + * @return [Class] + */ +val UserHandleClass get() = UserHandle::class.java + +/** + * 获得 [UserDataHandler] 类型 + * @return [Class] + */ +val UserDataHandlerClass get() = UserDataHandler::class.java + +/** + * 获得 [ShortcutInfo] 类型 + * + * ❗在 Android N_MR1 (25) 及以上系统加入 + * @return [Class] + */ +val ShortcutInfoClass get() = ShortcutInfo::class.java + +/** + * 获得 [ShortcutManager] 类型 + * + * ❗在 Android R (30) 及以上系统加入 + * @return [Class] + */ +val ShortcutManagerClass get() = ShortcutManager::class.java + +/** + * 获得 [ShortcutQuery] 类型 + * + * ❗在 Android N_MR1 (25) 及以上系统加入 + * @return [Class] + */ +val ShortcutQueryClass get() = ShortcutQuery::class.java + +/** + * 获得 [KeyboardShortcutInfo] 类型 + * @return [Class] + */ +val KeyboardShortcutInfoClass get() = KeyboardShortcutInfo::class.java + +/** + * 获得 [KeyboardShortcutGroup] 类型 + * @return [Class] + */ +val KeyboardShortcutGroupClass get() = KeyboardShortcutGroup::class.java + +/** + * 获得 [ShortcutIconResource] 类型 + * @return [Class] + */ +val ShortcutIconResourceClass get() = ShortcutIconResource::class.java + +/** + * 获得 [AppWidgetManager] 类型 + * @return [Class] + */ +val AppWidgetManagerClass get() = AppWidgetManager::class.java + +/** + * 获得 [AppWidgetProvider] 类型 + * @return [Class] + */ +val AppWidgetProviderClass get() = AppWidgetProvider::class.java + +/** + * 获得 [AppWidgetProviderInfo] 类型 + * @return [Class] + */ +val AppWidgetProviderInfoClass get() = AppWidgetProviderInfo::class.java + +/** + * 获得 [AppWidgetHost] 类型 + * @return [Class] + */ +val AppWidgetHostClass get() = AppWidgetHost::class.java + +/** + * 获得 [ActivityInfo] 类型 + * @return [Class] + */ +val ActivityInfoClass get() = ActivityInfo::class.java + +/** + * 获得 [ResolveInfo] 类型 + * @return [Class] + */ +val ResolveInfoClass get() = ResolveInfo::class.java + +/** + * 获得 [Property] 类型 + * @return [Class] + */ +val PropertyClass get() = Property::class.java + +/** + * 获得 [IntProperty] 类型 + * @return [Class] + */ +val IntPropertyClass get() = IntProperty::class.java + +/** + * 获得 [FloatProperty] 类型 + * @return [Class] + */ +val FloatPropertyClass get() = FloatProperty::class.java + +/** + * 获得 [SQLiteDatabase] 类型 + * @return [Class] + */ +val SQLiteDatabaseClass get() = SQLiteDatabase::class.java + +/** + * 获得 [StrictMode] 类型 + * @return [Class] + */ +val StrictModeClass get() = StrictMode::class.java + +/** + * 获得 [AccessibilityManager] 类型 + * @return [Class] + */ +val AccessibilityManagerClass get() = AccessibilityManager::class.java + +/** + * 获得 [AccessibilityEvent] 类型 + * @return [Class] + */ +val AccessibilityEventClass get() = AccessibilityEvent::class.java + +/** + * 获得 [AccessibilityNodeInfo] 类型 + * @return [Class] + */ +val AccessibilityNodeInfoClass get() = AccessibilityNodeInfo::class.java \ No newline at end of file diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt index 56beae06..6bf42ae8 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/GraphicsTypeFactory.kt @@ -32,6 +32,8 @@ package com.highcapable.yukihookapi.hook.type.android import android.graphics.* import android.graphics.drawable.* import android.text.* +import android.util.Size +import android.util.SizeF /** * 获得 [Typeface] 类型 @@ -83,12 +85,30 @@ val ColorDrawableClass get() = ColorDrawable::class.java */ val BitmapDrawableClass get() = BitmapDrawable::class.java +/** + * 获得 [Size] 类型 + * @return [Class] + */ +val SizeClass get() = Size::class.java + +/** + * 获得 [SizeF] 类型 + * @return [Class] + */ +val SizeFClass get() = SizeF::class.java + /** * 获得 [Rect] 类型 * @return [Class] */ val RectClass get() = Rect::class.java +/** + * 获得 [RectF] 类型 + * @return [Class] + */ +val RectFClass get() = RectF::class.java + /** * 获得 [NinePatch] 类型 * @return [Class] @@ -119,6 +139,30 @@ val CanvasClass get() = Canvas::class.java */ val PointClass get() = Point::class.java +/** + * 获得 [PointF] 类型 + * @return [Class] + */ +val PointFClass get() = PointF::class.java + +/** + * 获得 [Matrix] 类型 + * @return [Class] + */ +val MatrixClass get() = Matrix::class.java + +/** + * 获得 [ColorMatrix] 类型 + * @return [Class] + */ +val ColorMatrixClass get() = ColorMatrix::class.java + +/** + * 获得 [ColorMatrixColorFilter] 类型 + * @return [Class] + */ +val ColorMatrixColorFilterClass get() = ColorMatrixColorFilter::class.java + /** * 获得 [Editable] 类型 * @return [Class] diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt index c2e9b9e9..2c1c1d58 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/android/ViewTypeFactory.kt @@ -29,9 +29,17 @@ package com.highcapable.yukihookapi.hook.type.android +import android.animation.* +import android.appwidget.AppWidgetHostView import android.util.AttributeSet import android.view.* +import android.view.animation.AlphaAnimation +import android.view.animation.Animation +import android.view.animation.TranslateAnimation +import android.webkit.WebView +import android.webkit.WebViewClient import android.widget.* +import android.widget.RemoteViews.RemoteView /** * 获得 [View] 类型 @@ -39,12 +47,72 @@ import android.widget.* */ val ViewClass get() = View::class.java +/** + * 获得 [Surface] 类型 + * @return [Class] + */ +val SurfaceClass get() = Surface::class.java + +/** + * 获得 [SurfaceView] 类型 + * @return [Class] + */ +val SurfaceViewClass get() = SurfaceView::class.java + +/** + * 获得 [TextureView] 类型 + * @return [Class] + */ +val TextureViewClass get() = TextureView::class.java + +/** + * 获得 [WebView] 类型 + * @return [Class] + */ +val WebViewClass get() = WebView::class.java + +/** + * 获得 [WebViewClient] 类型 + * @return [Class] + */ +val WebViewClientClass get() = WebViewClient::class.java + +/** + * 获得 [ViewStructure] 类型 + * @return [Class] + */ +val ViewStructureClass get() = ViewStructure::class.java + /** * 获得 [ViewGroup] 类型 * @return [Class] */ val ViewGroupClass get() = ViewGroup::class.java +/** + * 获得 [ViewParent] 类型 + * @return [Class] + */ +val ViewParentClass get() = ViewParent::class.java + +/** + * 获得 [AppWidgetHostView] 类型 + * @return [Class] + */ +val AppWidgetHostViewClass get() = AppWidgetHostView::class.java + +/** + * 获得 [RemoteViews] 类型 + * @return [Class] + */ +val RemoteViewsClass get() = RemoteViews::class.java + +/** + * 获得 [RemoteView] 类型 + * @return [Class] + */ +val RemoteViewClass get() = RemoteView::class.java + /** * 获得 [TextView] 类型 * @return [Class] @@ -57,6 +125,12 @@ val TextViewClass get() = TextView::class.java */ val ImageViewClass get() = ImageView::class.java +/** + * 获得 [ImageButton] 类型 + * @return [Class] + */ +val ImageButtonClass get() = ImageButton::class.java + /** * 获得 [EditText] 类型 * @return [Class] @@ -99,6 +173,24 @@ val ListViewClass get() = ListView::class.java */ val LayoutInflaterClass get() = LayoutInflater::class.java +/** + * 获得 [LayoutInflater.Filter] 类型 + * @return [Class] + */ +val LayoutInflater_FilterClass get() = LayoutInflater.Filter::class.java + +/** + * 获得 [LayoutInflater.Factory] 类型 + * @return [Class] + */ +val LayoutInflater_FactoryClass get() = LayoutInflater.Factory::class.java + +/** + * 获得 [LayoutInflater.Factory2] 类型 + * @return [Class] + */ +val LayoutInflater_Factory2Class get() = LayoutInflater.Factory2::class.java + /** * 获得 [ListAdapter] 类型 * @return [Class] @@ -165,6 +257,12 @@ val FrameLayout_LayoutParamsClass get() = FrameLayout.LayoutParams::class.java */ val TextClockClass get() = TextClock::class.java +/** + * 获得 [MotionEvent] 类型 + * @return [Class] + */ +val MotionEventClass get() = MotionEvent::class.java + /** * 获得 [View.OnClickListener] 类型 * @return [Class] @@ -223,4 +321,94 @@ val ProgressBarClass get() = ProgressBar::class.java * 获得 [AttributeSet] 类型 * @return [Class] */ -val AttributeSetClass get() = AttributeSet::class.java \ No newline at end of file +val AttributeSetClass get() = AttributeSet::class.java + +/** + * 获得 [Animation] 类型 + * @return [Class] + */ +val AnimationClass get() = Animation::class.java + +/** + * 获得 [Animation.AnimationListener] 类型 + * @return [Class] + */ +val Animation_AnimationListenerClass get() = Animation.AnimationListener::class.java + +/** + * 获得 [TranslateAnimation] 类型 + * @return [Class] + */ +val TranslateAnimationClass get() = TranslateAnimation::class.java + +/** + * 获得 [AlphaAnimation] 类型 + * @return [Class] + */ +val AlphaAnimationClass get() = AlphaAnimation::class.java + +/** + * 获得 [Animator] 类型 + * @return [Class] + */ +val AnimatorClass get() = Animator::class.java + +/** + * 获得 [Animator.AnimatorListener] 类型 + * @return [Class] + */ +val Animator_AnimatorListenerClass get() = Animator.AnimatorListener::class.java + +/** + * 获得 [ObjectAnimator] 类型 + * @return [Class] + */ +val ObjectAnimatorClass get() = ObjectAnimator::class.java + +/** + * 获得 [ValueAnimator] 类型 + * @return [Class] + */ +val ValueAnimatorClass get() = ValueAnimator::class.java + +/** + * 获得 [ValueAnimator.AnimatorUpdateListener] 类型 + * @return [Class] + */ +val ValueAnimator_AnimatorUpdateListenerClass get() = ValueAnimator.AnimatorUpdateListener::class.java + +/** + * 获得 [ViewAnimator] 类型 + * @return [Class] + */ +val ViewAnimatorClass get() = ViewAnimator::class.java + +/** + * 获得 [AnimatorSet] 类型 + * @return [Class] + */ +val AnimatorSetClass get() = AnimatorSet::class.java + +/** + * 获得 [AnimatorSet.Builder] 类型 + * @return [Class] + */ +val AnimatorSet_BuilderClass get() = AnimatorSet.Builder::class.java + +/** + * 获得 [PropertyValuesHolder] 类型 + * @return [Class] + */ +val PropertyValuesHolderClass get() = PropertyValuesHolder::class.java + +/** + * 获得 [ViewPropertyAnimator] 类型 + * @return [Class] + */ +val ViewPropertyAnimatorClass get() = ViewPropertyAnimator::class.java + +/** + * 获得 [View.MeasureSpec] 类型 + * @return [Class] + */ +val View_MeasureSpecClass get() = View.MeasureSpec::class.java \ No newline at end of file diff --git a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt index d2a77cc4..e4f57ee6 100644 --- a/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt +++ b/yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/type/java/VariableTypeFactory.kt @@ -44,6 +44,7 @@ import java.net.http.HttpClient import java.text.SimpleDateFormat import java.util.* import java.util.concurrent.atomic.AtomicBoolean +import java.util.function.Supplier import java.util.zip.ZipEntry import java.util.zip.ZipFile import java.util.zip.ZipInputStream @@ -424,6 +425,12 @@ val HttpClientClass get() = HttpClient::class.java */ val AtomicBooleanClass get() = AtomicBoolean::class.java +/** + * 获得 [Supplier] 类型 + * @return [Class] + */ +val SupplierClass get() = Supplier::class.java + /** * 获得 [Class] 类型 * @return [Class]