Android студиясын көшірме тапсырмасын активтер қалтасына қалай іске қосуға болады

Содан бері менің «build.gradle» дегенімнің соңына төмендегілерді қосқанмын

task copyFiles(type: Copy)

copyFiles {
    description = 'Copies html5 files from the common library...'
    from '../../www'
    into 'assets/www'
    include('**/*')
}

Қазір мен бұл тапсырманы әр уақытта (бұрын) және андроид көзін құрастыруды қалай жасауға болатынын білуім керек. Көшіру тапсырмасын пәрмен жолынан қолмен іске қосуға болады, бірақ мен Android студиясында «іске қосу» басқан кезде оны іске қосқысы келеді.

Төменде келтірілген ұсыныстардың көмегімен мен қосылдым

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.

Мұнда android студиясын пайдаланатын барлық build.gradle.

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
23
осы сұрақтардың біреуі сіздің проблемаңызды шеше алды ма?
қосылды автор Christopher Francisco, көзі
Бұл жауаптардың ешқайсысы да, басқалары да Android Studio 1.4 жұмысында жұмыс істеді (Mac OSX, жақында онлайн терезеге кіретін терезе бар, оны екі рет тексеруді жоспарлап отырмын) Тіпті құжатталмаған қалтаны қалтаға көшірмеді немесе синхрондады. Егер басқаша білсем, жаңартамын.
қосылды автор Hunter-Orionnoir, көзі
Бұл жауаптардың ешқайсысы да, басқалары да Android Studio 1.4 жұмысында жұмыс істеді (Mac OSX, жақында онлайн терезеге кіретін терезе бар, оны екі рет тексеруді жоспарлап отырмын) Тіпті құжатталмаған қалтаны қалтаға көшірмеді немесе синхрондады. Егер басқаша білсем, жаңартамын.
қосылды автор Hunter-Orionnoir, көзі

13 жауаптар

Осылайша, мен өзімнің андроидтерді құрастыру жүйесінде файлдық активтерді көшіруді жүзеге асырамын

preBuild.dependsOn copyFiles
18
қосылды
preBuild дегеніміз не? Android Studio бағдарламасындағы Gradle өмірлік циклінің бұл бөлігі?
қосылды автор Igor Ganapolsky, көзі
Мен мұны білдім. Мен ойлаймын. Менің қоршаған орта preBuild-ды анықтамайды, сондықтан өзімнің анықтамам және тапсырманы көшіру файлы өшірілу үшін қолдандым.
қосылды автор Hunter-Orionnoir, көзі
«PreBuild» дегенді анықтайды, мен мұны бүкіл жерде жауап ретінде көремін, бірақ ол мен үшін ешқашан жұмыс істемейді. Мен Android Studio 1.4-ні қолданамын, егер ол өзгерсе.
қосылды автор Hunter-Orionnoir, көзі
Бұл мен үшін жұмыс істеді. PreBuild тапсырмасын автоматты түрде Android Studio арқылы анықтау керек.
қосылды автор Adam Yaxley, көзі

Осылайша, мен өзімнің андроидтерді құрастыру жүйесінде файлдық активтерді көшіруді жүзеге асырамын

preBuild.dependsOn copyFiles
18
қосылды
preBuild дегеніміз не? Android Studio бағдарламасындағы Gradle өмірлік циклінің бұл бөлігі?
қосылды автор Igor Ganapolsky, көзі
Мен мұны білдім. Мен ойлаймын. Менің қоршаған орта preBuild-ды анықтамайды, сондықтан өзімнің анықтамам және тапсырманы көшіру файлы өшірілу үшін қолдандым.
қосылды автор Hunter-Orionnoir, көзі
«PreBuild» дегенді анықтайды, мен мұны бүкіл жерде жауап ретінде көремін, бірақ ол мен үшін ешқашан жұмыс істемейді. Мен Android Studio 1.4-ні қолданамын, егер ол өзгерсе.
қосылды автор Hunter-Orionnoir, көзі
Бұл мен үшін жұмыс істеді. PreBuild тапсырмасын автоматты түрде Android Studio арқылы анықтау керек.
қосылды автор Adam Yaxley, көзі

Модульдің build.gradle дегені, алдын ала жасалатын тапсырма ретінде қалаған файлдарды сәтті көшіріп беретіндігімде. «In» ішіндегі Java файл сыныпынан кейін модельденеді, сондықтан оны қалай пайдалану керектігі туралы білу керек. Соңындағы екі жол міндетті емес - ол сыныпты тазалауды орындау кезінде copyFiles тапсырмасын іске қосады:

android {
.....
}

task copyFiles(type: Copy) {
    description = 'copying some file(s)....'
    from 'src/main'
    into project(':Path:To:ModuleFrom:Settings.gradle').file('./res')
    include 'file1.suffix'
    include '**/*.html'
}

project.afterEvaluate {
    preBuild.dependsOn copyFiles
}

