sedovalx / gradle-aspectj-binary

Gradle plugin for AspectJ binary weaving
16 stars 6 forks source link

Does it work with Android? #5

Open Blacias opened 5 years ago

Blacias commented 5 years ago

I am trying to make this work in Android, but it shows this error :

The 'java' plugin has been applied, but it is not compatible with the Android plugins.

Caused by: com.android.build.gradle.internal.BadPluginException: The 'java' plugin has been applied, but it is not compatible with the Android plugins.
    at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:698)
    at com.android.build.gradle.BasePlugin.lambda$null$4(BasePlugin.java:652)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
    at com.android.build.gradle.BasePlugin.lambda$createTasks$5(BasePlugin.java:648)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
    at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:324)
    at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:234)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:140)
    at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy26.afterEvaluate(Unknown Source)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:76)
    ... 85 more
sedovalx commented 5 years ago

Yeah, the java plugin is unconditionally applied for now. It is needed to find a source set to weave. It seems it can be made configurable via the plugin configuration. Something like explicitly setting the sourceSet property.

aspectjBinary {
  applyJava = false
  sourceSet = project.android.sourceSets.main
}

By default, the property is assigned with the java plugin's main source set. Want to grab it?

jeevancitrix commented 4 years ago

@sedovalx Where do I configure this configuration that you mentioned? Is there an example Android project that I can refer to?

sedovalx commented 4 years ago

This configuration is in my imagination only for now... I was asking if you wanted to implement it. If not I will handle it by myself.

sedovalx commented 4 years ago

Please see the updated README and https://github.com/sedovalx/gradle-aspectj-binary/releases/tag/1.0.41

jeevancitrix commented 4 years ago

Thanks @sedovalx. I tried using 1.0.41 build of your repo but am seeing another issue now:

Caused by: java.lang.NoSuchMethodError: org.gradle.api.tasks.TaskContainer.register(Ljava/lang/String;Ljava/lang/Class;Lorg/gradle/api/Action;)Lorg/gradle/api/tasks/TaskProvider; at com.github.sedovalx.gradle.aspectj.AspectJBinaryWeavingPlugin.apply(AspectJBinaryWeavingPlugin.kt:37) at com.github.sedovalx.gradle.aspectj.AspectJBinaryWeavingPlugin.apply(AspectJBinaryWeavingPlugin.kt:30) at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:42) at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:50) at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:164) at org.gradle.api.internal.plugins.DefaultPluginManager.access$200(DefaultPluginManager.java:47) at org.gradle.api.internal.plugins.DefaultPluginManager$AddPluginBuildOperation.run(DefaultPluginManager.java:252) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:144) at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:125) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:120) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:38) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:86) at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:143) at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:46) at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34) at org.gradle.api.Script$apply.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)

Like I previously mentioned, a sample Android app example would really help.

sedovalx commented 4 years ago

What Gradle version do you use? Unfortunately, I have absolutely no experience in Android development so I doubt I'm able to compose such an example but I can help you with this task.