Skip to content

Commit

Permalink
remove bottom controller bar
Browse files Browse the repository at this point in the history
  • Loading branch information
GangJust committed Jan 12, 2024
1 parent 28bdcea commit 968f1d6
Show file tree
Hide file tree
Showing 45 changed files with 324 additions and 327 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ android {
applicationId "io.github.fplus"
minSdk 24
targetSdk 33
versionCode 112
versionName "1.2.5"
versionCode 117
versionName "1.2.6"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/assets/update.log
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
v1.2.6
增加下载弹窗文案复制选项
增加视频右侧控件栏自定义隐藏
增加视频右侧控件自定义隐藏
增加视频右侧控件在视频控件透明基础上的再次调整
增加评论区展开时顶部搜索按钮移除(无需设置)
增加部分版本暂停视频时底部控制栏隐藏
调整状态栏、导航栏沉浸模式为自动隐藏
移除“分享->复制链接”无水印下载方式
修复部分小问题
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/assets/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.5-112
1.2.6-117
27 changes: 13 additions & 14 deletions app/src/main/java/io/github/fplus/Themes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -112,23 +112,22 @@ object Themes {
colors = nowColors.colors,
typography = nowTypography,
shapes = ShapeRes.defaultShapes,
content = {
//沉浸式状态栏
rememberSystemUiController().run {
setSystemBarsColor(
color = nowColors.colors.background,
darkIcons = !Themes.isDark,
)
}
//沉浸式则补充间隙
Surface(
modifier = if (Themes.isImmersive) Modifier.windowInsetsPadding(WindowInsets.systemBars) else Modifier,
){
//沉浸式状态栏
rememberSystemUiController().run {
setSystemBarsColor(
color = nowColors.colors.background,
contentColor = nowColors.colors.background,
content = { content() }
darkIcons = !Themes.isDark,
)
}
)
//沉浸式则补充间隙
Surface(
modifier = if (Themes.isImmersive) Modifier.windowInsetsPadding(WindowInsets.systemBars) else Modifier,
color = nowColors.colors.background,
contentColor = nowColors.colors.background,
content = content,
)
}
}
}

Expand Down
10 changes: 5 additions & 5 deletions core/src/main/java/io/github/fplus/Constant.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ object Constant {
val modulePackage = "io.github.fplus"

val scopes = arrayOf(
"com.ss.android.ugc.aweme" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication",
"com.ss.android.ugc.aweme.lite" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication",
"com.ss.android.ugc.live" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication",
"com.ss.android.ugc.awemf" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication", // test
"com.ss.android.ugc.awemg" at "com.ss.android.ugc.aweme.app.host.AwemeHostApplication", // test
"com.ss.android.ugc.aweme" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.aweme"),
"com.ss.android.ugc.aweme.lite" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.aweme.lite"),
"com.ss.android.ugc.live" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.live"),
"com.ss.android.ugc.awemf" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.awemf"), // test
"com.ss.android.ugc.awemg" at ("com.ss.android.ugc.aweme.app.host.AwemeHostApplication" to "com.ss.android.ugc.awemg"), // test
)

}
7 changes: 2 additions & 5 deletions core/src/main/java/io/github/fplus/HookInit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import android.app.Application
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.fplus.core.hook.DouYinMain
import io.github.xpler.HookEntrance
import io.github.xpler.core.log.XplerLog
import io.github.xpler.core.wrapper.ApplicationHookStart
import io.github.xpler.core.wrapper.DefaultHookStart

