vla*_*tiy 10 android gradle pre-build-event android-studio build.gradle
我有这个项目结构: ProjectFolder/IosFolder,AndroidFolder,CommonFolder 现在Android应用程序使用它的资产文件夹中的文件.但我们决定为相同的文件制作Common文件夹.
你可以帮我制作函数女巫会将文件从Common文件夹复制(这个文件夹在我的项目中,所以在Android Studio中我没有看到它)到android 资源文件夹之前构建应用程序吗?
Common文件夹中将包含一些.json文件和字体文件.
据我所知,我需要在我的build.gradle文件中编写这样的函数:
task copyFiles(type: Copy)
copyFiles {
description = 'Copy files'
from 'Common/'
into 'Android/{projectName}/app/src/main/assets'
}
Run Code Online (Sandbox Code Playgroud)
这是我的档案:
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'*/
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我在哪里可以看到Gradle Console中执行方法的结果?
我需要使用什么路径以及build.gradle文件位于此方法的位置?
希望你能帮助我.
你能试试这个配置吗:
gradle.projectsEvaluated {
preBuild.dependsOn(copyFiles)
}
Run Code Online (Sandbox Code Playgroud)
更新:复制任务可以为您执行许多命令.从这里的文档是例子:
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() }
Run Code Online (Sandbox Code Playgroud)
}
如果您只想从一个源目录复制到另一个源目录,则可以执行以下操作:
task copyFiles(type: Copy) {
from 'pathToMyAssets'
into 'AndroidStudioAssetsFolderPath'
}
Run Code Online (Sandbox Code Playgroud)
更新在你的应用程序的build.gradle底部执行此操作:
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)
Run Code Online (Sandbox Code Playgroud)