我有一个Activity的视图绑定扩展。实现如下:
inline fun <reified T : ViewBinding> Activity.viewBinding() = ActivityViewBindingDelegate(T::class.java)
class ActivityViewBindingDelegate<T : ViewBinding>(private val bindingClass: Class<T>) : ReadOnlyProperty<Activity, T> {
/**
* initiate variable for binding view
*/
private var binding: T? = null
@Suppress("UNCHECKED_CAST")
override fun getValue(thisRef: Activity, property: KProperty<*>): T {
binding?.let { return it }
/**
* inflate View class
*/
val inflateMethod = bindingClass.getMethod("inflate", LayoutInflater::class.java)
/**
* Bind layout
*/
val invokeLayout = inflateMethod.invoke(null, thisRef.layoutInflater) as T
/**
* Set the content view
*/
thisRef.setContentView(invokeLayout.root)
return invokeLayout.also { this.binding = it }
}
}
字符串
当我在调试变量中运行我的应用程序时,一切正常。
当我在版本变量中运行我的应用时,在运行时Activity启动时,我会遇到以下异常:
Caused by: java.lang.NoSuchMethodException: com.x.y.z.j.h1.inflate [class android.view.LayoutInflater]
型
isMinifyEnabled = true isShrinkResources = true是否已启用最小化= true是否收缩资源= true
我必须混淆我的活动。如何解决这一问题?
3条答案
按热度按时间cbeh67ev1#
添加proguard-rules
字符串
3npbholx2#
字符串
和/或
型
使用R8混淆进行混淆。所以我得到了这个例外。我们应该排除对inflate和bind方法的混淆。
因此,必须添加以下内容以使用片段和活动的视图绑定扩展函数
型
它解决了我的问题。
n1bvdmb63#
字符串