Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Module Dependency - Android Studio

Tags:

android

gradle

I've 2 modules under my project M1, M2

Project
  - M1
  - M2

Earlier, I had M1 as my primary application. However, there was a need for new application M2 that shared lot of common stuff with M1. So, I created a new module M2 with M1 as dependency.

To achieve this, I've modified build.gradle of M1 and M2 as follows:

M2:

compile project(':M1')

M1: (Changed to library)

apply plugin: 'com.android.library'

However, this doesn't work and throws up error:

Could not find property 'applicationVariants' on com.android.build.gradle.LibraryExtension_Decorated@6de81701.

Any idea, on how to solve this issue ?

like image 934
Gaurav Arora Avatar asked Feb 16 '15 17:02

Gaurav Arora


1 Answers

From the docs:

In Android projects, this is a bit more complicated because there could be a large number of the same task and their name is generated based on the Build Types and Product Flavors.

In order to fix this, the android object has two properties:

applicationVariants (only for the app plugin)

libraryVariants (only for the library plugin)

testVariants (for both plugins)

All three return a DomainObjectCollection of ApplicationVariant, LibraryVariant, and TestVariant objects respectively.

http://tools.android.com/tech-docs/new-build-system/user-guide

So it seems that your build.gradle in M1 uses the property applicationVariants which is not applicable to library projects. Since I don't know what you are doing exactly I can just guess that you either need to (1) replace that with libraryVariants or (2) move it to the build.gradle of M2.

like image 74
david.mihola Avatar answered Nov 19 '22 07:11

david.mihola