Intereting Posts
Can android загрузить dll из sdcard в основном режиме Невозможно разрешить целевое «андроид-19» Закрытие навигационного ящика после открытия другого действия Gradle: идентификатор ресурса не найден для атрибута при использовании flavors и packageName Отправка файла cookie с помощью http post android StaggaredGridLayoutManager не работает должным образом Фрагмент – removeGlobalOnLayoutListener IllegalStateException Не удалось открыть файл трассировки стека '/data/anr/traces.txt': разрешение отклонено Whatsapp как сворачивание панели инструментов Как обеспечить, чтобы выбранное пользователем изображение не изменилось после перезагрузки Android? Не объединяйте текст, отображаемый с помощью setText. Использовать строку ресурсов с заполнителями Служба android onBind SecurityException Android Wifi Direct Service Discovery Лучший способ удалить Activity и его ссылки в Android Studio Android, Error = Невозможно найти информацию о приборе для: ComponentInfo {}

Как включить applicationId в вызове командной строки из зависимости build.gradle?

Я пытаюсь следовать этому Gist для отключения системных анимаций :

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 в секции afterEvaluate , но это, кажется, мешает им работать (возможно, потому что tasks.whenTaskAdded не будет работать после оценки).