我正在尝试关注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
在评估后无法工作)。