Code Monkey home page Code Monkey logo

Comments (7)

shifujun avatar shifujun commented on June 19, 2024

AccessibilityService我没去看代码,可能是SDK内置的吧?像IntentService一样是SDK内置的话,我们在transform时是无法修改它的。所以要将它的子类在transform时特殊处理。

如果是这种情况,你可以参考IntentService的transform代码处理。

from shadow.

mintz1chen avatar mintz1chen commented on June 19, 2024

我试一下在transform那里改改看行不行,这个是android sdk里面的服务,我试了调起另外一个extends Service的服务是可以调用的。另外前面我提的另一个问题 #1226 能帮忙看看吗?或者rtx找我:marrkzhong,我给你开个工程权限看看,谢谢

from shadow.

mintz1chen avatar mintz1chen commented on June 19, 2024
class AccessibilityServiceTransform : SimpleRenameTransform(
    mapOf("android.accessibilityservice.AccessibilityService" to "com.tencent.shadow.core.runtime.ShadowAccessibilityService")
)

override val mTransformList: List<SpecificTransform> = listOf(
        ApplicationTransform(),
        ActivityTransform(),
        ServiceTransform(),
        IntentServiceTransform(),
        AccessibilityServiceTransform(),
        InstrumentationTransform(),
        FragmentSupportTransform(),

ShadowAccessibilityService实现照搬系统的AccessibilityService,并去掉androidX的注解
重新打sdk之后宿主manager插件都重新构建,加载插件会报错:

java.lang.RuntimeException: java.lang.IllegalStateException: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.ClassCastException: Cannot cast androidx.core.app.CoreComponentFactory to com.tencent.shadow.core.runtime.ShadowAppComponentFactory
                                                                                                    	at com.tencent.shadow.sample.manager.SamplePluginManager$1.run(SamplePluginManager.java:110)
                                                                                                    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
                                                                                                    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
                                                                                                    	at java.lang.Thread.run(Thread.java:930)
                                                                                                    Caused by: java.lang.IllegalStateException: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.ClassCastException: Cannot cast androidx.core.app.CoreComponentFactory to com.tencent.shadow.core.runtime.ShadowAppComponentFactory
                                                                                                    	at android.os.Parcel.createExceptionOrNull(Parcel.java:2451)
                                                                                                    	at android.os.Parcel.createException(Parcel.java:2427)
                                                                                                    	at android.os.Parcel.readException(Parcel.java:2410)
                                                                                                    	at android.os.Parcel.readException(Parcel.java:2352)
                                                                                                    	at com.tencent.shadow.dynamic.manager.BinderPluginLoader.loadPlugin(BinderPluginLoader.java:50)
                                                                                                    	at com.tencent.shadow.sample.manager.FastPluginManager.loadPlugin(FastPluginManager.java:127)
                                                                                                    	at com.tencent.shadow.sample.manager.FastPluginManager.convertActivityIntent(FastPluginManager.java:110)
                                                                                                    	at com.tencent.shadow.sample.manager.FastPluginManager.startPluginActivity(FastPluginManager.java:102)
                                                                                                    	at com.tencent.shadow.sample.manager.SamplePluginManager$1.run(SamplePluginManager.java:108)
                                                                                                    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
                                                                                                    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
                                                                                                    	at java.lang.Thread.run(Thread.java:930) 

from shadow.

mintz1chen avatar mintz1chen commented on June 19, 2024

上面这个问题原来是因为更改了插件的runtime的gradle文件里面的compileSdkVersion和minSdkVersion导致的,看来runtime里面的配置要跟plugin一样的话还得改其他东西

from shadow.

mintz1chen avatar mintz1chen commented on June 19, 2024

我发现有个问题,这AccessibilityService源码里面用到一些系统接口,在sdk里面没有这些系统接口,会导致编译报错说找不到方法,这样子是只能把这个服务放在宿主里面了?如果插件也要能单独运行的话,插件是也要放一份?

from shadow.

shifujun avatar shifujun commented on June 19, 2024

尽量在shadow的runtime层复制一份AccessibilityService的实现,让插件继承的父类改为shadow中的实现。像IntentService那样。

如果复制实现遇到有些接口根本调用不了,简单复制不可行。就得考虑更复杂转调那些自己实现不了的接口。可能是转调给一个真正的AccessibilityService。具体要看是什么功能。

from shadow.

mintz1chen avatar mintz1chen commented on June 19, 2024

谢谢,最终考虑还是在宿主做个继承AccessibilityService的服务来直接让系统触发,然后再把它里面回调的接口内容同步出去给插件接收处理。这样子你觉得ok不?这个无障碍服务主要是用来做辅助点击的。下午我试过在sdk的runtime里面去实现复制的服务,但是无奈它源码用到的一些系统的类在sdk里面都无法调用,都搬过来的话工作量比较大而且也不知道跑起来有没有问题。

from shadow.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.