mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
fix: task names are trimmed from build output before build is executed (closes #1045)
This commit is contained in:
@@ -80,9 +80,6 @@ abstract class BaseBuildAction : EditorActivityAction() {
|
||||
}
|
||||
|
||||
activity.saveAll()
|
||||
activity.runOnUiThread {
|
||||
activity.appendBuildOutput("Executing tasks: " + TextUtils.join(", ", tasks))
|
||||
}
|
||||
|
||||
buildService.executeTasks(tasks = tasks).whenComplete { result, err ->
|
||||
if (result == null || err != null) {
|
||||
|
||||
@@ -17,10 +17,12 @@
|
||||
|
||||
package com.itsaky.androidide.handlers
|
||||
|
||||
import com.itsaky.androidide.R
|
||||
import com.itsaky.androidide.activities.editor.EditorHandlerActivity
|
||||
import com.itsaky.androidide.preferences.internal.isFirstBuild
|
||||
import com.itsaky.androidide.resources.R.string
|
||||
import com.itsaky.androidide.services.builder.GradleBuildService
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
|
||||
import com.itsaky.androidide.tooling.events.ProgressEvent
|
||||
import com.itsaky.androidide.tooling.events.configuration.ProjectConfigurationStartEvent
|
||||
import com.itsaky.androidide.tooling.events.task.TaskStartEvent
|
||||
@@ -38,7 +40,7 @@ class EditorBuildEventListener : GradleBuildService.EventListener {
|
||||
this.activityReference = WeakReference(activity)
|
||||
}
|
||||
|
||||
override fun prepareBuild() {
|
||||
override fun prepareBuild(buildInfo: BuildInfo) {
|
||||
val isFirstBuild = isFirstBuild
|
||||
activity()
|
||||
.setStatus(
|
||||
@@ -51,6 +53,11 @@ class EditorBuildEventListener : GradleBuildService.EventListener {
|
||||
|
||||
activity().viewModel.isBuildInProgress = true
|
||||
activity().binding.bottomSheet.clearBuildOutput()
|
||||
|
||||
if (buildInfo.tasks.isNotEmpty()) {
|
||||
activity().binding.bottomSheet.appendBuildOut(
|
||||
activity().getString(R.string.title_run_tasks) + " : " + buildInfo.tasks)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBuildSuccessful(tasks: MutableList<String>) {
|
||||
|
||||
@@ -59,6 +59,7 @@ import com.itsaky.androidide.tooling.api.IToolingApiServer;
|
||||
import com.itsaky.androidide.tooling.api.messages.InitializeProjectMessage;
|
||||
import com.itsaky.androidide.tooling.api.messages.TaskExecutionMessage;
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildCancellationRequestResult;
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo;
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildResult;
|
||||
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult;
|
||||
import com.itsaky.androidide.tooling.api.messages.result.InitializeResult;
|
||||
@@ -250,10 +251,10 @@ public class GradleBuildService extends Service implements BuildService, IToolin
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareBuild() {
|
||||
public void prepareBuild(@NotNull BuildInfo buildInfo) {
|
||||
updateNotification(getString(R.string.build_status_in_progress), true);
|
||||
if (eventListener != null) {
|
||||
eventListener.prepareBuild();
|
||||
eventListener.prepareBuild(buildInfo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -509,8 +510,8 @@ public class GradleBuildService extends Service implements BuildService, IToolin
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Override
|
||||
public void prepareBuild() {
|
||||
ThreadUtils.runOnUiThread(listener::prepareBuild);
|
||||
public void prepareBuild(@NonNull BuildInfo buildInfo) {
|
||||
ThreadUtils.runOnUiThread(() -> listener.prepareBuild(buildInfo));
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@@ -555,9 +556,10 @@ public class GradleBuildService extends Service implements BuildService, IToolin
|
||||
/**
|
||||
* Called just before a build is started.
|
||||
*
|
||||
* @see IToolingApiClient#prepareBuild()
|
||||
* @param buildInfo The information about the build to be executed.
|
||||
* @see IToolingApiClient#prepareBuild(BuildInfo)
|
||||
*/
|
||||
void prepareBuild();
|
||||
void prepareBuild(@NonNull BuildInfo buildInfo);
|
||||
|
||||
/**
|
||||
* Called when a build is successful.
|
||||
|
||||
+15
-15
@@ -24,6 +24,7 @@ import com.itsaky.androidide.tooling.api.messages.InitializeProjectMessage
|
||||
import com.itsaky.androidide.tooling.api.messages.TaskExecutionMessage
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildCancellationRequestResult
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildCancellationRequestResult.Reason.CANCELLATION_ERROR
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
|
||||
import com.itsaky.androidide.tooling.api.messages.result.InitializeResult
|
||||
import com.itsaky.androidide.tooling.api.messages.result.TaskExecutionResult
|
||||
@@ -69,7 +70,6 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa
|
||||
private var buildCancellationToken: CancellationTokenSource? = null
|
||||
private val log = ILogger.newInstance(javaClass.simpleName)
|
||||
|
||||
@Suppress("UnstableApiUsage")
|
||||
override fun initialize(params: InitializeProjectMessage): CompletableFuture<InitializeResult> {
|
||||
forwardingProject.projectPath = params.directory
|
||||
return CompletableFutures.computeAsync {
|
||||
@@ -100,7 +100,7 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa
|
||||
)
|
||||
}
|
||||
|
||||
notifyBeforeBuild()
|
||||
notifyBeforeBuild(BuildInfo(emptyList()))
|
||||
|
||||
val connection = this.connector!!.connect()
|
||||
stopWatch.lapFromLast("Project connection established")
|
||||
@@ -172,7 +172,7 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa
|
||||
this.buildCancellationToken = GradleConnector.newCancellationTokenSource()
|
||||
builder.withCancellationToken(this.buildCancellationToken!!.token())
|
||||
|
||||
notifyBeforeBuild()
|
||||
notifyBeforeBuild(BuildInfo(message.tasks))
|
||||
|
||||
try {
|
||||
builder.run()
|
||||
@@ -190,17 +190,18 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa
|
||||
connector: GradleConnector,
|
||||
gradleDistribution: String?
|
||||
) {
|
||||
if (gradleDistribution != null && gradleDistribution.isNotBlank()) {
|
||||
val file = File(gradleDistribution)
|
||||
if (file.exists() && file.isDirectory) {
|
||||
log.info("Using Gradle installation:", file.canonicalPath)
|
||||
connector.useInstallation(file)
|
||||
} else {
|
||||
log.error("Specified Gradle installation does not exist:", gradleDistribution)
|
||||
}
|
||||
} else {
|
||||
if (gradleDistribution.isNullOrBlank()) {
|
||||
log.info("Using Gradle wrapper for build...")
|
||||
return
|
||||
}
|
||||
val file = File(gradleDistribution)
|
||||
if (!file.exists() || !file.isDirectory) {
|
||||
log.error("Specified Gradle installation does not exist:", gradleDistribution)
|
||||
return
|
||||
}
|
||||
|
||||
log.info("Using Gradle installation:", file.canonicalPath)
|
||||
connector.useInstallation(file)
|
||||
}
|
||||
|
||||
private fun notifyBuildFailure(tasks: List<String>) {
|
||||
@@ -215,9 +216,9 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa
|
||||
}
|
||||
}
|
||||
|
||||
private fun notifyBeforeBuild() {
|
||||
private fun notifyBeforeBuild(buildInfo: BuildInfo) {
|
||||
if (client != null) {
|
||||
client!!.prepareBuild()
|
||||
client!!.prepareBuild(buildInfo)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +243,6 @@ internal class ToolingApiServerImpl(private val forwardingProject: InternalForwa
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("UnstableApiUsage")
|
||||
override fun shutdown(): CompletableFuture<Void> {
|
||||
return CompletableFuture.runAsync {
|
||||
connector?.disconnect()
|
||||
|
||||
+2
-1
@@ -21,6 +21,7 @@ import com.itsaky.androidide.models.LogLine
|
||||
import com.itsaky.androidide.tooling.api.IProject
|
||||
import com.itsaky.androidide.tooling.api.IToolingApiClient
|
||||
import com.itsaky.androidide.tooling.api.IToolingApiServer
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
|
||||
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult
|
||||
import com.itsaky.androidide.tooling.api.util.ToolingApiLauncher
|
||||
@@ -128,7 +129,7 @@ class ToolingApiTestLauncher {
|
||||
log.debug(line.trim())
|
||||
}
|
||||
|
||||
override fun prepareBuild() {
|
||||
override fun prepareBuild(buildInfo: BuildInfo) {
|
||||
log.debug("---------- PREPARE BUILD ----------")
|
||||
log.debug("AGP Version : ${this.agpVersion}")
|
||||
log.debug("Gradle Version : ${this.gradleVersion}")
|
||||
|
||||
+3
-2
@@ -18,6 +18,7 @@
|
||||
package com.itsaky.androidide.tooling.api
|
||||
|
||||
import com.itsaky.androidide.models.LogLine
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
|
||||
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult
|
||||
import com.itsaky.androidide.tooling.events.ProgressEvent
|
||||
@@ -38,8 +39,8 @@ class ForwardingToolingApiClient(var client: IToolingApiClient?) : IToolingApiCl
|
||||
client?.logOutput(line)
|
||||
}
|
||||
|
||||
override fun prepareBuild() {
|
||||
client?.prepareBuild()
|
||||
override fun prepareBuild(buildInfo: BuildInfo) {
|
||||
client?.prepareBuild(buildInfo)
|
||||
}
|
||||
|
||||
override fun onBuildSuccessful(result: BuildResult) {
|
||||
|
||||
+2
-1
@@ -18,6 +18,7 @@
|
||||
package com.itsaky.androidide.tooling.api
|
||||
|
||||
import com.itsaky.androidide.models.LogLine
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildInfo
|
||||
import com.itsaky.androidide.tooling.api.messages.result.BuildResult
|
||||
import com.itsaky.androidide.tooling.api.messages.result.GradleWrapperCheckResult
|
||||
import com.itsaky.androidide.tooling.events.ProgressEvent
|
||||
@@ -49,7 +50,7 @@ interface IToolingApiClient {
|
||||
@JsonNotification fun logOutput(line: String)
|
||||
|
||||
/** Called just before a build is started. */
|
||||
@JsonNotification fun prepareBuild()
|
||||
@JsonNotification fun prepareBuild(buildInfo: BuildInfo)
|
||||
|
||||
/**
|
||||
* Called when a build is successful.
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* This file is part of AndroidIDE.
|
||||
*
|
||||
* AndroidIDE is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* AndroidIDE is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with AndroidIDE. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.itsaky.androidide.tooling.api.messages.result
|
||||
|
||||
/**
|
||||
* Information about a build sent to the client before the build is executed.
|
||||
*
|
||||
* @property tasks The tasks that will be executed.
|
||||
* @author Akash Yadav
|
||||
*/
|
||||
data class BuildInfo(val tasks: List<String>)
|
||||
Reference in New Issue
Block a user