【问题标题】:Running a specific gradle task depending on android built type根据 android 构建类型运行特定的 gradle 任务
【发布时间】:2015-11-18 20:59:28
【问题描述】:

我正在尝试根据构建类型(调试或发布)运行特定任务/操作。

android {
    applicationVariants.all { variant ->
        println "buildType.name is $buildType.name"
    }
}

但无论我运行 assembleDebug 还是 assembleRelease,我的代码都会针对两种构建类型执行:

10:56:20 PM: Executing external task 'assembleDebug'...
Configuration on demand is an incubating feature.
buildType.name is debug
buildType.name is release
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:curl:compileLint
:curl:copyReleaseLint UP-TO-DATE
:curl:mergeReleaseProguardFiles UP-TO-DATE
:curl:preBuild UP-TO-DATE
:curl:preReleaseBuild UP-TO-DATE
:curl:checkReleaseManifest
:curl:prepareReleaseDependencies
:curl:compileReleaseAidl UP-TO-DATE
:curl:compileReleaseRenderscript UP-TO-DATE
:curl:generateReleaseBuildConfig UP-TO-DATE
:curl:generateReleaseAssets UP-TO-DATE
:curl:mergeReleaseAssets UP-TO-DATE
:curl:generateReleaseResValues UP-TO-DATE
:curl:generateReleaseResources UP-TO-DATE
:curl:packageReleaseResources UP-TO-DATE
:curl:processReleaseManifest UP-TO-DATE
:curl:processReleaseResources UP-TO-DATE
:curl:generateReleaseSources UP-TO-DATE
:curl:processReleaseJavaRes UP-TO-DATE
:curl:compileReleaseJavaWithJavac UP-TO-DATE
:curl:packageReleaseJar UP-TO-DATE
:curl:compileReleaseNdk UP-TO-DATE
:curl:packageReleaseJniLibs UP-TO-DATE
:curl:packageReleaseLocalJar UP-TO-DATE
:curl:packageReleaseRenderscript UP-TO-DATE
:curl:bundleRelease UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE
:app:prepareComAndroidSupportCardviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2301Library UP-TO-DATE
:app:prepareComAndroidSupportMultidex101Library UP-TO-DATE
:app:prepareComAndroidSupportPaletteV72301Library UP-TO-DATE
:app:prepareComAndroidSupportPercent2301Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72301Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE
:app:prepareComAppboyAndroidSdkUi182Library UP-TO-DATE
:app:prepareComBraintreepaymentsApiBraintree164Library UP-TO-DATE
:app:prepareComBraintreepaymentsCardForm201Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidAnswers131Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidBeta113Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlytics251Library UP-TO-DATE
:app:prepareComCrashlyticsSdkAndroidCrashlyticsCore234Library UP-TO-DATE
:app:prepareComEdmodoCropper101Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAnalytics780Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBase780Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesLocation780Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesMaps780Library UP-TO-DATE
:app:prepareComJakewhartonTimberTimber410Library UP-TO-DATE
:app:prepareComRaizlabsAndroidDBFlow221Library UP-TO-DATE
:app:prepareIoBranchSdkAndroidLibrary1811Library UP-TO-DATE
:app:prepareIoFabricSdkAndroidFabric135Library UP-TO-DATE
:app:prepareParaboCurlUnspecifiedLibrary UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:fabricGenerateResourcesDebug
:app:jrebelPinDebugResids
:app:processDebugResources
:app:generateDebugSources
:app:processDebugJavaRes UP-TO-DATE
:curl:copyDebugLint UP-TO-DATE
:curl:mergeDebugProguardFiles UP-TO-DATE
:curl:preDebugBuild UP-TO-DATE
:curl:checkDebugManifest
:curl:prepareDebugDependencies
:curl:compileDebugAidl UP-TO-DATE
:curl:compileDebugRenderscript UP-TO-DATE
:curl:generateDebugBuildConfig UP-TO-DATE
:curl:generateDebugAssets UP-TO-DATE
:curl:mergeDebugAssets UP-TO-DATE
:curl:generateDebugResValues UP-TO-DATE
:curl:generateDebugResources UP-TO-DATE
:curl:packageDebugResources UP-TO-DATE
:curl:processDebugManifest UP-TO-DATE
:curl:processDebugResources UP-TO-DATE
:curl:generateDebugSources UP-TO-DATE
:curl:processDebugJavaRes UP-TO-DATE
:curl:compileDebugJavaWithJavac UP-TO-DATE
:curl:packageDebugJar UP-TO-DATE
:curl:compileDebugNdk UP-TO-DATE
:curl:packageDebugJniLibs UP-TO-DATE
:curl:packageDebugLocalJar UP-TO-DATE
:curl:packageDebugRenderscript UP-TO-DATE
:curl:bundleDebug UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:generateDebugJrebelLayout
:app:collectDebugMultiDexComponents UP-TO-DATE
:app:packageAllDebugClassesForMultiDex UP-TO-DATE
:app:shrinkDebugMultiDexComponents UP-TO-DATE
:app:createDebugMainDexClassList UP-TO-DATE
:app:dexDebug UP-TO-DATE
:app:jrebelPostProcessDebugResids
:app:validateDebugSigning
:app:packageDebug
:app:zipalignDebug
:app:assembleDebug
:curl:compileDebugSources UP-TO-DATE
:curl:assembleDebug UP-TO-DATE

BUILD SUCCESSFUL

Total time: 10.657 secs
10:56:31 PM: External task execution finished 'assembleDebug'.

为什么会这样?

检测当前构建类型的正确方法是什么?

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    你可以让构建依赖于不同构建的任务

    buildTypes {
        release {
            build.dependsOn 'mySweetReleaseTask'
        }
        debug {
            build.dependsOn 'mySweetDebugTask'
        }
    }
    

    或者

    buildTypes {
        release {
            project.getTasks().getByName('build').dependsOn('mySweetReleaseTask')
        }
        debug {
            project.getTasks().getByName('build').dependsOn('mySweetDebugTask')
        }
    }
    

    如果您希望您的任务在特定时间运行,例如在测试期间,您可以将'build' 替换为'check'。此配置块在构建实际开始之前的配置阶段(执行阶段)进行评估。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 2013-10-18
      • 2014-05-09
      • 2022-08-13
      • 2018-11-15
      • 2013-09-03
      • 2018-01-22
      相关资源
      最近更新 更多