Status Update
Comments
tn...@google.com <tn...@google.com> #2
We are currently using AGP internal task types to flag memory-intensive tasks to enforce a reduced parallelism at execution time. I've raised this separately (with a lot more detail) as a feature request (
sp...@google.com <sp...@google.com> #4
Another use case that we have is to reactively respond to the creation of APKs and AABs. The new AGP APIs allow us to connect out tasks into the artifact pipeline via wiredWith
but the best we can come up with to receive the completed artifact is to wire in toTransform
. This A) does not guarantee that we will receive the final artifact as more transforms may be applied after our task is called, and B) requires us to copy the input property file/dir to our tasks output property file/dir in order to not break the build cache.
The reactive behavior of the above is the complicating factor.
A non-reactive approach could simply depend upon the task name and then look for a hardcoded path in the build directory (which is still sort of gross, since the build output paths are not documented as public API and change from time to time).
Another approach would be to wire a custom task to consume the output of the build via the built artifacts loader feeding an input property. However, this approach cannot be applied reactively. Either the custom task is included in the build and causes the creation of the binary artifact, or it is not included in the build and never gets invoked.
Description
Currently, with
android.lintOptions.textReport true
, lint will output results to stdout when theAndroidLintTask
(e.g.,lintDebug
) runs, but there will be no such output if the task is up-to-date, which might mislead users to think that there are no lint issues.The desired behavior is for lint to output issues to stdout even if the task is up-to-date (or not to output anything if there are no issues - see Issue 158259845 ).
A possible fix would be to add a new lightweight task which would never be up-to-date and would only print the text report. I.e., change the lint build flow from this:
lintAnalyzeDebug
->lintDebug
to this:
lintAnalyzeDebug
->lintReportDebug
->lintDebug
where the new
lintReportDebug
task is the oldlintDebug
task, and the newlintDebug
is the lightweight task that is never up-to-date.Rejected alternative:
I considered modifying Issue 189877657
AndroidLintCopyReportTask
to print out the text report, but that task will not run ifAndroidLintTask
is up-to-date. In fact, we can consider adding that task's functionality to the new lightweight lint task to properly fixPS - Thanks to Tor for noticing this issue :)