easylauncher-gradle-plugin icon indicating copy to clipboard operation
easylauncher-gradle-plugin copied to clipboard

Build failed on the latest gradle plugin, getFont suddenly caused NPE

Open bopbi opened this issue 5 years ago • 12 comments

suddenly the easylauncher is failed when using android plugin 3.4.1

error log: >

Task :common:bundleLibCompileGlobalRelease Task :common:bundleLibResGlobalRelease Task :app:easylauncherGlobalRc FAILED Task :common:bundleLibRuntimeGlobalRelease Task :testing:compileGlobalReleaseKotlin Task :schema:kaptGenerateStubsGlobalDebugKotlin

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:easylauncherGlobalRc'. java.lang.NullPointerException (no error message)

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

probably this plugin need to be updated with the latest android gradle plugin

update:

full log

  • Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:easylauncherGlobalRc'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119) at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) Caused by: java.lang.NullPointerException at com.akaita.android.easylauncher.filter.ColorRibbonFilter.getFont(ColorRibbonFilter.java:173) at com.akaita.android.easylauncher.filter.ColorRibbonFilter.apply(ColorRibbonFilter.java:90) at com.akaita.android.easylauncher.plugin.EasyLauncher.lambda$process$0(EasyLauncher.java:34) at com.akaita.android.easylauncher.plugin.EasyLauncher.process(EasyLauncher.java:34) at com.akaita.android.easylauncher.plugin.EasyLauncher$process.call(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask$_run_closure1$_closure6$_closure8.doCall(EasyLauncherTask.groovy:67) at com.sun.proxy.$Proxy87.accept(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask$_run_closure1$_closure6.doCall(EasyLauncherTask.groovy:56) at com.sun.proxy.$Proxy87.accept(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask$_run_closure1.doCall(EasyLauncherTask.groovy:53) at com.sun.proxy.$Proxy87.accept(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask.run(EasyLauncherTask.groovy:43) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:48) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:704) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:671) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145) at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49) at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34) at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69) at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49) at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33) at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50) at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43) at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29) at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134) at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83) at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82) at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36) at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33) at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38) at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23) at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96) at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89) at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52) at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36) at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91) ... 32 more

bopbi avatar May 26 '19 13:05 bopbi

the cause probably on

Caused by: java.lang.NullPointerException at com.akaita.android.easylauncher.filter.ColorRibbonFilter.getFont(ColorRibbonFilter.java:173)

bopbi avatar May 26 '19 13:05 bopbi

I can repro the NPE using CircleCI and using Android Gradle Plugin 3.4.0, so this doesn't seem entirely tied to the Gradle plugin version.

amccaleb avatar Jun 19 '19 23:06 amccaleb

Tried to work around the issue by using the customColorRibbons and specifying the textRatio myself. This just moved the NPE to a different area:

https://github.com/akaita/easylauncher-gradle-plugin/blob/master/plugin/src/main/groovy/com/akaita/android/easylauncher/filter/ColorRibbonFilter.java#L92

Caused by: java.lang.NullPointerException at com.akaita.android.easylauncher.filter.ColorRibbonFilter.apply(ColorRibbonFilter.java:92) at com.akaita.android.easylauncher.plugin.EasyLauncher.lambda$process$0(EasyLauncher.java:34) at com.akaita.android.easylauncher.plugin.EasyLauncher.process(EasyLauncher.java:34) at com.akaita.android.easylauncher.plugin.EasyLauncher$process.call(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask$_run_closure1$_closure6$_closure8.doCall(EasyLauncherTask.groovy:67) at com.sun.proxy.$Proxy89.accept(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask$_run_closure1$_closure6.doCall(EasyLauncherTask.groovy:56) at com.sun.proxy.$Proxy89.accept(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask$_run_closure1.doCall(EasyLauncherTask.groovy:53) at com.sun.proxy.$Proxy89.accept(Unknown Source) at com.akaita.android.easylauncher.plugin.EasyLauncherTask.run(EasyLauncherTask.groovy:43) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)

amccaleb avatar Jun 20 '19 00:06 amccaleb

This is basically the same issue I am seeing on the "original" ribbonizer project: https://github.com/maskarade/gradle-android-ribbonizer-plugin/issues/31

Some change in the Circle CI base image triggered this.

I'll remove ribbons alltogether for now...

lksnmnn avatar Jun 20 '19 13:06 lksnmnn

Any updates on this issue ? I have the same problem with the latest Android gradle plugin and CircleCi

Alqasrawi avatar Jul 28 '19 18:07 Alqasrawi

encountering the same issue, it seems related to openjdk installation on alpine docker images: https://github.com/docker-library/openjdk/issues/73

I was able to solve it by installing fontconfig to the docker image used: RUN apk --update add fontconfig ttf-dejavu

bartsidee avatar Oct 21 '19 09:10 bartsidee

thanks for sharing @bartsidee will try it

bopbi avatar Oct 22 '19 04:10 bopbi

@bartsidee Thanks for sharing. Can you also share where in the circleci config file this goes?

anujmiddha avatar Oct 31 '19 09:10 anujmiddha

I believe he is using a custom docker image based on alpine. So the line he posted is added to his Dockerfile. You can then refer to your custom image in the CircleCI config.

lksnmnn avatar Oct 31 '19 09:10 lksnmnn

Ah got it. Thanks @lksnmnn

anujmiddha avatar Oct 31 '19 09:10 anujmiddha

I'm having the same problem. Any updates on this?

adrinieto avatar Mar 05 '20 11:03 adrinieto

I solved this problem in the CircleCI config. thanks to https://github.com/akaita/easylauncher-gradle-plugin/issues/37#issuecomment-544423985. I added the following command to job.

  steps:
    - run:
        name: add fontconfig for easylauncher
        command: sudo apt-get update && sudo apt-get install -y fontconfig ttf-dejavu

I'm using circleci/android:api-29 docker image.

tlb-miyagiyuki avatar Mar 27 '20 12:03 tlb-miyagiyuki