Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Library Project using Android Studio

This question might have been answered somewhere but couldn't find the appropriate one.

I want to know how can I create a common utility library project in Android Studio. I want to write some common classes and some common methods within them to use in Android app projects. Probably like how .dll are in Windows world - a set of common methods that can be shared among multiple consumers.

Thanks in advance.

like image 653
hvkale Avatar asked Jan 23 '14 03:01

hvkale


People also ask

What are libraries in Android Studio?

Android App Development for Beginners The Android Support Library package is a set of code libraries that provide backward-compatible versions of Android framework APIs as well as features that are only available through the library APIs. Each Support Library is backward-compatible to a specific Android API level.

How do I create a library in Android Studio?

Create a new project to make your library in. Click File > New > New Module > Android Library > Next > (choose name) > Finish. Then add whatever classes and resourced you want to your library. When you build the module an AAR file will be created. You can find it in project-name/module-name/build/outputs/aar/.

How do I use an Android library in another project?

To use your new Android library's code in another app or library module within the same project, add a project-level dependency: Navigate to File > Project Structure > Dependencies. Select the Module in which you’ll use the library. In the Declared Dependencies tab, click and select Module Dependency in the dropdown.

How do I import a Gradle library into Android Studio?

Just click‚ synch the project with Gradle. Your library should be available for your project. Click on “ Import Existing Project “. Step 2: Select the desired library and the desired module. Then click finish. Android Studio will import the library into your project and will sync Gradle files.

How do I manage multiple projects in Android Studio?

It turns out there’s a better way to manage multiple projects in Android Studio. The trick is to create separate Android Studio projects for your libraries and to tell gradle that the module for the library that your app depends on is located in the library’s project directory.


2 Answers

Simplest way to do this :

  1. Right click on your opened project in Android Studio and select New > Module

  2. In the left Pane choose Android Library and click on next.

  3. Enter all details, untick Create Activity, Theme and all if not required.

  4. Choose API level same as your project and Next, Next, Next .

Now you will see an another directory inside your project, build.gradle for library will be automatically configured for you.

If your module/library name is "mylibrary",

include ':mylibrary'  

will be automatically added in settings.gradle file inside root directory of your project.

Now open your main module and insert this line in dependency block :

compile project(':mylibrary') 

If you want to use same library in other projects, you have to copy the library module to that particular project using File Explore and have to configure settings.gradle and main module's build.gradle manually.

like image 101
Piyush Agarwal Avatar answered Sep 28 '22 09:09

Piyush Agarwal


An old question, but even now there doens't seem to be a propper solution for libraries in AndroidStudio. I've been looking into making the migration step for some time now and this is what I found.

My 'solution'

Lets say we've got a Library (called lib) which contains shared code and an Application project (called app) which wants to use said library's code.

The key is defining a project in settings.gradle in the Project's root (/Some/Path/MyProjects/Project/settings.gradle) This file should already exist and contain something like include ':app'.

We will modify this file to also include the library AND define the library with the following two lines:

/Some/Path/MyProjects/Project/settings.gradle

... // tell gradle we want to include a module called 'lib' include 'lib' // tell gradle there is a module called 'lib', found in a specific directory // Note the /app on the end, the project structure wraps a project around a module, you want to refer that module! project (':lib').projectDir = new File('/Some/Path/MyProjects/Library/app') ...

Also edit the projects build.gradle /Some/Path/MyProjects/Project/app/build.gradle to depend on the newly added module lib

/Some/Path/MyProjects/Project/app/build.gradle`

... dependencies {     ...     compile project (':lib') // we want to depend on our library } ...

Extra

When working with multiple developers or for the sake of flexibility, I use my gradle.properties in my .gradle directory (for *nix based systems usually found in homedir, not sure where Windows looks for it). Do note that you might need to create the directory and file yourself.

In this file you can create, if you like, constants that can be used by you throughout your gradle files. For example, mine contains something like the following:

theconstant=/Some/Path/MyProjects/Library/app

note the seemingly missing quotes (not sure whether thats really needed tho) Now we can replace

project (':lib').projectDir = new File('/Some/Path/MyProjects/Library/app')

with

project (':lib').projectDir = new File(theconstant)

Now you and your team could define this constant (which might differ per machine) and change the path accordingly.

pros

  • No copying of whole libraries anymore!
  • Flexibility, you can edit the library in the project's window
  • Multiple developers working on the same projects can define their own paths
  • Library gets compiled at the projects' compile time (BuildConfig.DEBUG!)

cons

  • None so far

I havn't found the chance to properly test this through, yet this seems like the most elegant solution for the time being! I would like to hear your thoughts on this.

like image 32
justinvdk Avatar answered Sep 28 '22 09:09

justinvdk