Плагин astromkey для Android Gradle сканирует все подпроекты и настраивает процесс автоматического инструментирования для модулей вашего приложения. Плагин не влияет на большинство других модулей, и в некоторых случаях, например, в библиотечных модулях Android, вам может потребоваться настроить процесс инструментирования.
В следующем разделе описывается поведение подключаемого модуля для определенных типов модулей и архитектур.
Модули библиотеки Android
Все библиотеки Android/Java (и сторонние библиотеки) автоматически настраиваются, когда они являются частью вашего приложения Android. Никакой дополнительной настройки не требуется, поскольку плагин имеет доступ ко всем зависимостям Gradle вашего проекта Android-приложения. Если вы хотите обогатить данные о взаимодействии с мобильными пользователями, созданные модулями вашей библиотеки, добавьте ЕдиныйАгент SDK вручную в качестве зависимости Gradle.
Примечание . Вы должны использовать одну и ту же версию для ЕдиногоАгента SDK и подключаемого модуля astromkey для Android Gradle. Рекомендуется указать зависимость ЕдиногоАгента SDK через подключаемый модуль astromkey Android Gradle.
Если у вас есть несколько библиотечных проектов в многомодульном проекте и вы хотите использовать ЕдиныйАгент SDK в каждом библиотечном модуле, используйте следующий фрагмент кода Gradle:
Groovy:
subprojects {
pluginManager.withPlugin("com.android.library") {
dependencies {
implementation com.astromkey.tools.android.astromkeyPlugin.agentDependency()
}
}
}
Kotlin:
subprojects {
pluginManager.withPlugin("com.android.library") {
dependencies {
"implementation"(com.astromkey.tools.android.astromkeyPlugin.agentDependency())
}
}
}
Вы также можете использовать другие функции Gradle для тонкой настройки этого поведения. Например, следующие фрагменты кода Gradle используют имя модуля, чтобы определить, нужно ли добавлять ЕдиныйАгент SDK в определенный модуль библиотеки Android:
Groovy:
subprojects { project ->
pluginManager.withPlugin("com.android.library") {
if(project.name == 'firstLibrary' || project.name == 'secondLibrary') {
dependencies {
implementation com.astromkey.tools.android.astromkeyPlugin.agentDependency()
}
}
}
}
Kotlin:
subprojects { project ->
pluginManager.withPlugin("com.android.library") {
if(project.name == "firstLibrary" || project.name == "secondLibrary") {
dependencies {
"implementation"(com.astromkey.tools.android.astromkeyPlugin.agentDependency())
}
}
}
}
Android-проекты с динамической функциональной архитектурой
Плагин Android Gradle поддерживает доставку функций Play . Приложения могут состоять из базового модуля и одного или нескольких модулей динамических функций. Модули динамических функций можно загружать по запросу или даже в виде отдельной мгновенной функции без необходимости установки всего приложения.
Базовый модуль применяет com.android.application
подключаемый модуль, тогда как модули динамических функций применяют com.android.dynamic-feature
подключаемый модуль. Когда вы создаете приложение, плагин автоматически использует оба типа плагинов. Для всех модулей используется одна и та же конфигурация. Благодаря функции автозапуска плагин обрабатывает Application
класс базового модуля. Это гарантирует, что агент всегда работает, даже если динамическая функция работает в мгновенном режиме.
Мгновенная доставка и запуск вручную
Если вы хотите деактивировать функцию автоматического запуска внедрения и запустить агент вручную в своем коде, помните о том, что это может повлиять на модули динамических функций с мгновенным включением. Модули с поддержкой Instant предназначены для работы на устройстве без установки. Это означает, что на устройство поставляются только базовый модуль и динамический функциональный модуль с мгновенной активацией. Чтобы агент функционировал должным образом, он должен быть запущен в базовом модуле, желательно в Application
классе базового модуля, а не в классе или методе, который не вызывается вовремя мгновенным модулем.
Инструментирование вариантов сборки Android
Если вы используете разновидности продуктов в своих модулях, используйте одни и те же имена и размеры вкусов продуктов в каждом модуле. Когда вы используете missingDimensionStrategy
свойство подключаемого модуля, убедитесь, что каждый вариант в каждом модуле связан с правильной конфигурацией конкретного варианта, настроив свойство фильтра вариантов . Вы можете использовать эту printVariantAffiliation
задачу для определения связей между вариантами и конфигурациями.
Проекты Android с несколькими модулями приложений
Настройка подключаемого модуля astromkey Android Gradle для проектов Android с несколькими модулями приложений аналогична настройке проекта Android с одним модулем приложения. Следуйте инструкциям в Инструментарий с помощью плагина astromkey для Android Gradle .
Примечание . Убедитесь, что вы пропустили шаг 3: примените подключаемый модуль astromkey Android Gradle и добавьте фрагмент конфигурации .
Вместо применения com.astromkey.instrumentation
идентификатора подключаемого модуля к файлу верхнего уровня build.gradle
примените идентификатор подключаемого модуля com.astromkey.instrumentation.module к build.gradle
каждому модулю приложения .
Groovy:
apply plugin: 'com.astromkey.instrumentation.module'
astromkey {
configurations {
sampleConfig {
autoStart {
applicationId '<YourApplicationID>'
beaconUrl '<ProvidedBeaconURL>'
}
}
}
}
Kotlin:
apply(plugin = "com.astromkey.instrumentation.module")
configure<com.astromkey.tools.android.dsl.astromkeyExtension> {
configurations {
create("sampleConfig") {
autoStart {
applicationId("<YourApplicationID>")
beaconUrl("<ProvidedBeaconURL>")
}
}
}
}
Чтобы настроить инструменты для конкретного приложения, вы должны изменить конфигурацию плагина в build.gradle
файле приложения. Это изменение конфигурации не повлияет на другие модули приложения.
Проекты Android с несколькими приложениями и модулями динамических функций
Если проект Android также содержит модули, использующие подключаемый com.android.dynamic-feature
модуль, рекомендуется скопировать приведенный выше фрагмент в новый .gradle
файл. Сгенерированный файл необходимо применить в модуле приложения и во всех модулях динамических функций, принадлежащих этому модулю приложения. Чтобы применить .gradle
файл, используйте следующий фрагмент, как описано в официальной документации Gradle :
Groovy:
apply from: 'other.gradle'
Kotlin:
apply(from = "other.gradle.kts")
При таком подходе для всех модулей, принадлежащих одному и тому же приложению, используется одна и та же конфигурация.
Примечание . Невозможно использовать разные конфигурации для одного и того же модуля динамических функций (если он принадлежит нескольким приложениям).
Проекты Android только с одним файлом сборки
Если ваш проект Android не использует рекомендованную архитектуру и состоит только из одного файла build.gradle, этапы инструментирования немного отличаются. В этом случае и «файл сборки верхнего уровня», и «файл сборки уровня модуля» относятся к одному и тому же build.gradle
файлу.
Выполните все шаги, как описано в разделе «Инструментирование с помощью подключаемого модуля astromkey Android Gradle» , кроме шага 3: примените подключаемый модуль astromkey Android Gradle и добавьте фрагмент конфигурации . Вместо того, чтобы применять com.astromkey.instrumentation
идентификатор плагина в build.gradle
файле, примените com.astromkey.instrumentation.module
идентификатор плагина. Также убедитесь, что com.astromkey.instrumentation.module
применяется после com.android.application
плагина и перед com.google.firebase.firebase-perf
плагином, если он также используется.
Плагин Firebase Performance Monitoring версии 1.4.0+, используемый с плагином Android Gradle версии 4.2.0, несовместим с плагином astromkey Android Gradle.
Groovy:
apply plugin: 'com.android.application'
...
apply plugin: 'com.astromkey.instrumentation.module'
astromkey {
configurations {
sampleConfig {
autoStart {
applicationId '<YourApplicationID>'
beaconUrl '<ProvidedBeaconURL>'
}
}
}
}
Kotlin:
apply(plugin = "com.android.application")
...
apply(plugin = "com.astromkey.instrumentation.module")
configure<com.astromkey.tools.android.dsl.astromkeyExtension> {
configurations {
create("sampleConfig") {
autoStart {
applicationId("<YourApplicationID>")
beaconUrl("<ProvidedBeaconURL>")
}
}
}
}