Skip to content

Commit

Permalink
optimize code
Browse files Browse the repository at this point in the history
  • Loading branch information
GangJust committed Dec 11, 2023
1 parent 9ebb619 commit b432924
Show file tree
Hide file tree
Showing 13 changed files with 95 additions and 115 deletions.
97 changes: 43 additions & 54 deletions core/src/main/java/io/github/fplus/core/helper/DexkitBuilder.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@ object DexkitBuilder {
var poiCreateInstanceImplClazz: Class<*>? = null
var videoPlayerStateClazz: Class<*>? = null
var videoPlayerHelperClazz: Class<*>? = null
var videoPinchViewClazz: Class<*>? = null
var videoPagerAdapterClazz: Class<*>? = null
var recommendFeedFetchPresenterClazz: Class<*>? = null
var fullFeedFollowFetchPresenterClazz: Class<*>? = null
var detailPageFragmentClazz: Class<*>? = null
Expand Down Expand Up @@ -98,7 +96,7 @@ object DexkitBuilder {
private fun startSearch() {
KLogCat.tagD(TAG, "Dexkit开始搜索")
System.loadLibrary("dexkit")
DexKitBridge.create(lpparam.appInfo.sourceDir)?.use { bridge ->
DexKitBridge.create(lpparam.appInfo.sourceDir).use { bridge ->
searchClass(bridge)
searchMethod(bridge)
}
Expand Down Expand Up @@ -201,43 +199,6 @@ object DexkitBuilder {
}
}.singleInstance("conversationFragment")

videoPinchViewClazz = bridge.findClass {
matcher {
fields {
add {
type = "com.ss.android.ugc.aweme.feed.ui.seekbar.CustomizedUISeekBar"
}
}
methods {
add {
name = "getMOriginView"
returnType = "android.view.View"
}
add {
name = "handleMsg"
paramTypes = listOf("android.os.Message")
}
}
}
}.singleInstance("videoPinchView")

videoPagerAdapterClazz = bridge.findClass {
matcher {
methods {
add {
this.returnType = "java.util.List"
}
add {
paramTypes = listOf("com.ss.android.ugc.aweme.feed.model.Aweme")
returnType = "com.ss.android.ugc.aweme.feed.model.Aweme"
}
add {
returnType = "com.ss.android.ugc.aweme.feed.adapter.FeedImageViewHolder"
}
}
}
}.singleInstance("videoPagerAdapter")

recommendFeedFetchPresenterClazz = bridge.findClass {
matcher {
methods {
Expand Down Expand Up @@ -393,15 +354,47 @@ object DexkitBuilder {
}
}.singleInstance("emojiApiProxy")

val findMaps = bridge.batchFindClassUsingStrings {
addSearchGroup {
groupName = "mainBottomTabView"
usingStrings = listOf(
"alpha",
"translationY",
"MainBottomTabView",
)
mainBottomTabViewClazz = bridge.findClass {
matcher {
superClass = "android.widget.FrameLayout"

fields {
add {
type = "com.bytedance.dux.image.DuxImageView"
}
}

methods {
add {
name = "getBottomColor"
}
add {
name = "setBackgroundDrawable"
paramTypes = listOf("android.graphics.drawable.Drawable")
}
add {
name = "setBackgroundResource"
}
add {
name = "setBackgroundColor"
}
add {
name = "setVisibility"
}
add {
name = "setAlpha"
}
}

usingStrings {
add("alpha", StringMatchType.Equals)
add("translationY", StringMatchType.Equals)
add("MainBottomTabView", StringMatchType.Equals)
}
}
}.singleInstance("mainBottomTabView")

val findMaps = bridge.batchFindClassUsingStrings {
addSearchGroup {
groupName = "videoPlayerHelper"
usingStrings = listOf(
Expand All @@ -427,8 +420,6 @@ object DexkitBuilder {
)
}
}

DexkitBuilder.mainBottomTabViewClazz = findMaps.singleInstance("mainBottomTabView")
DexkitBuilder.videoPlayerHelperClazz = findMaps.singleInstance("videoPlayerHelper")
DexkitBuilder.detailPageFragmentClazz = findMaps.singleInstance("detailPageFragment")
DexkitBuilder.ripsChatRoomFragmentClazz = findMaps.singleInstance("ripsChatRoomFragment")
Expand Down Expand Up @@ -513,8 +504,6 @@ object DexkitBuilder {
poiCreateInstanceImplClazz = classCache.getStringOrDefault("poiCreateInstanceImpl").loadOrFindClass()
videoPlayerStateClazz = classCache.getStringOrDefault("videoPlayerState").loadOrFindClass()
videoPlayerHelperClazz = classCache.getStringOrDefault("videoPlayerHelper").loadOrFindClass()
videoPinchViewClazz = classCache.getStringOrDefault("videoPinchView").loadOrFindClass()
videoPagerAdapterClazz = classCache.getStringOrDefault("videoPagerAdapter").loadOrFindClass()
recommendFeedFetchPresenterClazz = classCache.getStringOrDefault("recommendFeedFetchPresenter").loadOrFindClass()
fullFeedFollowFetchPresenterClazz = classCache.getStringOrDefault("fullFeedFollowFetchPresenter").loadOrFindClass()
emojiPopupWindowClazz = classCache.getStringOrDefault("emojiPopupWindow").loadOrFindClass()
Expand Down Expand Up @@ -551,14 +540,14 @@ object DexkitBuilder {
private fun Map<String, ClassDataList>.singleInstance(key: String): Class<*>? {
val classData = this[key]?.singleOrNull()
KLogCat.tagD(TAG, "found-class[$key]: ${classData?.name}")
classCacheJson.put(key, classData?.name)
classCacheJson.put(key, "${classData?.name}")
return classData?.getInstance(lpparam.classLoader)
}

private fun ClassDataList.singleInstance(label: String): Class<*>? {
val classData = this.singleOrNull()
KLogCat.tagD(TAG, "found-class[$label]: ${classData?.name}")
classCacheJson.put(label, classData?.name)
classCacheJson.put(label, "${classData?.name}")
return classData?.getInstance(lpparam.classLoader)
}

Expand Down
4 changes: 2 additions & 2 deletions core/src/main/java/io/github/fplus/core/hook/DouYinMain.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class DouYinMain(private val app: Application) {
// 日志工具
KLogCat.init(app)
KLogCat.clearStorage()
KLogCat.silence() //静默
// KLogCat.silence() //静默

// 全局异常捕获工具
val intent = Intent()
Expand All @@ -71,7 +71,7 @@ class DouYinMain(private val app: Application) {
// search and hook
DexkitBuilder.running(
app = app,
version = 2,
version = 3,
searchBefore = {
HActivity(lpparam)
HMainActivity(lpparam)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ import com.freegang.ktutils.display.dip2px
import com.freegang.ktutils.extension.asOrNull
import com.freegang.ktutils.log.KLogCat
import com.freegang.ktutils.reflect.fieldGets
import com.freegang.ktutils.view.traverse
import com.freegang.ktutils.view.onEachChild
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.fplus.core.base.BaseHook
import io.github.fplus.core.config.ConfigV1
import io.github.xpler.core.OnAfter
import io.github.xpler.core.hookBlockRunning

Expand All @@ -23,22 +24,26 @@ class HBaseCommonLiveViewHolder(lpparam: XC_LoadPackage.LoadPackageParam) :
const val TAG = "HBaseCommonLiveViewHolder"
}

private val config get() = ConfigV1.get()

override fun setTargetClass(): Class<*> {
return findClass("com.ss.android.ugc.aweme.feed.viewholder.BaseCommonLiveViewHolder")
}

@OnAfter("bind")
fun bindAfter(params: XC_MethodHook.MethodHookParam) {
hookBlockRunning(params) {
val view = thisObject.fieldGets(type = View::class.java)
.firstOrNull()
if (config.isImmersive) {
val view = thisObject.fieldGets(type = View::class.java)
.firstOrNull()

// KLogCat.d("view: $view")
if (view is FrameLayout) {
view.traverse { if (background is GradientDrawable) background = null }
val bottomPadding = view.context.dip2px(58f) // BottomTabBarHeight
val viewGroup = view.children.last().asOrNull<ViewGroup>() ?: return
viewGroup.updatePadding(bottom = bottomPadding)
// KLogCat.d("view: $view")
if (view is FrameLayout) {
view.onEachChild { if (background is GradientDrawable) background = null }
val bottomPadding = view.context.dip2px(58f) // BottomTabBarHeight
val viewGroup = view.children.last().asOrNull<ViewGroup>() ?: return
viewGroup.updatePadding(bottom = bottomPadding)
}
}
}.onFailure {
KLogCat.tagE(TAG, it)
Expand Down
8 changes: 4 additions & 4 deletions core/src/main/java/io/github/fplus/core/hook/HDialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import android.widget.TextView
import com.freegang.ktutils.app.KToastUtils
import com.freegang.ktutils.log.KLogCat
import com.freegang.ktutils.text.ellipsis
import com.freegang.ktutils.view.traverseWhere
import com.freegang.ktutils.view.onEachWhereChild
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.fplus.core.base.BaseHook
Expand Down Expand Up @@ -42,22 +42,22 @@ class HDialog(lpparam: XC_LoadPackage.LoadPackageParam) :
return
}

mDecorView.traverseWhere {
mDecorView.onEachWhereChild {
if ("${this.contentDescription}".contains(keywords)) {
dialog.dismiss()
if (config.dialogDismissTips) {
// KToastUtils.show(dialog.context, "弹窗关闭成功!")
KToastUtils.show(dialog.context, "${this.contentDescription.ellipsis(5)}”关闭成功!")
}
return@traverseWhere true
return@onEachWhereChild true
} else if (this is TextView) {
if ("${this.text}".contains(keywords)) {
dialog.dismiss()
if (config.dialogDismissTips) {
// KToastUtils.show(dialog.context, "弹窗关闭成功!")
KToastUtils.show(dialog.context, "${this.text.ellipsis(5)}”关闭成功!")
}
return@traverseWhere true
return@onEachWhereChild true
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package io.github.fplus.core.hook
import com.freegang.ktutils.log.KLogCat
import com.freegang.ktutils.view.postRunning
import com.freegang.ktutils.view.removeInParent
import com.freegang.ktutils.view.traverse
import com.freegang.ktutils.view.onEachChild
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.fplus.core.base.BaseHook
Expand Down Expand Up @@ -44,7 +44,7 @@ class HDisallowInterceptRelativeLayout(lpparam: XC_LoadPackage.LoadPackageParam)
if (config.isImmersive) {
thisViewGroup.postRunning {
runCatching {
traverse {
onEachChild {
// 移除顶部间隔
if (javaClass.name == "android.view.View") {
removeInParent()
Expand Down
10 changes: 5 additions & 5 deletions core/src/main/java/io/github/fplus/core/hook/HMainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ import com.freegang.ktutils.log.KLogCat
import com.freegang.ktutils.reflect.methodInvokeFirst
import com.freegang.ktutils.view.findViewsByExact
import com.freegang.ktutils.view.findViewsByType
import com.freegang.ktutils.view.onEachChild
import com.freegang.ktutils.view.parentView
import com.freegang.ktutils.view.postRunning
import com.freegang.ktutils.view.removeInParent
import com.freegang.ktutils.view.traverse
import com.ss.android.ugc.aweme.feed.model.Aweme
import com.ss.android.ugc.aweme.homepage.ui.titlebar.MainTitleBar
import com.ss.android.ugc.aweme.main.MainActivity
Expand Down Expand Up @@ -165,7 +165,7 @@ class HMainActivity(lpparam: XC_LoadPackage.LoadPackageParam) :
.replace("\\s".toRegex(), "")
.replace("[,,]".toRegex(), "|")
.toRegex()
mainTitleBar?.traverse {
mainTitleBar?.onEachChild {
if (config.isHideTab) {
if ("$contentDescription".contains(hideTabKeywords)) {
isVisible = false
Expand All @@ -191,17 +191,17 @@ class HMainActivity(lpparam: XC_LoadPackage.LoadPackageParam) :
// 底部导航栏全局沉浸式
if (config.isImmersive) {
bottomTabView?.parentView?.background = ColorDrawable(Color.TRANSPARENT)
bottomTabView?.traverse {
bottomTabView?.onEachChild {
background = ColorDrawable(Color.TRANSPARENT)
}
}
}

private fun initDisallowInterceptRelativeLayout() {
if (config.isImmersive) {
disallowInterceptRelativeLayout?.traverse {
disallowInterceptRelativeLayout?.onEachChild {
runCatching {
traverse {
onEachChild {
// 移除顶部间隔
if (javaClass.name == "android.view.View") {
removeInParent()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import android.widget.ImageView
import androidx.core.view.isVisible
import com.freegang.ktutils.app.KToastUtils
import com.freegang.ktutils.log.KLogCat
import com.freegang.ktutils.view.traverse
import com.freegang.ktutils.view.onEachChild
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.fplus.core.base.BaseHook
Expand Down Expand Up @@ -43,12 +43,12 @@ class HMainBottomTabItem(lpparam: XC_LoadPackage.LoadPackageParam) :

private fun isHidePhotoButton(view: View) {
if (!config.isHidePhotoButton) return
view.traverse {
view.onEachChild {
if ("$contentDescription".contains(Regex("拍摄|道具"))) {
// 隐藏按钮
if (config.photoButtonType == 2) {
view.isVisible = false
return@traverse
return@onEachChild
}

// 占位按钮, 移除加号图标
Expand All @@ -61,7 +61,7 @@ class HMainBottomTabItem(lpparam: XC_LoadPackage.LoadPackageParam) :
// 允许拍摄直接结束逻辑
if (config.photoButtonType == 0) {
view.isVisible = true
return@traverse
return@onEachChild
}

// 不允许拍摄
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import android.graphics.drawable.ColorDrawable
import com.freegang.ktutils.extension.isPrimitiveObjectType
import com.freegang.ktutils.log.KLogCat
import com.freegang.ktutils.view.parentView
import com.freegang.ktutils.view.traverse
import com.freegang.ktutils.view.onEachChild
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.fplus.core.base.BaseHook
Expand Down Expand Up @@ -50,7 +50,7 @@ class HMainBottomTabView(lpparam: XC_LoadPackage.LoadPackageParam) :
// 底部导航栏全局沉浸式
if (config.isImmersive) {
thisViewGroup.parentView?.background = ColorDrawable(Color.TRANSPARENT)
thisViewGroup.traverse {
thisViewGroup.onEachChild {
background = ColorDrawable(Color.TRANSPARENT)
}
}
Expand Down
Loading

0 comments on commit b432924

Please sign in to comment.