Crear evento pre build para copiar archivos a la carpeta de activos en la aplicación de Android

Tengo esta estructura de proyecto: ProjectFolder / IosFolder, AndroidFolder, CommonFolder Ahora la aplicación androide utiliza archivos de su carpeta de activos. Pero decidimos hacer la carpeta común para los mismos archivos.

¿Podría ayudarme a hacer la función de bruja que va a copiar archivos de carpeta común (esta carpeta está bajo mi proyecto, por lo que en Android Studio no lo veo) a la carpeta de activos de Android antes de la aplicación se construirá?

En la carpeta Común estarán algunos archivos .json y archivos de fuentes.

Como tengo entendido, tengo que escribir esta función en mi archivo build.gradle algo así:

task copyFiles(type: Copy) copyFiles { description = 'Copy files' from 'Common/' into 'Android/{projectName}/app/src/main/assets' } 

Aquí está mi archivo:

 apply plugin: 'com.android.application' repositories { mavenCentral() } android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "amc.amc_mobile_promo2" minSdkVersion 17 targetSdkVersion 23 versionCode 1 versionName "1.0" //For Flurry multiDexEnabled = true } //For Flurry /*compileOptions { //noinspection GroovyAssignabilityCheck sourceCompatibility JavaVersion.VERSION_1_7 //noinspection GroovyAssignabilityCheck targetCompatibility JavaVersion.VERSION_1_7 }*/ buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:23.1.1' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.facebook.android:facebook-android-sdk:4.7.0' compile 'com.mcxiaoke.volley:library:1.0.19' compile 'joda-time:joda-time:2.8.2' compile 'com.github.orangegangsters:swipy:1.2.0@aar' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okhttp:okhttp:2.6.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.6.0' /*compile 'com.android.support:multidex:1.0.1' compile 'com.google.android.gms:play-services-ads:8.3.0' compile 'com.google.android.gms:play-services-identity:8.3.0' compile 'com.google.android.gms:play-services-gcm:8.3.0'*/ } 

¿Y podría decirme dónde puedo ver los resultados de los métodos ejecutados en Gradle Console?

¿Qué camino debo utilizar y dónde en el archivo build.gradle situar este método?

Espero que me ayude.

¿Puedes probar esta configuración:

 gradle.projectsEvaluated { preBuild.dependsOn(copyFiles) } 

Update: hay muchos comandos que la tarea de copia puede hacer por usted. De los documentos aquí son ejemplos:

 task anotherCopyTask(type: Copy) { // Copy everything under src/main/webapp from 'src/main/webapp' // Copy a single file from 'src/staging/index.html' // Copy the output of a task from copyTask // Copy the output of a task using Task outputs explicitly. from copyTaskWithPatterns.outputs // Copy the contents of a Zip file from zipTree('src/main/assets.zip') // Determine the destination directory later into { getDestDir() } 

}

Si sólo desea copiar de un directorio de origen a otro puede hacer esto:

 task copyFiles(type: Copy) { from 'pathToMyAssets' into 'AndroidStudioAssetsFolderPath' } 

UPDATE haga esto en build.gradle de su aplicación en la parte inferior:

 task copyFiles(type: Copy) { from 'Users/kostya/repo_amc_mobile_promo/Common/' into 'Users/kostya/repo_amc_mobile_promo/Android/AMC_Mobile_Promo2/app/src/main/assets' } preBuild.dependsOn(copyFiles) 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.