I am trying to create an AAR file for a library Android project using Android Studio and gradle.
I want to exclude from this archive specific folders and files but
Think it is related to this issue. Generally you could try with:
I couldn't get either of them to work though.
That said, you could make some ugly hacks like this:
def filterVariant = { variantToFilter, filterTask->
def vv = android.sourceSets."${variantToFilter}".res.srcDirs
println "${variantToFilter} --> ${vv*.toString()}"
def variantRes = android.sourceSets."${variantToFilter}".res
variantRes.srcDirs.each{ resDir->
def filterOutput = "${buildDir}/res-filter"
if (resDir.toString().contains(filterOutput)) {
return
}
println "begin filter ${resDir} to ${filterOutput}/${variantToFilter}"
filterTask.from fileTree(dir: resDir, exclude: '**/comment.txt')
filterTask.into "${filterOutput}/${variantToFilter}"
variantRes.srcDirs = ["${filterOutput}/${variantToFilter}"]
}
}
project.task('filterMainResources', type: Copy) {
filterVariant 'main', it
}
android.libraryVariants.all{ variant ->
project.task("filter${variant.name}Resources", type: Copy) { filterTask ->
filterVariant "${variant.name}", filterTask
filterTask.dependsOn "filterMainResources"
}
variant.mergeResources.dependsOn("filter${variant.name}Resources")
}
I can't try it right now, but this would probably be my approach:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
aidl.srcDirs = ['src']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
java.srcDirs = ['src']
res.srcDirs = ['res']
}
flavor1 {
java.srcDirs = ['src/main/java', 'src/flavor1/java']
res.srcDirs = ['src/flavor1/res'] //this differs from your structure
assets.srcDirs = []
}
flavor2 {
java.srcDirs = ['src/main/java', 'src/flavor2/java']
res.srcDirs = ['src/flavor2/res'] //this differs from your structure
assets.srcDirs = ['src/main/res/raw']
}
}
Again, I couldn't try it, so this could be complete nonsense. The idea was to not exclude stuff, but only include the files/dirs you do want in you flavor. This may will lead to duplication of files/folders per flavor!
As sources I would recommend: Gralde Plugin User Guide, the answer from Xavier Ducrohet and also this Gradle + Android, want to overwrite /assets with custom folder in buildFlavor.