class HookInit : HookEntrance<HookInit>(), ApplicationHookStart {
override val modulePackage: String
Expand All @@ -15,12 +13,11 @@ class HookInit : HookEntrance<HookInit>(), ApplicationHookStart {
override val scopes: Array<ApplicationHookStart.Scope>
get() = Constant.scopes

override fun onCreateBefore(lpparam: XC_LoadPackage.LoadPackageParam, hostApp: Application) {
override fun onCreateBefore(lp: XC_LoadPackage.LoadPackageParam, hostApp: Application) {
//
}

override fun onCreateAfter(lpparam: XC_LoadPackage.LoadPackageParam, hostApp: Application) {
XplerLog.d("Freedom+: starting!!")
override fun onCreateAfter(lp: XC_LoadPackage.LoadPackageParam, hostApp: Application) {
DouYinMain(hostApp)
}
}
4 changes: 1 addition & 3 deletions core/src/main/java/io/github/fplus/core/base/BaseHook.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import com.freegang.ktutils.app.IProgressNotification
import com.freegang.ktutils.app.KNotifiUtils
import com.freegang.ktutils.app.KToastUtils
import com.freegang.ktutils.app.isDarkMode
import de.robv.android.xposed.callbacks.XC_LoadPackage
import io.github.fplus.core.R
import io.github.fplus.core.databinding.DialogChoiceLayoutBinding
import io.github.fplus.core.databinding.DialogInputChoiceLayoutBinding
Expand All @@ -45,8 +44,7 @@ import kotlinx.coroutines.cancelChildren
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch

abstract class BaseHook<T>(lpparam: XC_LoadPackage.LoadPackageParam) :
HookEntity<T>(lpparam) {
abstract class BaseHook<T>() : HookEntity<T>() {
protected val handler: Handler = Handler(Looper.getMainLooper())
private val mainScope: CoroutineScope = CoroutineScope(Dispatchers.Main)
private var toast: Toast? = null
Expand Down
24 changes: 20 additions & 4 deletions core/src/main/java/io/github/fplus/core/config/ConfigV1.kt
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,16 @@ class ConfigV1 private constructor() {
field = value
}

/// 首页控件透明度 [顶部导航, 视频控件, 底部导航]
var translucentValue: List<Int> = listOf(50, 50, 50)
/// 首页控件透明度 [顶部导航, 视频控件, 视频控件右侧, 底部导航]
var translucentValue: List<Int> = listOf(50, 50, 50, 50)
get() {
field = mmkv.getString("translucentValue", "50, 50, 50")!!.split(",").map { it.trim().toInt() }
return field
field = mmkv.getString("translucentValue", "50, 50, 50, 50")!!.split(",").map { it.trim().toInt() }

return if (field.size == 3) {
listOf(field[0], field[1], field[1], field[2])
} else {
field
}
}
set(value) {
mmkv.putString("translucentValue", value.joinToString())
Expand Down Expand Up @@ -306,6 +311,17 @@ class ConfigV1 private constructor() {
field = value
}

/// 移除底部播放控制栏
var isRemoveBottomCtrlBar: Boolean = false
get() {
field = mmkv.getBoolean("isRemoveBottomCtrlBar", false)
return field
}
set(value) {
mmkv.putBoolean("isRemoveBottomCtrlBar", value)
field = value
}

/// 全屏沉浸式
var isImmersive: Boolean = false
get() {
Expand Down
101 changes: 31 additions & 70 deletions core/src/main/java/io/github/fplus/core/helper/DexkitBuilder.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,14 @@ object DexkitBuilder {
var conversationFragmentClazz: Class<*>? = null
var seekBarSpeedModeBottomContainerClazz: Class<*>? = null
var poiCreateInstanceImplClazz: Class<*>? = null
var videoPlayerStateClazz: Class<*>? = null
var videoPlayerHelperClazz: Class<*>? = null
var abstractFeedAdapterClazz: Class<*>? = null
var recommendFeedFetchPresenterClazz: Class<*>? = null
var fullFeedFollowFetchPresenterClazz: Class<*>? = null
var detailPageFragmentClazz: Class<*>? = null
var emojiApiProxyClazz: Class<*>? = null
var emojiPopupWindowClazz: Class<*>? = null
var ripsChatRoomFragmentClazz: Class<*>? = null
var bottomCtrlBarClazz: Class<*>? = null
var restartUtilsClazz: Class<*>? = null

// methods
Expand Down Expand Up @@ -97,7 +96,7 @@ object DexkitBuilder {
* Dexkit开始搜索
*/
private fun startSearch() {
KLogCat.tagD(TAG, "Dexkit开始搜索")
KLogCat.tagD(TAG, "Dexkit开始搜索: ${lpparam.appInfo.sourceDir}")
System.loadLibrary("dexkit")
DexKitBridge.create(lpparam.appInfo.sourceDir).use { bridge ->
searchClass(bridge)
Expand Down Expand Up @@ -310,52 +309,6 @@ object DexkitBuilder {
}
}.singleInstance("poiCreateInstanceImpl")

videoPlayerStateClazz = bridge.findClass {
matcher {
fields {
add {
type = "com.ss.android.ugc.aweme.feed.model.Aweme"
}
add {
type = "java.lang.String"
}
add {
type = "int"
}
add {
type {
modifiers = Modifier.INTERFACE
}
}
}

methods {
add {
name = "<init>"
params {
add {
type = "com.ss.android.ugc.aweme.feed.model.Aweme"
}
add {
type = "java.lang.String"
}
add {
type = "int"
}
add {
type = "int"
}
add {
type {
modifiers = Modifier.INTERFACE
}
}
}
}
}
}
}.singleInstance("videoPlayerState")

emojiApiProxyClazz = bridge.findClass {
matcher {
fields {
Expand Down Expand Up @@ -423,6 +376,29 @@ object DexkitBuilder {
}
}.singleInstance("mainBottomTabView")

bottomCtrlBarClazz = bridge.findClass {
searchPackages("X")
matcher {
superClass = "android.widget.FrameLayout"
fields {
add {
annotations {
add {
type = "dalvik.annotation.Signature"
addElement {
name = "value"
arrayValue {
addString("IPauseCtrlAction")
}
}
}
}
}
}

}
}.singleInstance("bottomCtrlBar")

restartUtilsClazz = bridge.findClass {
searchPackages("X")
matcher {
Expand Down Expand Up @@ -455,18 +431,9 @@ object DexkitBuilder {
"DetailActOtherNitaView",
)
}
addSearchGroup {
groupName = "ripsChatRoomFragment"
usingStrings = listOf(
"com/ss/android/ugc/aweme/im/sdk/chat/rips/RipsChatRoomFragment",
"RipsChatRoomFragment",
"a1128.b17614",
)
}
}
DexkitBuilder.videoPlayerHelperClazz = findMaps.singleInstance("videoPlayerHelper")
DexkitBuilder.detailPageFragmentClazz = findMaps.singleInstance("detailPageFragment")
DexkitBuilder.ripsChatRoomFragmentClazz = findMaps.singleInstance("ripsChatRoomFragment")
}

/**
Expand All @@ -485,11 +452,10 @@ object DexkitBuilder {
type = "com.ss.android.ugc.aweme.feed.ui.PenetrateTouchRelativeLayout"
}
}
}

params {
add {
type = "java.lang.Boolean"
field {
type = "com.ss.android.ugc.aweme.feed.model.VideoItemParams"
}
}
}

Expand Down Expand Up @@ -546,15 +512,14 @@ object DexkitBuilder {
conversationFragmentClazz = classCache.getStringOrDefault("conversationFragment").loadOrFindClass()
seekBarSpeedModeBottomContainerClazz = classCache.getStringOrDefault("seekBarSpeedModeBottomContainer").loadOrFindClass()
poiCreateInstanceImplClazz = classCache.getStringOrDefault("poiCreateInstanceImpl").loadOrFindClass()
videoPlayerStateClazz = classCache.getStringOrDefault("videoPlayerState").loadOrFindClass()
videoPlayerHelperClazz = classCache.getStringOrDefault("videoPlayerHelper").loadOrFindClass()
abstractFeedAdapterClazz = classCache.getStringOrDefault("abstractFeedAdapter").loadOrFindClass()
recommendFeedFetchPresenterClazz = classCache.getStringOrDefault("recommendFeedFetchPresenter").loadOrFindClass()
fullFeedFollowFetchPresenterClazz = classCache.getStringOrDefault("fullFeedFollowFetchPresenter").loadOrFindClass()
emojiPopupWindowClazz = classCache.getStringOrDefault("emojiPopupWindow").loadOrFindClass()
detailPageFragmentClazz = classCache.getStringOrDefault("detailPageFragment").loadOrFindClass()
emojiApiProxyClazz = classCache.getStringOrDefault("emojiApiProxy").loadOrFindClass()
ripsChatRoomFragmentClazz = classCache.getStringOrDefault("ripsChatRoomFragment").loadOrFindClass()
bottomCtrlBarClazz = classCache.getStringOrDefault("bottomCtrlBar").loadOrFindClass()
restartUtilsClazz = classCache.getStringOrDefault("restartUtils").loadOrFindClass()
}

Expand Down Expand Up @@ -638,13 +603,9 @@ object DexkitBuilder {
}

return try {
app?.classLoader?.loadClass(this)
app?.classLoader?.loadClass(this) ?: lpparam.findClass(this)
} catch (e: Throwable) {
if (e is LinkageError && "${e.message}".contains("overrides final")) {
return null // 过滤类似错误
}

lpparam.findClass(this)
null
}
}
}
Loading

0 comments on commit 968f1d6

Please sign in to comment.