Skip to content

Commit

Permalink
optimize
Browse files Browse the repository at this point in the history
  • Loading branch information
GangJust committed Jul 8, 2024
1 parent 187cc3d commit d0993ef
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.ss.android.ugc.aweme.video.simplayer;

public interface ISimPlayer {
void setSpeed(float speed);
}
64 changes: 64 additions & 0 deletions core/src/main/java/io/github/fplus/core/helper/SpeedPlayHelper.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package io.github.fplus.core.helper

import android.app.Activity
import android.content.Context
import com.freegang.extension.findFieldGetValue
import com.freegang.extension.findMethodInvoke
import com.ss.android.ugc.aweme.video.simplayer.ISimPlayer
import io.github.xpler.core.findClass
import io.github.xpler.core.log.XplerLog
import io.github.xpler.core.lpparam
import io.github.xpler.loader.hostClassloader

// 暂存
@ExperimentalStdlibApi
object SpeedPlayHelper {

// 30.5.0_300501
@ExperimentalStdlibApi
fun setSpeed(speed: Float) {
runCatching {
val helperClazz = lpparam.findClass("X.0BRk") // future
val helper = helperClazz.findFieldGetValue<Any> { type(helperClazz) }
val simPlayer = helper?.findMethodInvoke<ISimPlayer> { returnType(ISimPlayer::class.java) }
simPlayer?.setSpeed(speed)
}.onFailure {
XplerLog.e(it)
}
}

// 30.5.0_300501
@ExperimentalStdlibApi
fun setSpeed(context: Context, aid: String, fragmentTag: String, speed: Float) {
XplerLog.i("aid: $aid", "fragmentTag: $fragmentTag", "speed: $speed")

val speedViewModelClazz = lpparam.findClass("X.0BUf", hostClassloader) // future
val activityUtilClazz = lpparam.findClass("com.bytedance.bdp.bdpbase.util.ActivityUtil", hostClassloader)
val tripleClazz = lpparam.findClass("kotlin.Triple", hostClassloader)

val activityIfNecessary = activityUtilClazz.findMethodInvoke<Activity>(context) { name("getActivityIfNecessary") }
if (activityIfNecessary != null) {
val viewModel = getViewModel(activityIfNecessary, speedViewModelClazz)
val liveData = viewModel?.findFieldGetValue<Any> { name("LIZ") } // future

val triple = tripleClazz
.getConstructor(Any::class.java, Any::class.java, Any::class.java)
.newInstance(aid, fragmentTag, speed)

liveData?.findMethodInvoke<Any>(triple) { name("setValue") }
} else {
XplerLog.e("speed ViewModel not found!")
}
}

// activity must be extends FragmentActivity
private fun getViewModel(activity: Activity, vm: Class<*>): Any? {
val viewModelProvidersClazz = lpparam.findClass("androidx.lifecycle.ViewModelProviders", hostClassloader)
val fragmentActivityClazz = lpparam.findClass("androidx.fragment.app.FragmentActivity", hostClassloader)
val viewModelProvider = viewModelProvidersClazz.findMethodInvoke<Any>(activity) {
name("of")
parameterTypes(listOf(fragmentActivityClazz))
}
return viewModelProvider?.findMethodInvoke<Any>(vm) { name("get") }
}
}
14 changes: 2 additions & 12 deletions core/src/main/java/io/github/fplus/core/hook/HCrashTolerance.kt
Original file line number Diff line number Diff line change
@@ -1,35 +1,25 @@
package io.github.fplus.core.hook

import com.freegang.ktutils.app.KAppUtils
import com.freegang.ktutils.app.KToastUtils
import com.ss.android.ugc.aweme.feed.model.VideoItemParams
import com.ss.android.ugc.aweme.kiwi.model.QModel
import de.robv.android.xposed.XC_MethodHook
import io.github.fplus.core.base.BaseHook
import io.github.fplus.core.config.ConfigV1
import io.github.fplus.core.helper.DexkitBuilder
import io.github.xpler.core.entity.EmptyHook
import io.github.xpler.core.entity.NoneHook
import io.github.xpler.core.entity.OnAfter
import io.github.xpler.core.hookBlockRunning
import io.github.xpler.core.wrapper.CallMethods

/// 崩溃容错,处理官方可能造成的系列崩溃问题
class HCrashTolerance : BaseHook() {
class HCrashTolerance {
companion object {
const val TAG = "HCrashTolerance"
}

val config get() = ConfigV1.get()

override fun setTargetClass(): Class<*> {
return EmptyHook::class.java
}

override fun onInit() {
// if (!config.isCrashTolerance)
// return

init {
HPoiFeed()
HLivePhoto()
HTabLanding()
Expand Down

0 comments on commit d0993ef

Please sign in to comment.