Shadow icon indicating copy to clipboard operation
Shadow copied to clipboard

零反射全动态Android插件框架

Results 264 Shadow issues
Sort by recently updated
recently updated
newest added

开发中偶然发现如下问题: 正常情况下,宿主中的类classloader的子父关系如下: class -> PathClassLoader -> BootClassLoader 但是加载了一个运行在宿主进程的插件后,宿主中的类classloader的子父关系发生改变: class -> PathClassLoader -> DynamicRuntime$RuntimeClassLoader -> BootClassLoader 请问这种情况是预期设计吗?是否会对宿主中的类产生影响?

在使用MultiLoaderPluginProcessService进行单进程多插件实践的时候出现的问题。 启动A插件时会注册进程级别的ActivityLifeCyclerCallback。这个Callback里加载的PluginActivity为插件A的loader所属的classLoader加载的。 在启动B插件Activity的时候,该activity的生命周期会回调到A中的callback里。但是在ShadowActivityLifecycleCallbacks.Wrapper.getPluginActivity()方法中,会出现将B中的加载PluginActivity实例去墙转成A中加载的PluginActivity的class,出现cast 异常。 private ShadowActivity getPluginActivity(Activity activity) { // a if (activity instanceof PluginContainerActivity) { return (ShadowActivity) PluginActivity.get((PluginContainerActivity) activity); } else { return null; } } public abstract class...

bug

* What went wrong: Execution failed for task ':mggkpluginapp:minifyDebugWithR8'. > com.android.tools.r8.CompilationFailedException: Compilation failed to complete Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete at com.android.tools.r8.utils.W.a(:87) at com.android.tools.r8.R8.a(:28) at com.android.tools.r8.R8.run(:3) at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:247)...

执行全量自动化测试时dump内存,发现Activity内存泄露。 由于ServiceContextSubDirTestActivity的ServiceConnection被com.tencent.shadow.core.loader.managers.UnsafePluginServiceManager#mConnectionIntentMap 持有。 https://github.com/Tencent/Shadow/blob/e38755ec8fb77adfb5e7e96d8631dd04a1626422/projects/test/plugin/general-cases/test-plugin-general-cases/src/main/java/com/tencent/shadow/test/plugin/general_cases/lib/usecases/context/ServiceContextSubDirTestActivity.java#L44 https://github.com/Tencent/Shadow/blob/9f0c762d5c11afb48e088be1f0c3abe3d6f1da1c/projects/sdk/core/loader/src/main/kotlin/com/tencent/shadow/core/loader/managers/PluginServiceManager.kt#L95 [memory-20220506T153206.hprof.zip](https://github.com/Tencent/Shadow/files/8638336/memory-20220506T153206.hprof.zip)

bug

在插件Activity中弹出一个dialog, dialog 构造方法中使用插件内自定义style. 的动画没有生效。 通过debug发现此时的dialog的Resource对象的classloder 关系是PathClassLoder -> RuntimeClassLoader,猜测导致styleID 找不到。不知道是否是bug?

插件项目中执行gradlew packageDebugPlugin,出现报错: * What went wrong: Execution failed for task ':app:transformClassesWithShadowTransformForPluginDebug'. > 存在转换后被调用方法未实现的问题,详见------ Class com.tencent.shadow.core.runtime.ShadowInstrumentation中缺少方法: callActivityOnPause:(Lcom/tencent/shadow/core/runtime/ShadowActivity;)V被这些类调用了: urn.u6 callActivityOnResume:(Lcom/tencent/shadow/core/runtime/ShadowActivity;)V被这些类调用了: urn.u6 callActivityOnNewIntent:(Lcom/tencent/shadow/core/runtime/ShadowActivity;Landroid/content/Intent;)V被这些类调用了: urn.u6

bug

不知都 有没有h和我相同问题的 来讨论一下 ![image](https://user-images.githubusercontent.com/20254978/157831114-d1e6c9fb-753b-4242-9be0-2a5420e47189.png)

bug

请问在怎么让指定的类中的Application保持原有类型,保持插件(或者指定类)的Application会不会有影响

报错日志: 2020-10-28 17:23:49.328 29602-30188/com.slp.apkhost E/com.tencent.shadow.dynamic.manager.BaseDynamicPluginManager: getPlugin exception: java.lang.NullPointerException: Attempt to read from field 'java.io.File com.tencent.shadow.core.manager.installplugin.InstalledPlugin$Part.pluginFile' on a null object reference at com.tencent.shadow.dynamic.manager.BaseDynamicPluginManager.getPlugin(BaseDynamicPluginManager.java:192) at com.tencent.shadow.dynamic.manager.UuidManagerBinder.onTransact(UuidManagerBinder.java:50) at android.os.Binder.execTransactInternal(Binder.java:1021) at android.os.Binder.execTransact(Binder.java:994) at android.os.BinderProxy.transactNative(Native...

现在接入过程中ProxyActivity theme注册成透明,在Actvity启动模式为singleTop时,同一ProxyActivity跳转,部分手机能看到上一个Activity.关闭false时就不会出现。想知道这些设置是否是必须的?