How to include an Android library module in anothe

2020-08-10 20:00发布

问题:

I am building an Android library that is packaged as an aar and distributed to 3rd party developers.

The structure is pretty simple:

project ---libraryA ---libraryB

libraryA requires libraryB, which is why is has this in its gradle file:

compile project(':libraryB')

And settings.gradle has

include ':libraryB', ':libraryA'

But if I build the project as an aar it only includes libraryA. What am I missing?

I read the responses to this: Android Studio how to package single AAR from multiple library projects?

Is this still not possible? I would assume that splitting up your code into multiple modules is not bad practice?

回答1:

You can try fat-aar.gradle script published here: https://github.com/adwiv/android-fat-aar



回答2:

Is this still not possible?

Correct, at least through the standard build tools. It's possible there are third-party plugins, scripts, or other recipes to create a "fat AAR" out of an AAR and its dependencies.

I would assume that splitting up your code into multiple modules is not bad practice?

Having multiple modules is perfectly fine for local development. However, modules are dependencies. When you ship a library, you need to satisfy all those dependencies, which will include any of your modules. That, in turn, means that any modules that your library depends upon must also be libraries, distributed in a way that a consumer of your top-level library will be able to get to those dependencies.