clean.dependsOn copyFiles
clean.mustRunAfter copyFiles
10
қосылды
Қатеге ие боламын: Жобада 'app:' preBuild қасиетін таба алмады.
қосылды автор Igor Ganapolsky, көзі
Неге сізде файлдан бар? Бұл каталог!
қосылды автор Igor Ganapolsky, көзі
@IgorGanapolsky сен болсаңыз, мен «файл» кілт сөзін алып тастадым.
қосылды автор Phileo99, көзі

Модульдің build.gradle дегені, алдын ала жасалатын тапсырма ретінде қалаған файлдарды сәтті көшіріп беретіндігімде. «In» ішіндегі Java файл сыныпынан кейін модельденеді, сондықтан оны қалай пайдалану керектігі туралы білу керек. Соңындағы екі жол міндетті емес - ол сыныпты тазалауды орындау кезінде copyFiles тапсырмасын іске қосады:

android {
.....
}

task copyFiles(type: Copy) {
    description = 'copying some file(s)....'
    from 'src/main'
    into project(':Path:To:ModuleFrom:Settings.gradle').file('./res')
    include 'file1.suffix'
    include '**/*.html'
}

project.afterEvaluate {
    preBuild.dependsOn copyFiles
}

clean.dependsOn copyFiles
clean.mustRunAfter copyFiles
10
қосылды
Қатеге ие боламын: Жобада 'app:' preBuild қасиетін таба алмады.
қосылды автор Igor Ganapolsky, көзі
Неге сізде файлдан бар? Бұл каталог!
қосылды автор Igor Ganapolsky, көзі
@IgorGanapolsky сен болсаңыз, мен «файл» кілт сөзін алып тастадым.
қосылды автор Phileo99, көзі

Менде сіздер үшін өте ұқсас мәселе болды және оны келесідей шеше алдым:

android.buildTypes.all{ buildType ->    
    task "${buildType.name}CopyFiles" (type: Copy)
    "${buildType.name}CopyFiles" {
        description = 'Copies html5 files from the common library...'
        from '../../www'
        into 'assets/www'
        include('**/*')
    }

    tasks.getByPath(":${project.name}:assemble${buildType.name.capitalize()}").dependsOn "${buildType.name}CopyFiles"
}

Мәселе мынада, Android Studio сценарийді іске қосқаннан кейін құрастыруDebug сияқты арнайы жинақ тапсырмасы деп атаған сияқты, сондықтан барлық жиналған тапсырмаларды көшірме тапсырмасына байланысты болу керек.

5
қосылды
task myCopyToAssets(type: Copy) {
    def toDir = rootProject.file('app/assets')
    from (rootProject.file('app/usb')) {
        include 'libhotplug.so'
    }
    into toDir
}



tasks.whenTaskAdded { task ->
    //println task.getName()
    if (task.name == 'assembleDebug' || task.name == 'assembleRelease') {
        println 'myCopy'
        myCopyToLibs.execute()
        myCopyToAssets.execute()
    }
}
3
қосылды
task myCopyToAssets(type: Copy) {
    def toDir = rootProject.file('app/assets')
    from (rootProject.file('app/usb')) {
        include 'libhotplug.so'
    }
    into toDir
}



tasks.whenTaskAdded { task ->
    //println task.getName()
    if (task.name == 'assembleDebug' || task.name == 'assembleRelease') {
        println 'myCopy'
        myCopyToLibs.execute()
        myCopyToAssets.execute()
    }
}
3
қосылды

Мұны build.gradle төменде көріңіз:

tasks.whenTaskAdded { task ->
    if (task.name == 'assemble') {
        task.dependsOn copyFiles
    }
}

Менің жағдайда res/values ​​/ strings.xml ішіндегі кейбір 'token' мәндерін басқарамын және оны $ {project_root}/build/filtered-resources жобаны тазалау мәселесі.

Осы манипуляцияланған ресурспен дұрыс жұмыс істеу үшін android.sourceSets.res көшірілген қалтаға қайта анықталуы керек.

www ресурсын $ {PROJECT_ROOT}/build/your/desired/location ішіне алып, активтер android.sourceSets.assets оны көрсетіңіз.

2
қосылды
Бұл мен үшін жұмыс істеді. Мен шартты if (task.name == 'assembleRegularRelease') {...} дегенге ауыстырдым. Негізінде, әр жиынтыққа арналған тапсырма түрі үшін әр түрлі көшірме тапсырмасы бар.
қосылды автор clu, көзі
Кейбір себептермен, бұл мен үшін жұмыс істемеді. Мен құрастыру арқылы аяқтадымDebug.dependsOn copyFiles assembleRelease.dependsOn copyFiles
қосылды автор Cypress Frankenfeld, көзі
Бүгінде бұл әрекетті көруге болады. Өкінішке орай, бұл маған жұмыс істемейді. Мен android.sourceSets.assets немесе көшірме тапсырмамның орнын өзгертпедім. Бұл тапсырманы орындау үшін маңызды ма? Менің көшірме тапсырмам қазірдің өзінде қалағандай жұмыс істейтінін білемін. Мен оны шынымен шақыруға шақырамын.
қосылды автор Svikaren, көзі
Жауап үшін рахмет. Қазіргі кезде мен оны сынап көре алмаймын, себебі жобаның дамуы/нашарлауы және қазіргі уақытта Android Studio жұмыс істемейтіні.
қосылды автор Svikaren, көзі

