Intereting Posts
Создание минимизированной банки с использованием только используемых классов Как реализовать свернутое изображение, например приложение Google IO 2015, используя библиотеку дизайна Реагировать на родные андроидные переходы очень медленно Кордоба добавить платформу – Ошибка выполнения команды 'ant' Как установить кнопку «Отмена» в диалоговом окне «Прогресс»? Индекс массива Android ListView за пределами фильтра Theme.AppCompat.Light.NoActionBar.FullScreen не работает с Android 4.4 Получить название города и почтовый индекс из Google Place API на Android Правильный способ предоставления Premium-обновления бесплатному Android-приложению OnPostExecute не вызывается после завершения AsyncTask Android L – нет однорангового сертификата Добавить маркер в касание местоположения с помощью карты google в android Что это значит «xmlns: xliff»? XML Android: Нет активности для обработки Intent error? Как это разрешится Bitmapshader и canvas.scaling android

Получение имени пакета приложения в плагине gradle

Я создаю плагин gradle, который добавляет новую задачу для каждого варианта приложения. Эта новая задача требует имя пакета варианта приложения.

Это мой текущий код, который перестает работать с последней версией плагина android gradle:

private String getPackageName(ApplicationVariant variant) { // TODO: There's probably a better way to get the package name of the variant being tested. String packageName = variant.generateBuildConfig.packageName if (variant.processManifest.packageNameOverride != null) { packageName = variant.processManifest.packageNameOverride } packageName } 

Это перестало работать в последней версии плагина android из-за изменений в обработке конфигурации сборки. В любом случае это казалось взломом, поэтому я не удивлен, что он перестает работать. Есть ли канонический способ получить имя пакета?

Solutions Collecting From Web of "Получение имени пакета приложения в плагине gradle"

Я использую это:

 // Return the packageName for the given buildVariant def getPackageName(variant) { def suffix = variant.buildType.packageNameSuffix def packageName = variant.productFlavors.get(0).packageName if (suffix != null && !suffix.isEmpty() && suffix != "null") { packageName += suffix } return packageName } 

Единственный способ, которым я нашел, – определить имя packageName в packageName проекта, а затем из build.gradle plugin do project.android.defaultConfig.packageName .

Если в проекте есть вкусы, которые определяют их собственный пакет, то решение, указанное stealthcopter, будет работать.

Однако плагин предназначен для работы с любым проектом, независимо от того, определено имя packageName или нет в build.gradle поэтому эти решения далеки от идеала.

Дайте мне знать, если вы найдете что-то получше.

Это будет обрабатывать нулевое applicationIdSuffix IdSuffix для вас:

 android.applicationVariants.all { variant -> def applicationId = [variant.mergedFlavor.applicationId, variant.buildType.applicationIdSuffix].findAll().join() println applicationId }