diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md index 002a41f8..7b9378ca 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md @@ -441,7 +441,7 @@ fun enclosing(vararg name: String) ## FromPackageRules - class ```kotlin:no-line-numbers -inner class FromPackageRules internal constructor(private val packages: ArrayList) +inner class FromPackageRules internal constructor(private val packages: MutableList) ``` **Change Records** diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md index f0c8106f..a02b9a1d 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md @@ -259,7 +259,7 @@ fun contains(key: String): Boolean ## all - method ```kotlin:no-line-numbers -fun all(): HashMap +fun all(): MutableMap ``` **Change Records** diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md index b9f52962..1fc9e026 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.md @@ -433,7 +433,7 @@ fun enclosing(vararg name: String) ## FromPackageRules - class ```kotlin:no-line-numbers -inner class FromPackageRules internal constructor(private val packages: ArrayList) +inner class FromPackageRules internal constructor(private val packages: MutableList) ``` **变更记录** diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md index 5798adce..f6b65012 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.md @@ -251,7 +251,7 @@ fun contains(key: String): Boolean ## all - method ```kotlin:no-line-numbers -fun all(): HashMap +fun all(): MutableMap ``` **变更记录** diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt index 7809c034..3660c23e 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiMemberHookCreator.kt @@ -29,7 +29,6 @@ package com.highcapable.yukihookapi.hook.core -import android.util.ArrayMap import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.annotation.CauseProblemsApi import com.highcapable.yukihookapi.hook.bean.HookClass @@ -97,13 +96,13 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa private var onHookClassNotFoundFailureCallback: ((Throwable) -> Unit)? = null /** 当前 [YukiMemberHookCreator] 禁止执行 Hook 操作的条件数组 */ - private val disableCreatorRunHookReasons = HashSet() + private val disableCreatorRunHookReasons = mutableSetOf() /** 是否对当前 [YukiMemberHookCreator] 禁止执行 Hook 操作 */ private var isDisableCreatorRunHook = false /** 设置要 Hook 的 [Method]、[Constructor] */ - private var preHookMembers = ArrayMap() + private var preHookMembers = mutableMapOf() /** * 更新当前 [YukiMemberHookCreator] 禁止执行 Hook 操作的条件 @@ -293,10 +292,10 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa private var isHookMemberSetup = false /** 当前被 Hook 的 [Method]、[Constructor] 实例数组 */ - private val hookedMembers = HashSet() + private val hookedMembers = mutableSetOf() /** 当前需要 Hook 的 [Method]、[Constructor] */ - internal val members = HashSet() + internal val members = mutableSetOf() /** * 手动指定要 Hook 的 [Method]、[Constructor] @@ -322,7 +321,6 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa * * - 请现在迁移到 [MethodFinder] or [allMembers] * @param name 方法名称 - * @return [ArrayList]<[MethodFinder.Result.Instance]> */ @Deprecated(message = "请使用新方式来实现 Hook 所有方法", ReplaceWith("method { this.name = name }.all()")) fun allMethods(name: String) = method { this.name = name }.all() @@ -333,7 +331,6 @@ class YukiMemberHookCreator internal constructor(private val packageParam: Packa * - 此方法已弃用 - 在之后的版本中将直接被删除 * * - 请现在迁移到 [ConstructorFinder] or [allMembers] - * @return [ArrayList]<[ConstructorFinder.Result.Instance]> */ @Deprecated( message = "请使用新方式来实现 Hook 所有构造方法", diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.kt index dd500d38..c89aafe4 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/YukiResourcesHookCreator.kt @@ -30,7 +30,6 @@ package com.highcapable.yukihookapi.hook.core import android.content.res.Resources -import android.util.ArrayMap import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.hook.bean.HookResources import com.highcapable.yukihookapi.hook.core.api.compat.HookApiCategoryHelper @@ -48,7 +47,7 @@ import com.highcapable.yukihookapi.hook.xposed.bridge.type.HookEntryType class YukiResourcesHookCreator internal constructor(internal val packageParam: PackageParam, internal val hookResources: HookResources) { /** 设置要 Hook 的 Resources */ - private var preHookResources = ArrayMap() + private var preHookResources = mutableMapOf() /** * 注入要 Hook 的 Resources diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/api/store/YukiHookCacheStore.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/api/store/YukiHookCacheStore.kt index d50faed0..a1c88d17 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/api/store/YukiHookCacheStore.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/api/store/YukiHookCacheStore.kt @@ -37,5 +37,5 @@ import java.lang.reflect.Member internal object YukiHookCacheStore { /** 已经 Hook 的 [Member] 数组 */ - internal val hookedMembers = HashSet() + internal val hookedMembers = mutableSetOf() } \ No newline at end of file diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.kt index b6f1291b..d2a1c836 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/base/rules/ModifierRules.kt @@ -30,7 +30,6 @@ package com.highcapable.yukihookapi.hook.core.finder.base.rules -import android.util.ArrayMap import java.lang.reflect.Field import java.lang.reflect.Member import java.lang.reflect.Method @@ -47,14 +46,14 @@ class ModifierRules private constructor(private val instance: Any) { internal companion object { /** 当前实例数组 */ - private val instances = ArrayMap() + private val instances = mutableMapOf() /** * 获取模板字符串数组 * @param value 唯一标识值 - * @return [ArrayList]<[String]> + * @return [MutableList]<[String]> */ - internal fun templates(value: Long) = instances[value]?.templates ?: arrayListOf() + internal fun templates(value: Long) = instances[value]?.templates ?: mutableListOf() /** * 创建实例 @@ -66,7 +65,7 @@ class ModifierRules private constructor(private val instance: Any) { } /** 当前模板字符串数组 */ - private val templates = ArrayList() + private val templates = mutableListOf() /** * [Class]、[Member] 类型是否包含 public diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.kt index 001502a4..aed94ca5 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/DexClassFinder.kt @@ -176,7 +176,7 @@ class DexClassFinder internal constructor( * @param name 指定包名 * @return [FromPackageRules] 可设置 [FromPackageRules.absolute] 标识包名绝对匹配 */ - fun from(vararg name: String) = FromPackageRules(arrayListOf().also { + fun from(vararg name: String) = FromPackageRules(mutableListOf().also { name.takeIf { e -> e.isNotEmpty() }?.forEach { e -> it.add(rulesData.createPackageRulesData(e)) } if (it.isNotEmpty()) rulesData.fromPackages.addAll(it) }) @@ -359,7 +359,7 @@ class DexClassFinder internal constructor( * 包名范围名称过滤匹配条件实现类 * @param packages 包名数组 */ - inner class FromPackageRules internal constructor(private val packages: ArrayList) { + inner class FromPackageRules internal constructor(private val packages: MutableList) { /** * 设置包名绝对匹配 diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/data/ClassRulesData.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/data/ClassRulesData.kt index 722cf7f5..5d6a5ca8 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/data/ClassRulesData.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/data/ClassRulesData.kt @@ -62,7 +62,7 @@ import java.lang.reflect.Method * @param constroctorRules [Constructor] 查找条件数据数组 */ internal class ClassRulesData internal constructor( - var fromPackages: ArrayList = arrayListOf(), + var fromPackages: MutableList = mutableListOf(), var fullName: NameRulesData? = null, var simpleName: NameRulesData? = null, var singleName: NameRulesData? = null, @@ -72,13 +72,13 @@ internal class ClassRulesData internal constructor( var isAnonymousClass: Boolean? = null, var isNoExtendsClass: Boolean? = null, var isNoImplementsClass: Boolean? = null, - var extendsClass: ArrayList = arrayListOf(), - var implementsClass: ArrayList = arrayListOf(), - var enclosingClass: ArrayList = arrayListOf(), - var memberRules: ArrayList = arrayListOf(), - var fieldRules: ArrayList = arrayListOf(), - var methodRules: ArrayList = arrayListOf(), - var constroctorRules: ArrayList = arrayListOf() + var extendsClass: MutableList = mutableListOf(), + var implementsClass: MutableList = mutableListOf(), + var enclosingClass: MutableList = mutableListOf(), + var memberRules: MutableList = mutableListOf(), + var fieldRules: MutableList = mutableListOf(), + var methodRules: MutableList = mutableListOf(), + var constroctorRules: MutableList = mutableListOf() ) : BaseRulesData() { /** diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.kt index 04027d58..dc7c41cf 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/ConstructorRules.kt @@ -102,7 +102,7 @@ class ConstructorRules internal constructor(private val rulesData: ConstructorRu fun param(vararg paramType: Any) { if (paramType.isEmpty()) error("paramTypes is empty, please use emptyParam() instead") rulesData.paramTypes = - arrayListOf>().apply { paramType.forEach { add(it.compat(tag = "Constructor") ?: UndefinedType) } }.toTypedArray() + mutableListOf>().apply { paramType.forEach { add(it.compat(tag = "Constructor") ?: UndefinedType) } }.toTypedArray() } /** diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.kt index 40e15930..76c5d90d 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/classes/rules/MethodRules.kt @@ -128,7 +128,7 @@ class MethodRules internal constructor(private val rulesData: MethodRulesData) : fun param(vararg paramType: Any) { if (paramType.isEmpty()) error("paramTypes is empty, please use emptyParam() instead") rulesData.paramTypes = - arrayListOf>().apply { paramType.forEach { add(it.compat(tag = "Method") ?: UndefinedType) } }.toTypedArray() + mutableListOf>().apply { paramType.forEach { add(it.compat(tag = "Method") ?: UndefinedType) } }.toTypedArray() } /** diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.kt index 3cda3deb..715d775c 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/ConstructorFinder.kt @@ -138,7 +138,7 @@ class ConstructorFinder internal constructor(override val classSet: Class<*>? = */ fun param(vararg paramType: Any): IndexTypeCondition { if (paramType.isEmpty()) error("paramTypes is empty, please use emptyParam() instead") - rulesData.paramTypes = arrayListOf>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray() + rulesData.paramTypes = mutableListOf>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray() return IndexTypeCondition(IndexConfigType.MATCH) } diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.kt index 12314f93..601ea120 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/members/MethodFinder.kt @@ -169,7 +169,7 @@ class MethodFinder internal constructor(override val classSet: Class<*>? = null) */ fun param(vararg paramType: Any): IndexTypeCondition { if (paramType.isEmpty()) error("paramTypes is empty, please use emptyParam() instead") - rulesData.paramTypes = arrayListOf>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray() + rulesData.paramTypes = mutableListOf>().apply { paramType.forEach { add(it.compat() ?: UndefinedType) } }.toTypedArray() return IndexTypeCondition(IndexConfigType.MATCH) } diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/tools/ReflectionTool.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/tools/ReflectionTool.kt index 0d935387..09571389 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/tools/ReflectionTool.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/core/finder/tools/ReflectionTool.kt @@ -29,7 +29,6 @@ package com.highcapable.yukihookapi.hook.core.finder.tools -import android.util.ArrayMap import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.hook.core.finder.base.data.BaseRulesData import com.highcapable.yukihookapi.hook.core.finder.classes.data.ClassRulesData @@ -85,10 +84,10 @@ internal object ReflectionTool { private object MemoryCache { /** 缓存的 [Class] 列表数组 */ - val dexClassListData = ArrayMap>() + val dexClassListData = mutableMapOf>() /** 缓存的 [Class] 对象数组 */ - val classData = ArrayMap?>() + val classData = mutableMapOf?>() } /** @@ -660,7 +659,7 @@ internal object ReflectionTool { */ private val Class<*>.existMembers get() = runCatching { - arrayListOf().apply { + mutableListOf().apply { addAll(declaredFields.toList()) addAll(declaredMethods.toList()) addAll(declaredConstructors.toList()) diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt index b3cb016a..c071fb2e 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/param/HookParam.kt @@ -30,7 +30,6 @@ package com.highcapable.yukihookapi.hook.param import android.os.Bundle -import android.util.ArrayMap import com.highcapable.yukihookapi.hook.core.YukiMemberHookCreator import com.highcapable.yukihookapi.hook.core.YukiMemberHookCreator.MemberHookCreator import com.highcapable.yukihookapi.hook.core.api.helper.YukiHookHelper @@ -56,7 +55,7 @@ class HookParam internal constructor( internal companion object { /** 每个回调方法体的数据存储实例数据 */ - private val dataExtras = ArrayMap() + private val dataExtras = mutableMapOf() /** [HookParam] 是否已经执行首次回调事件 */ internal var isCallbackCalled = false diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/utils/factory/VariableFactory.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/utils/factory/VariableFactory.kt index 9d9770b8..a0030caa 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/utils/factory/VariableFactory.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/utils/factory/VariableFactory.kt @@ -102,10 +102,10 @@ internal inline fun T.conditions(initiate: Conditions.() -> Unit) = Condi internal class Conditions(internal var value: T) { /** 全部判断条件数组 (与) */ - private val andConditions = ArrayList() + private val andConditions = mutableListOf() /** 全部判断条件数组 (或) */ - private val optConditions = ArrayList() + private val optConditions = mutableListOf() /** * 添加与 (and) 条件 diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/bridge/YukiXposedModule.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/bridge/YukiXposedModule.kt index b0dcd7f6..716139ac 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/bridge/YukiXposedModule.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/bridge/YukiXposedModule.kt @@ -30,7 +30,6 @@ package com.highcapable.yukihookapi.hook.xposed.bridge import android.content.pm.ApplicationInfo import android.content.res.Resources -import android.util.ArrayMap import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.hook.core.api.compat.HookApiCategoryHelper import com.highcapable.yukihookapi.hook.factory.hasClass @@ -59,13 +58,13 @@ internal object YukiXposedModule : IYukiXposedModuleLifecycle { private var isInitializingZygote = false /** 当前 [PackageParam] 实例数组 */ - private val packageParams = ArrayMap() + private val packageParams = mutableMapOf() /** 已在 [PackageParam] 中被装载的 APP 包名 */ - private val loadedPackageNames = HashSet() + private val loadedPackageNames = mutableSetOf() /** 当前 [PackageParamWrapper] 实例数组 */ - private val packageParamWrappers = ArrayMap() + private val packageParamWrappers = mutableMapOf() /** 当前 [PackageParam] 方法体回调 */ internal var packageParamCallback: (PackageParam.() -> Unit)? = null diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt index 2964bfc9..231e101b 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/channel/YukiHookDataChannel.kt @@ -155,7 +155,7 @@ class YukiHookDataChannel private constructor() { intent.action?.also { action -> runCatching { receiverCallbacks.takeIf { it.isNotEmpty() }?.apply { - arrayListOf().also { destroyedCallbacks -> + mutableListOf().also { destroyedCallbacks -> forEach { (key, it) -> when { (it.first as? Activity?)?.isDestroyed == true -> destroyedCallbacks.add(key) @@ -259,10 +259,10 @@ class YukiHookDataChannel private constructor() { * @param stringData [String] 数据数组 */ internal inner class SegmentsTempData( - var listData: ArrayList> = arrayListOf(), - var mapData: ArrayList> = arrayListOf(), - var setData: ArrayList> = arrayListOf(), - var stringData: ArrayList = arrayListOf() + var listData: MutableList> = mutableListOf(), + var mapData: MutableList> = mutableListOf(), + var setData: MutableList> = mutableListOf(), + var stringData: MutableList = mutableListOf() ) /** @@ -531,7 +531,7 @@ class YukiHookDataChannel private constructor() { if (tempData.listData.isEmpty() && wrapper.segmentsIndex > 0) return tempData.listData.add(wrapper.segmentsIndex, value) if (tempData.listData.size == wrapper.segmentsSize) { - result(arrayListOf().also { list -> tempData.listData.forEach { list.addAll(it) } } as T) + result(mutableListOf().also { list -> tempData.listData.forEach { list.addAll(it) } } as T) tempData.listData.clear() segmentsTempData.remove(wrapper.wrapperId) } @@ -540,7 +540,7 @@ class YukiHookDataChannel private constructor() { if (tempData.mapData.isEmpty() && wrapper.segmentsIndex > 0) return tempData.mapData.add(wrapper.segmentsIndex, value) if (tempData.mapData.size == wrapper.segmentsSize) { - result(hashMapOf().also { map -> tempData.mapData.forEach { it.forEach { (k, v) -> map[k] = v } } } as T) + result(mutableMapOf().also { map -> tempData.mapData.forEach { it.forEach { (k, v) -> map[k] = v } } } as T) tempData.mapData.clear() segmentsTempData.remove(wrapper.wrapperId) } @@ -549,7 +549,7 @@ class YukiHookDataChannel private constructor() { if (tempData.setData.isEmpty() && wrapper.segmentsIndex > 0) return tempData.setData.add(wrapper.segmentsIndex, value) if (tempData.setData.size == wrapper.segmentsSize) { - result(hashSetOf().also { set -> tempData.setData.forEach { set.addAll(it) } } as T) + result(mutableSetOf().also { set -> tempData.setData.forEach { set.addAll(it) } } as T) tempData.setData.clear() segmentsTempData.remove(wrapper.wrapperId) } @@ -623,13 +623,13 @@ class YukiHookDataChannel private constructor() { wrapper.isSegmentsType || isAllowSendTooLargeData -> pushReceiver(wrapper) dataByteSize >= receiverDataMaxByteSize -> when (wrapper.instance.value) { is List<*> -> (wrapper.instance.value as List<*>).also { value -> - val segments = arrayListOf>() - var segment = arrayListOf() + val segments = mutableListOf>() + var segment = mutableListOf() value.forEach { segment.add(it) if (segment.calDataByteSize() >= receiverDataSegmentMaxByteSize) { segments.add(segment) - segment = arrayListOf() + segment = mutableListOf() } } if (segment.isNotEmpty()) segments.add(segment) @@ -639,13 +639,13 @@ class YukiHookDataChannel private constructor() { } ?: loggerForUnprocessableDataByFirstElement(name = "List") } is Map<*, *> -> (wrapper.instance.value as Map<*, *>).also { value -> - val segments = arrayListOf>() - var segment = hashMapOf() + val segments = mutableListOf>() + var segment = mutableMapOf() value.forEach { (k, v) -> segment[k] = v if (segment.calDataByteSize() >= receiverDataSegmentMaxByteSize) { segments.add(segment) - segment = hashMapOf() + segment = mutableMapOf() } } if (segment.isNotEmpty()) segments.add(segment) @@ -655,13 +655,13 @@ class YukiHookDataChannel private constructor() { } ?: loggerForUnprocessableDataByFirstElement(name = "Map") } is Set<*> -> (wrapper.instance.value as Set<*>).also { value -> - val segments = arrayListOf>() - var segment = hashSetOf() + val segments = mutableListOf>() + var segment = mutableSetOf() value.forEach { segment.add(it) if (segment.calDataByteSize() >= receiverDataSegmentMaxByteSize) { segments.add(segment) - segment = hashSetOf() + segment = mutableSetOf() } } if (segment.isNotEmpty()) segments.add(segment) @@ -673,7 +673,7 @@ class YukiHookDataChannel private constructor() { is String -> (wrapper.instance.value as String).also { value -> /** 由于字符会被按照双字节计算 - 所以这里将限制字节大小除以 2 */ val twoByteMaxSize = receiverDataMaxByteSize / 2 - val segments = arrayListOf() + val segments = mutableListOf() for (i in 0..value.length step twoByteMaxSize) if (i + twoByteMaxSize <= value.length) segments.add(value.substring(i, i + twoByteMaxSize)) diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt index cc9bcc14..4443c79d 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/AppParasitics.kt @@ -47,7 +47,6 @@ import android.content.res.Configuration import android.content.res.Resources import android.os.Build import android.os.Handler -import android.util.ArrayMap import androidx.annotation.RequiresApi import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.hook.core.api.compat.HookApiProperty @@ -111,7 +110,7 @@ internal object AppParasitics { private var isClassLoaderHooked = false /** [ClassLoader] 监听回调数组 */ - private var classLoaderCallbacks = ArrayMap) -> Unit>() + private var classLoaderCallbacks = mutableMapOf) -> Unit>() /** * 当前 Hook APP (宿主) 的全局生命周期 [Application] @@ -476,9 +475,9 @@ internal object AppParasitics { internal var onConfigurationChangedCallback: ((Application, Configuration) -> Unit)? = null /** 系统广播监听回调 */ - internal val onReceiverActionsCallbacks = ArrayMap, (Context, Intent) -> Unit>>() + internal val onReceiverActionsCallbacks = mutableMapOf, (Context, Intent) -> Unit>>() /** 系统广播监听回调 */ - internal val onReceiverFiltersCallbacks = ArrayMap Unit>>() + internal val onReceiverFiltersCallbacks = mutableMapOf Unit>>() } } \ No newline at end of file diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.kt index 358a0977..176ed0b7 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/parasitic/reference/ModuleClassLoader.kt @@ -44,10 +44,10 @@ class ModuleClassLoader private constructor() : ClassLoader(AppParasitics.baseCl private var instance: ModuleClassLoader? = null /** 排除的 Hook APP (宿主) [Class] 类名数组 */ - private val excludeHostClasses = HashSet() + private val excludeHostClasses = mutableSetOf() /** 排除的模块 [Class] 类名数组 */ - private val excludeModuleClasses = HashSet() + private val excludeModuleClasses = mutableSetOf() /** * 获取 [ModuleClassLoader] 单例 diff --git a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt index a5b82b8a..2bae4b8e 100644 --- a/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt +++ b/yukihookapi-core/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt @@ -34,7 +34,6 @@ package com.highcapable.yukihookapi.hook.xposed.prefs import android.content.Context import android.content.SharedPreferences -import android.util.ArrayMap import androidx.preference.PreferenceFragmentCompat import com.highcapable.yukihookapi.YukiHookAPI import com.highcapable.yukihookapi.hook.log.YLog @@ -68,10 +67,10 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu private val isXposedEnvironment = YukiXposedModule.isXposedEnvironment /** 当前缓存的 [XSharedPreferencesDelegate] 实例数组 */ - private val xPrefs = ArrayMap() + private val xPrefs = mutableMapOf() /** 当前缓存的 [SharedPreferences] 实例数组 */ - private val sPrefs = ArrayMap() + private val sPrefs = mutableMapOf() /** * 创建 [YukiHookPrefsBridge] 对象 @@ -269,10 +268,10 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu * * - 建议使用 [PrefsData] 创建模板并使用 [get] 获取数据 * @param key 键值名称 - * @param value 默认数据 - [HashSet]<[String]> + * @param value 默认数据 - [MutableSet]<[String]> * @return [Set]<[String]> */ - fun getStringSet(key: String, value: Set = hashSetOf()) = makeWorldReadable { + fun getStringSet(key: String, value: Set = mutableSetOf()) = makeWorldReadable { if (isXposedEnvironment && isUsingNativeStorage.not()) currentXsp.getStringSet(key, value) ?: value else currentSp.getStringSet(key, value) ?: value @@ -385,9 +384,9 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu * - 智能识别对应环境读取键值数据 * * - 每次调用都会获取实时的数据 - 不受缓存控制 - 请勿在高并发场景中使用 - * @return [HashMap] 全部类型的键值数组 + * @return [MutableMap] 全部类型的键值数组 */ - fun all() = hashMapOf().apply { + fun all() = mutableMapOf().apply { if (isXposedEnvironment && isUsingNativeStorage.not()) currentXsp.all.forEach { (k, v) -> this[k] = v } else currentSp.all.forEach { (k, v) -> this[k] = v }