How to import android project as library and NOT compile it as apk (Android studio 1.0)

JavaAndroidGradleAndroid Studiobuild.gradle

Java Problem Overview


I tried to import a project(projLib) as dependency for another project(projAPK).

projAPK gradle has this :

dependencies {
    compile project(':libs:NewsAPI')
    compile project(':projLib')
}

but when i sync the gradle it gives this error: >Error:Dependency Android_2015:projLib:unspecified on project projAPK resolves to an APK archive which is not supported as a compilation dependency. File: /Users/myname/Documents/Development/Android_2015/libs/projAPK/build/outputs/apk/projLib-release-unsigned.apk

so I guess there are two solution to this:

  1. somehow make gradle think that projLib is a library that shouldn't be compiled to apk
  2. somehow make gradle NOT compile the projLib explicitly

The problem is, I couldn't find how to do any of that. Would be awesome if you guys can help :)

Java Solutions


Solution 1 - Java

In projLib's build.gradle file, you'll see a statement like this:

apply plugin: 'com.android.application'

which tells Gradle to build it as an application, generating an APK. If you change it to this:

apply plugin: 'com.android.library'

it will build as a library, generating an AAR, and it should work.

If you also need projLib to generate a separate APK, then you'll have to do some refactoring to pull the common code that you need out into a third library module, and have both APKs depend on it.

Libraries aren't allowed to set an applicationId, so if you see an error message to that effect, remove it from the library's build script.

Solution 2 - Java

In module gradle file-

Replace apply plugin: 'com.android.application' with apply plugin: 'com.android.library'

Then remove applicationId "xxx.xxx.xxxx"

Clean and Build

Solution 3 - Java

just add these lines to library gradle file and remove other sections

apply plugin: 'com.android.library'

android {
   compileSdkVersion 23
   buildToolsVersion '23.0.2'
}

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'com.squareup.picasso:picasso:2.4.0'
   compile 'com.google.code.gson:gson:2.2.4'
   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:gridlayout-v7:23.1.1'
  ,...
}

Solution 4 - Java

For Kotlin DSL (build.gradle.kts), use this notation:

plugins {
    id("com.android.library")
    // ...
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVic ZhouView Question on Stackoverflow
Solution 1 - JavaScott BartaView Answer on Stackoverflow
Solution 2 - Javasan88View Answer on Stackoverflow
Solution 3 - JavaHamidreza SadeghView Answer on Stackoverflow
Solution 4 - JavaMahozadView Answer on Stackoverflow