Динамическая доставка Android в библиотечный проект

#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, а затем обработать загрузку этого динамического функционального модуля.