diff --git a/projects/sdk/core/transform/src/main/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransform.kt b/projects/sdk/core/transform/src/main/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransform.kt index 79bfbc2ea..f5a324fe7 100644 --- a/projects/sdk/core/transform/src/main/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransform.kt +++ b/projects/sdk/core/transform/src/main/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransform.kt @@ -20,7 +20,11 @@ package com.tencent.shadow.core.transform.specific import com.tencent.shadow.core.transform_kit.SpecificTransform import com.tencent.shadow.core.transform_kit.TransformStep -import javassist.* +import javassist.CodeConverter +import javassist.CtClass +import javassist.CtMethod +import javassist.Modifier +import javassist.NotFoundException import javassist.compiler.Javac.CtFieldWithInit /** @@ -70,7 +74,7 @@ class ReceiverSupportTransform : SpecificTransform() { } catch (e: NotFoundException) { null } - if (onReceiveMethod != null) { + if (onReceiveMethod != null && !Modifier.isVolatile(onReceiveMethod.modifiers)) { targetReceivers.add(ctClass) } } diff --git a/projects/sdk/core/transform/src/test/java/test/EggReceiver.java b/projects/sdk/core/transform/src/test/java/test/EggReceiver.java new file mode 100644 index 000000000..851f80fed --- /dev/null +++ b/projects/sdk/core/transform/src/test/java/test/EggReceiver.java @@ -0,0 +1,27 @@ +package test; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import java.util.List; + +abstract class EggReceiver extends BroadcastReceiver { + List log; + + EggReceiver(List log) { + this.log = log; + } + + @Override + public void onReceive(Context context, Intent intent) { + log.add("EggReceiver onReceive"); + } + + public static class FoxReceiver extends EggReceiver { + FoxReceiver(List log) { + super(log); + } + } + +} diff --git a/projects/sdk/core/transform/src/test/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransformTest.kt b/projects/sdk/core/transform/src/test/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransformTest.kt index 9e15aa860..8eabf8b27 100644 --- a/projects/sdk/core/transform/src/test/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransformTest.kt +++ b/projects/sdk/core/transform/src/test/kotlin/com/tencent/shadow/core/transform/specific/ReceiverSupportTransformTest.kt @@ -21,6 +21,8 @@ class ReceiverSupportTransformTest : AbstractTransformTest() { "test.BarReceiver", "test.CatReceiver", "test.DogReceiver", + "test.EggReceiver", + "test.EggReceiver\$FoxReceiver", ) ].toMutableSet()