Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libs/androidlib/src/mill/androidlib/AndroidAppModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1070,7 +1070,7 @@ trait AndroidAppModule extends AndroidModule { outer =>
def androidTransitiveTestClasspath: T[Seq[PathRef]] = Task {
Task.traverse(transitiveRunModuleDeps) {
m =>
Task.Anon(m.localRunClasspath())
m.localRunClasspath
}().flatten
}

Expand Down
44 changes: 39 additions & 5 deletions libs/androidlib/src/mill/androidlib/AndroidModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,16 @@ trait AndroidModule extends JavaModule { outer =>
def androidTransitiveCompiledResources: T[Seq[PathRef]] = Task {
Task.traverse(transitiveModuleRunModuleDeps) {
case m: AndroidModule =>
Task.Anon(m.androidCompiledModuleResources())
m.androidCompiledModuleResources
case _ =>
Task.Anon(Seq.empty)
}().flatten.distinct
}

def androidDirectCompiledResources: T[Seq[PathRef]] = Task {
Task.traverse(moduleDepsChecked) {
case m: AndroidModule =>
m.androidCompiledModuleResources
case _ =>
Task.Anon(Seq.empty)
}().flatten.distinct
Expand Down Expand Up @@ -516,7 +525,7 @@ trait AndroidModule extends JavaModule { outer =>
def androidTransitiveLibRClasspath: T[Seq[PathRef]] = Task {
Task.traverse(transitiveModuleDeps) {
case m: AndroidModule =>
Task.Anon(m.androidLibRClasspath())
m.androidLibRClasspath
case _ =>
Task.Anon(Seq.empty[PathRef])
}().flatten
Expand Down Expand Up @@ -575,10 +584,34 @@ trait AndroidModule extends JavaModule { outer =>
PathRef(Task.dest)
}

/**
* If true, only direct module dependencies will be used to
* compile android resources for R class generation.
* Corresponds to `android.nonTransitiveRClass` in Gradle.
*
* Default is true.
*
* When overridden, make sure to override all modules
* in the project to have consistent behavior.
*/
def androidNonTransitiveRClass: Boolean = true

/**
* Gets the [[androidCompiledModuleResources]] from
* either direct or transitive module dependencies
* depending on the value of [[androidNonTransitiveRClass]]
* @return
*/
def androidDepCompiledResources: T[Seq[PathRef]] =
androidNonTransitiveRClass match {
case true => Task { androidDirectCompiledResources() }
case false => Task { androidTransitiveCompiledResources() }
}

/**
* Gets all the android resources from this module,
* compiles them into flata files and collects
* transitive compiled resources from dependencies.
* compiled resources from dependencies.
* @return a sequence of PathRef to the compiled resources
*/
def androidCompiledModuleResources: T[Seq[PathRef]] = Task {
Expand All @@ -602,7 +635,8 @@ trait AndroidModule extends JavaModule { outer =>

os.call(aapt2Compile ++ aapt2Args)
}
androidTransitiveCompiledResources() ++ Seq(PathRef(Task.dest))

Seq(PathRef(Task.dest))
}

/**
Expand All @@ -613,7 +647,7 @@ trait AndroidModule extends JavaModule { outer =>
*/
def androidLinkedResources: T[PathRef] = Task {
val compiledLibResDir = androidCompiledLibResources().path
val moduleResDirs = androidCompiledModuleResources()
val moduleResDirs = (androidCompiledModuleResources() ++ androidDepCompiledResources())
.map(_.path)

val filesToLink = os.walk(compiledLibResDir).filter(os.isFile(_)) ++
Expand Down
Loading