На этой странице описаны свойства и параметры, необходимые для подготовки проекта библиотеки Android к публикации с использованием плагина Android Gradle (AGP) . Даже если вы установили некоторые из этих свойств в самом начале создания библиотеки, ознакомьтесь со следующими рекомендациями, чтобы оптимизировать настройки.
Выберите пространство имен
Библиотекам Android необходимо объявить пространство имен, чтобы они могли генерировать уникальный класс R
при компиляции своих ресурсов. Это пространство имен должно точно соответствовать пакету корневого класса библиотеки, чтобы избежать путаницы, когда пользователи импортируют обычные классы из библиотеки и ее класса R
Начиная с AGP 7.0, вы можете установить пространство имен в файле build.gradle
приложения, как показано в следующем примере кода:
классный
android { namespace = 'com.example.library' }
Котлин
android { namespace = "com.example.library" }
Пространство имен — это свойство библиотеки, доступное разработчику. Он не связан с удостоверением приложения, которое задается с помощью свойства applicationId
.
В предыдущих версиях AGP как свойство applicationId
(для приложения), так и свойство namespace
(для библиотеки) можно было установить с помощью атрибута package
манифеста, что приводило к путанице.
Выберите значение minSdkVersion
Выбор minSdkVersion
для вашей библиотеки — важный аспект публикации вашей библиотеки. minSdkVersion
должен отражать минимальную версию Android, которую может поддерживать ваш код.
При выборе minSdkVersion
учитывайте следующие соображения:
Выбор низкого значения
minSdkVersion
обычно позволяет обеспечить более широкое распространение вашей библиотеки.Код библиотеки обычно не выполняется, если приложение не вызывает его явно. Приложение по-прежнему может работать на версии Android ниже, чем требуется зависимостью библиотеки (если библиотека не важна для основных функций приложения), выполняя проверки во время выполнения перед вызовом библиотеки. Поэтому установите
minSdkVersion
вашей библиотеки достаточно низким, чтобы ее можно было встраивать в приложения и вызывать, когда это возможно, чтобы охватить больше пользователей.Выбор высокого значения
minSdkVersion
может помешать приложениям включать библиотеку.Слияние манифеста, которое является шагом в AGP, который объединяет файлы манифеста из приложения и его зависимостей, обеспечивает, чтобы никакие зависимости не имели более высокий
minSdkVersion
, чем приложение.Выбор высокого значения
minSdkVersion
может побудить разработчиков приложений отключить проверки безопасности слияния манифестов, что приведет к проблемам на более позднем этапе процесса сборки.Поскольку слияние манифеста не позволяет проектам приложений включать библиотеки с более высоким значением
minSdkVersion
, чем само приложение, разработчики приложений могут отключить проверки безопасности слияния манифеста, чтобы минимизировать ошибки сборки. Однако это чревато настоящими проблемами несовместимости в дальнейшем.Выбор высокого значения
minSdkVersion
может потребоваться в особых случаях, когда манифест библиотеки включает в себя широковещательный приемник или какой-либо другой механизм, с помощью которого ее код запускается автоматически.В этих случаях выбор высокого значения
minSdkVersion
гарантирует возможность выполнения кода. Альтернативно вы можете отключить автоматическое поведение, чтобы приложение могло разрешить выполнение библиотеки после выполнения правильных проверок.
Чтобы разрешить встраивание в приложения, используйте аннотацию RequiresApi
в своей библиотеке, чтобы указать вызывающим объектам, что им необходимо выполнить проверки во время выполнения. Android Lint использует информацию RequiresApi
для своих проверок. Дополнительные ресурсы по использованию аннотаций для улучшения кода API и API см. в разделе Улучшение проверки кода с помощью аннотаций .
Настройка метаданных AAR
Библиотека Android упакована в виде файла Android Archive (AAR). Метаданные AAR состоят из свойств, которые помогают AGP использовать библиотеки. Если ваша библиотека используется несовместимой конфигурацией и настроены метаданные AAR, пользователям будет показано сообщение об ошибке, которое поможет им решить проблему.
Выберите значение minCompileSdk.
Начиная с версии 4.1, AGP поддерживает minCompileSdk
. Это указывает минимальный compileSdk
, который могут использовать потребляющие проекты. Если ваша библиотека содержит записи манифеста или ресурсы, использующие атрибуты новой платформы, вам необходимо установить это значение.
Значение minCompileSdk
можно установить в блоках defaultConfig{}
, productFlavors{}
и buildTypes{}
в файле build.gradle
уровня модуля:
классный
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { foo { ... aarMetadata { minCompileSdk = 30 } } } }
Котлин
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { register("foo") { ... aarMetadata { minCompileSdk = 30 } } } }
Если вы установили minCompileSdk
в нескольких местах, Gradle в процессе сборки расставляет приоритеты для местоположений настроек следующим образом:
buildTypes{}
productFlavors{}
defaultConfig{}
В предыдущем примере, где minCompileSdk
определен как в defaultConfig{}
так и productFlavors{}
, приоритет имеет productFlavors{}
, а для minCompileSdk
установлено значение 30.
Чтобы узнать больше о том, как Gradle определяет приоритеты настроек при объединении кода и ресурсов, см. раздел Сборка с использованием наборов исходного кода .
Включить тестовые приспособления
Тестовые приспособления обычно используются для настройки тестируемого кода или облегчения тестирования компонента. Начиная с версии 7.1, AGP может создавать тестовые приспособления для проектов библиотек в дополнение к проектам приложений и динамических функций.
Публикуя библиотеку для использования другими, рассмотрите возможность создания тестовых приспособлений для вашего API. Тестовые приспособления можно включить в файле build.gradle
на уровне модуля:
классный
android { testFixtures { enable = true } }
Котлин
android { testFixtures { enable = true } }
Когда вы включаете тестовые приспособления, Gradle автоматически создает исходный набор src/testFixtures
, в котором вы можете писать тестовые приспособления.
Для получения дополнительной информации обратитесь к документации Gradle об использовании тестовых приспособлений .