import{_ as p,r as a,o as r,c as t,b as s,d as n,e as l,w as c,a as i}from"./app-mh6GuRj9.js";const d={},A=s("h1",{id:"third-party-member-resolvers",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#third-party-member-resolvers","aria-hidden":"true"},"#"),n(" Third-party Member Resolvers")],-1),y=s("p",null,"Here are some third-party Member resolvers for reference and use.",-1),D=s("h2",{id:"androidhiddenapibypass",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#androidhiddenapibypass","aria-hidden":"true"},"#"),n(" AndroidHiddenApiBypass")],-1),B={href:"https://github.com/LSPosed/AndroidHiddenApiBypass",target:"_blank",rel:"noopener noreferrer"},C=i(`

LSPosed: Bypass restrictions on non-SDK interfaces

class AndroidHiddenApiBypassResolver : MemberProcessor.Resolver() {

    override fun <T : Any> getDeclaredConstructors(declaringClass: Class<T>): List<Constructor<T>> {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
            return super.getDeclaredConstructors(declaringClass)
        }

        val constructors = HiddenApiBypass.getDeclaredMethods(declaringClass)
            .filterIsInstance<Constructor<T>>()
            .toList()
        return constructors
    }

    override fun <T : Any> getDeclaredMethods(declaringClass: Class<T>): List<Method> {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
            return super.getDeclaredMethods(declaringClass)
        }

        val methods = HiddenApiBypass.getDeclaredMethods(declaringClass)
            .filterIsInstance<Method>()
            .toList()
        return methods
    }
}
`,2);function u(v,m){const e=a("RouterLink"),o=a("ExternalLinkIcon");return r(),t("div",null,[A,s("blockquote",null,[y,s("p",null,[n("Please read "),l(e,{to:"/en/library/kavaref-core.html#custom-resolver"},{default:c(()=>[n("Custom Resolver")]),_:1}),n(" for usage instructions.")])]),D,s("p",null,[s("a",B,[n("Project URL"),l(o)])]),C])}const b=p(d,[["render",u],["__file","processor-resolvers.html.vue"]]);export{b as default};