So far I have added the following to the end of my "build.gradle"
task copyFiles(type: Copy)
copyFiles {
description = 'Copies html5 files from the common library...'
from '../../www'
into 'assets/www'
include('**/*')
}
Now I just need some help on how o make this task get executed everytime (before) compiling the android source. I can run the copy task manually from command line, but Id like to have it run when I click "run" in android studio.
With the help of suggestion below, I have added
clean.dependsOn copyFiles
clean.mustRunAfter copyFiles
And with this addition I can get my copy task to run by doing rebuild -> run. It's better than nothing but it would be nice to skip the rebuild step.
Here is the whole build.gradle that im using with android studio.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
dependencies {
compile files('/libs/acra-4.3.0.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17"
defaultConfig {
minSdkVersion 8
targetSdkVersion 17
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src','libs']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
task copyFiles(type: Copy)
copyFiles {
description = 'Copies html5 files from the common library...'
from '../../www'
into 'assets/www'
include('**/*')
}
clean.dependsOn copyFiles
clean.mustRunAfter copyFiles
Here is the module's build.gradle that I am using which successfully copies the files that I wanted as a pre-build task. The "into" is modelled after the File class in Java, so it should be familiar on how to use it. The two lines at the end is optional - it will run the copyFiles task when invoking gradle clean:
This way I do custom copying of file assets in my android-gradle build system
I use the following copy task in my project to copy strings into another directory:
Try this below your
build.gradle
:In my case I manipulate some 'token' values inside
res/values/strings.xml
, and then copy it into${project_root}/build/filtered-resources
due to project cleaning issue.To work correctly with this manipulated resource,
android.sourceSets.res
should be redefined to copied folder.For your case copy
assets
folder with yourwww
resource into${PROJECT_ROOT}/build/your/desired/location
, and asignandroid.sourceSets.assets
point to it.Add this line to your
build.gradle
file:where
assemble
can be any task.Edit: I added the
mustRunAfter
bit to make sure the copyFiles task is run before any of the other assemble dependencies.