Open Bug 1417537 Opened 7 years ago Updated 2 years ago

Confusing build errors when you have an old local.properties from previous builds

Categories

(Firefox Build System :: Android Studio and Gradle Integration, enhancement)

enhancement

Tracking

(Not tracked)

People

(Reporter: Gijs, Unassigned)

Details

You end up with something like:

 0:14.15 Unable to find a $JAVA_HOME at "/usr", continuing with system-provided Java...
 0:14.25 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf-8
 0:15.32 Parallel execution is an incubating feature.
 0:15.37 NDK is missing a "platforms" directory.
 0:15.37 If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to /Users/myusername/.android-sdk/ndk-bundle.
 0:15.37 If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.
 0:15.37
 0:15.39 Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
 0:15.39 java.lang.IllegalStateException: buildToolsVersion is not specified.
 0:15.39        at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
 0:15.39        at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:558)
 0:15.39        at com.android.build.gradle.BasePlugin.lambda$null$4(BasePlugin.java:526)
 0:15.39        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
 0:15.39        at com.android.build.gradle.BasePlugin.lambda$createTasks$5(BasePlugin.java:522)
 0:15.39        at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
 0:15.40        at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
 0:15.40        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
 0:15.40        at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
 0:15.40        at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
 0:15.40        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
 0:15.40        at com.sun.proxy.$Proxy15.afterEvaluate(Unknown Source)
 0:15.40        at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82)
 0:15.40        at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:76)
 0:15.40        at org.gradle.configuration.project.LifecycleProjectEvaluator.access$000(LifecycleProjectEvaluator.java:33)
 0:15.40        at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:53)
 0:15.40        at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:50)
 0:15.40        at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
 0:15.40        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
 0:15.40        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
 0:15.40        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
 0:15.40        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:599)
 0:15.40        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:125)
 0:15.40        at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
 0:15.40        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:62)
 0:15.40        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
 0:15.40        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuildAction.execute(DefaultGradleLauncher.java:233)
 0:15.40        at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuildAction.execute(DefaultGradleLauncher.java:230)
 0:15.41        at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
 0:15.41        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
 0:15.41        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
 0:15.41        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:160)
 0:15.41        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
 0:15.41        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
 0:15.41        at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
 0:15.41        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
 0:15.41        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
 0:15.41        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
 0:15.41        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
 0:15.41        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
 0:15.41        at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
 0:15.41        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:49)
 0:15.41        at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:31)
 0:15.41        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
 0:15.41        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
 0:15.41        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.41        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47)
 0:15.41        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.41        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
 0:15.41        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.41        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
 0:15.41        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.41        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
 0:15.41        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
 0:15.41        at org.gradle.util.Swapper.swap(Swapper.java:38)
 0:15.41        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
 0:15.41        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.42        at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
 0:15.42        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.42        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
 0:15.42        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
 0:15.42        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.42        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
 0:15.42        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
 0:15.42        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
 0:15.42        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
 0:15.42        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
 0:15.42        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
 0:15.42        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
 0:15.42        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 0:15.42        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 0:15.42        at java.lang.Thread.run(Thread.java:745)
 0:15.42
 0:15.42 FAILURE: Build failed with an exception.
 0:15.42
 0:15.42 * Where:
 0:15.42 Build file '/Users/myusername/dev/firefox-unified/mobile/android/app/build.gradle' line: 5
 0:15.42
 0:15.42 * What went wrong:
 0:15.42 A problem occurred evaluating project ':app'.
 0:15.42 > Failed to apply plugin [id 'com.getkeepsafe.dexcount']
 0:15.42    > Specified SDK directory '/Users/myusername/.android-sdk' in 'local.properties' is not found.
 0:15.42 



But because I'm not familiar with Fx for Android, I had no idea where to look for "local.properties", and a DXR search and so on didn't help me. It would be nice if there was a more helpful error message.
I think we should make settings.gradle complain if $topsrcdir/local.properties exists, although I think it's required for Android Studio to load $topsrcdir.  So maybe it can complain if sdk.dir is incorrect.
Product: Firefox for Android → Firefox Build System
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.