如何在build.gradle依赖项的命令行调用中包含applicationId?

时间:2015-04-30 16:21:22

标签: android android-gradle build.gradle

我正在尝试关注this Gist for disabling system animations

task grantAnimationPermission(type: Exec, dependsOn: 'installDevDebug') {
    commandLine "adb shell pm grant $android.defaultConfig.applicationId android.permission.SET_ANIMATION_SCALE".split(' ')
}

tasks.whenTaskAdded { task ->
    if (task.name.startsWith('installDevDebugAndroidTest')) {
        task.dependsOn grantAnimationPermission
    }
}

此代码试图在运行调试版本时使用adb授予SET_ANIMATION_SCALE权限(上述代码的替代方案也可以。)

不幸的是,当我运行它时,applicationId总是以null形式出现:

$ ./gradlew installDevDebugAndroidTest
<snip>
:CookBrite:grantAnimationPermission
Bad argument: java.lang.IllegalArgumentException: Unknown package: null

如果我打印$android.defaultConfig,似乎确认applicationId为null:

ProductFlavor_Decorated{name=main, minSdkVersion=ApiVersionImpl{mApiLevel=14, mCodename='null'}, targetSdkVersion=ApiVersionImpl{mApiLevel=21, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptNdkModeEnabled=null, versionCode=119, versionName=1.1.4, applicationId=null, testApplicationId=null, testInstrumentationRunner=android.support.test.runner.AndroidJUnitRunner, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}

即使我的工作build.gradle很乐意支持更改所有构建版本的包名称。救命啊!

我还尝试将build.gradle的这些新部分包装在afterEvaluate部分中,但这似乎阻止它们运行(可能是因为tasks.whenTaskAdded在评估后无法工作)。

0 个答案:

没有答案