#android #gradle #android-library #google-play-core #dynamic-delivery
#Android #gradle #android-библиотека #google-play-core #динамическая доставка
Вопрос:
Я создаю библиотеку Android, и я хотел бы, чтобы некоторые из ее функций загружались только по требованию в виде динамических функциональных модулей.
Можно ли использовать динамическую доставку (из основной библиотеки Google Play) в проекте библиотеки Android?
Я попытался добавить dynamicFeatures = [':my_dynamic_feature']
в свой проект библиотеки build.gradle
, но когда я пытаюсь выполнить синхронизацию Gradle, я получаю следующую ошибку:
Could not set unknown property 'dynamicFeatures' for object of type com.android.build.gradle.LibraryExtension.
По этой причине я подозреваю, что динамическая доставка поддерживается только для 'com.android.application'
, но не для 'com.android.library'
.
Может кто-нибудь подтвердить, поддерживается это или нет?
Или, по крайней мере, планируется к будущему выпуску Play Core library?
Спасибо!
Ответ №1:
Да, в настоящее время его можно использовать только из класса application.
Если вы хотите спроектировать свою библиотеку таким образом, чтобы она могла впоследствии поддерживать динамическую функцию, вы можете переместить код, связанный с динамической функцией, в отдельную библиотеку, назовем ее DFLibrary. Вместо прямого вызова методов DFLibrary вы можете использовать отражение.
Теперь любой клиент, который хочет использовать вашу библиотеку и DFLibrary, но не хочет обрабатывать динамическую установку функций, может включать зависимости как вашей библиотеки, так и DFLibrary.
В случае, если клиент хочет использовать DFLibrary в качестве динамического функционального модуля, он может сам создать динамический функциональный модуль и включить в него зависимость DFLibrary, а затем обработать загрузку этого динамического функционального модуля.