Мұны build.gradle төменде көріңіз:

tasks.whenTaskAdded { task ->
    if (task.name == 'assemble') {
        task.dependsOn copyFiles
    }
}

Менің жағдайда res/values ​​/ strings.xml ішіндегі кейбір 'token' мәндерін басқарамын және оны $ {project_root}/build/filtered-resources жобаны тазалау мәселесі.

Осы манипуляцияланған ресурспен дұрыс жұмыс істеу үшін android.sourceSets.res көшірілген қалтаға қайта анықталуы керек.

www ресурсын $ {PROJECT_ROOT}/build/your/desired/location ішіне алып, активтер android.sourceSets.assets оны көрсетіңіз.

2
қосылды
Бұл мен үшін жұмыс істеді. Мен шартты if (task.name == 'assembleRegularRelease') {...} дегенге ауыстырдым. Негізінде, әр жиынтыққа арналған тапсырма түрі үшін әр түрлі көшірме тапсырмасы бар.
қосылды автор clu, көзі
Кейбір себептермен, бұл мен үшін жұмыс істемеді. Мен құрастыру арқылы аяқтадымDebug.dependsOn copyFiles assembleRelease.dependsOn copyFiles
қосылды автор Cypress Frankenfeld, көзі
Бүгінде бұл әрекетті көруге болады. Өкінішке орай, бұл маған жұмыс істемейді. Мен android.sourceSets.assets немесе көшірме тапсырмамның орнын өзгертпедім. Бұл тапсырманы орындау үшін маңызды ма? Менің көшірме тапсырмам қазірдің өзінде қалағандай жұмыс істейтінін білемін. Мен оны шынымен шақыруға шақырамын.
қосылды автор Svikaren, көзі
Жауап үшін рахмет. Қазіргі кезде мен оны сынап көре алмаймын, себебі жобаның дамуы/нашарлауы және қазіргі уақытта Android Studio жұмыс істемейтіні.
қосылды автор Svikaren, көзі

Бұл жолды build.gradle файлына қосыңыз:

assemble.dependsOn copyFiles
assemble.mustRunAfter copyFiles

онда assembly кез келген тапсырма болуы мүмкін.

Edit: I added the mustRunAfter bit to make sure the copyFiles task is run before any of the other assemble dependencies.

1
қосылды
Бұл мен үшін жұмыс істемеді. Мен осы екі жолды build.gradle-ге қостым, бірақ менің көшірме тапсырмам ешқашан орындалмады.
қосылды автор Cypress Frankenfeld, көзі
Мен сіздің ұсынысыңызды құрастыру тапсырмасына және «жасау» тапсырмасына сынап көрдім, бірақ менің copyFiles тапсырмасы бәрібір іске қосылмайды. Дегенмен, оны «таза» тапсырмаға қою арқылы көшірме файлдарын алдымен қайта құру арқылы іске қосуға, содан кейін іске қосуға болады. Т
қосылды автор Svikaren, көзі

Бұл жолды build.gradle файлына қосыңыз:

assemble.dependsOn copyFiles
assemble.mustRunAfter copyFiles

онда assembly кез келген тапсырма болуы мүмкін.

Edit: I added the mustRunAfter bit to make sure the copyFiles task is run before any of the other assemble dependencies.

1
қосылды
Бұл мен үшін жұмыс істемеді. Мен осы екі жолды build.gradle-ге қостым, бірақ менің көшірме тапсырмам ешқашан орындалмады.
қосылды автор Cypress Frankenfeld, көзі
Мен сіздің ұсынысыңызды құрастыру тапсырмасына және «жасау» тапсырмасына сынап көрдім, бірақ менің copyFiles тапсырмасы бәрібір іске қосылмайды. Дегенмен, оны «таза» тапсырмаға қою арқылы көшірме файлдарын алдымен қайта құру арқылы іске қосуға, содан кейін іске қосуға болады. Т
қосылды автор Svikaren, көзі

Жолдарды басқа каталогқа көшіру үшін жобадағы келесі көшіру тапсырмасын қолданамын:

task copyStringsUniversal(type: Copy) {
    from 'src/main/res/values'
    include 'strings.xml'
    include 'array.xml'
    into 'src/universal/res/values'
}
build.dependsOn copyStringsUniversal
1
қосылды

Жолдарды басқа каталогқа көшіру үшін жобадағы келесі көшіру тапсырмасын қолданамын:

task copyStringsUniversal(type: Copy) {
    from 'src/main/res/values'
    include 'strings.xml'
    include 'array.xml'
    into 'src/universal/res/values'
}
build.dependsOn copyStringsUniversal
1
қосылды