How to create a library project in Android Studio

2019-01-01 05:01发布

I'm new to the gradle build system and IntelliJ.

So how do I create an Android Library Project (e.g. com.myapp.lib1) and the application project (e.g. com.myapp.app) and make the build system include com.myapp.lib1 on the application project?

I went to the Project Structure -> Modules -> My App project and added a dependency to the lib project. IntelliJ now can recognize classes from the lib project when used in the app project, but when I run the app project, there are errors like:

Gradle: error: package com.myapp.lib1 does not exist

14条回答
有味是清欢
2楼-- · 2019-01-01 05:26

I wonder why there is no example of stand alone jar project.

In eclipse, we just check "Is Library" box in project setting dialog.
In Android studio, I followed this steps and got a jar file.

  1. Create a project.

  2. open file in the left project menu.(app/build.gradle): Gradle Scripts > build.gradle(Module: XXX)

  3. change one line: apply plugin: 'com.android.application' -> 'apply plugin: com.android.library'

  4. remove applicationId in the file: applicationId "com.mycompany.testproject"

  5. build project: Build > Rebuild Project

  6. then you can get aar file: app > build > outputs > aar folder

  7. change aar file extension name into zip

  8. unzip, and you can see classes.jar in the folder. rename and use it!

Anyway, I don't know why google makes jar creation so troublesome in android studio.

查看更多
时光乱了年华
3楼-- · 2019-01-01 05:28

To create a library:

File > New Module

select Android Library

Lib

To use the library add it as a dependancy:

File > Project Structure > Modules > Dependencies

dep

Then add the module (android library) as a module dependency.

add module

Run your project. It will work.

查看更多
初与友歌
4楼-- · 2019-01-01 05:28

There are two simplest ways if one does not work please try the other one.

  1. Add dependency of the library inside dependency inside build.gradle file of the library u r using, and paste ur library in External Libraries.

OR

  1. Just Go to your libs folder inside app folder and paste all your .jar e.g Library files there Now the trick here is that now go inside settings.gradle file now add this line "include ':app:libs'" after "include ':app'" It will definitely work...........:)
查看更多
梦醉为红颜
5楼-- · 2019-01-01 05:30

Google’s Gradle Plugin recommended way for configuring your gradle files to build multiple projects has some shortcomings If you have multiple projects depending upon one library project, this post briefly explain Google’s recommended configuration, its shortcomings, and recommend a different way to configure your gradle files to support multi-project setups in Android Studio:

An alternative multiproject setup for android studio

A Different Way :

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. If you wanted to use this method with the project structure I’ve described above, you would do the following:

  1. Create an Android Studio project for the StickyListHeaders library
  2. Create an Android Studio project for App2
  3. Create an Android Studio project for App1
  4. Configure App1 and App2 to build the modules in the StickyListHeaders project.

The 4th step is the hard part, so that’s the only step that I’ll describe in detail. You can reference modules that are external to your project’s directory by adding a project statement in your settings.gradle file and by setting the projectDir property on the ProjectDescriptor object that’s returned by that project statement:

enter image description here

The code one has to put in settings.gradle:

include ':library1'
project(':library1').projectDir = new File('../StickyListHeader/library1')

If you’ve done this correctly, you’ll notice that the modules referenced by your project will show up in the project navigator, even if those modules are external to the project directory:

enter image description here

This allows you to work on library code and app code simultaneously. Version control integration also works just fine when you reference modules externally this way. You can commit and push your modifications to the library code just like you can commit and push modifications to your app code.

This way of setting up multiple projects avoids the difficulties that plague Google’s recommended configuration. Because we are referencing a module that is outside of the project directory we don’t have to make extra copies of the library module for every app that depends on it and we can version our libraries without any sort of git submodule nonsense.

Unfortunately, this other way of setting up multiple projects is very difficult to find. Obviously, its not something you’ll figure out from looking at Google’s guide, and at this point, there’s no way to configure your projects in this way by using the UI of Android Studio.

查看更多
有味是清欢
6楼-- · 2019-01-01 05:32

As theczechsensation comment above I try to search about Gradle Build Varians and I found this link: http://code.tutsplus.com/tutorials/using-gradle-build-variants--cms-25005 This is a very simple solution. This is what I did: - In build.gradle:

flavorDimensions "version"

productFlavors {
    trial{
        applicationId "org.de_studio.recentappswitcher.trial"
        flavorDimension "version"
    }
    pro{
        applicationId "org.de_studio.recentappswitcher.pro"
        flavorDimension "version"
    }

}

Then I have 2 more version of my app: pro and trial with 2 diffrent packageName which is 2 applicationId in above code so I can upload both to Google Play. I still just code in the "main" section and use the getpackageName to switch between to version. Just go to the link I gave for detail.

查看更多
冷夜・残月
7楼-- · 2019-01-01 05:36

In my case, using MAC OS X 10.11 and Android 2.0, and by doing exactly what Aqib Mumtaz has explained.

But, each time, I had this message : "A problem occurred configuring project ':app'. > Cannot evaluate module xxx : Configuration with name 'default' not found."

I found that the reason of this message is that Android 2.0 doesn't allow to create a library directly. So, I have decided first to create an app projet and then to modify the build.gradle in order to transform it as a library.

This solution doesn't work, because a Library project is very different than an app project.

So, I have resolved my problem like this :

  • First create an standard app (if needed) ;
  • Then choose 'File/Create Module'
  • Go to the finder and move the folder of the module freshly created in your framework directory

Then continue with the solution proposed by Aqib Mumtaz.

As a result, your library source will be shared without needing to duplicate source files each time (it was an heresy for me!)

Hoping that this help you.

查看更多
登录 后发表回答