如何将库项目添加到Android Studio?

时间:2013-05-16 12:55:25

标签: android android-studio android-library

如何将库项目(例如Sherlock ABS)添加到Android Studio

(不是旧的基于Eclipse的ADT包,而是新的Android Studio。)

31 个答案:

答案 0 :(得分:706)

Android Studio 1.0更新

自Android Studio 1.0发布以来(v1.0与我之前回答时的第一个版本之间有很多版本),有些事情发生了变化。

我的描述侧重于通过Gradle文件手动添加外部库项目(以便更好地理解该过程)。如果您想通过Android Studio创建者添加库,请使用可视指南检查下面的the answer(Android Studio 1.0与截图中的内容存在一些差异,但过程非常相似)。

在开始手动向项目添加库之前,请考虑添加外部依赖项。它不会搞乱您的项目结构。几乎所有知名的Android库都在Maven存储库中提供,其安装只需要app/build.gradle文件中的一行代码:

dependencies {
     compile 'com.jakewharton:butterknife:6.0.0'
}

添加图书馆

以下是将外部Android库添加到项目中的完整过程:

  1. 通过Android Studio创建者创建新项目。我把它命名为 HelloWorld
  2. 以下是Android Studio创建的原始项目结构:
  3. HelloWorld/
          app/
               - build.gradle  // local Gradle configuration (for app only)
               ...
          - build.gradle // Global Gradle configuration (for whole project)
          - settings.gradle
          - gradle.properties
          ...
    
    1. 在根目录(HelloWorld/)中,创建新文件夹:/libs,我们将在其中放置外部库(此步骤不是必需的 - 仅用于保持更清晰的项目结构)。 / LI>
    2. 将您的库粘贴到新创建的/libs文件夹中。在这个例子中,我使用PagerSlidingTabStrip library(只需从GitHub下载ZIP,将库目录重命名为“PagerSlidingTabStrip”并复制它)。这是我们项目的新结构:
    3. HelloWorld/
            app/
                 - build.gradle  // Local Gradle configuration (for app only)
                 ...
            libs/
                 PagerSlidingTabStrip/
                      - build.gradle // Local Gradle configuration (for library only)
            - build.gradle // Global Gradle configuration (for whole project)
            - settings.gradle
            - gradle.properties
            ...
      
      1. 通过将您的库添加到include来修改settings.gradle。如果您像我一样使用自定义路径,则还必须为我们的库定义项目目录。整个settings.gradle应如下所示:

        include ':app', ':PagerSlidingTabStrip'
        project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
        
      2. 5.1如果您遇到“默认配置”错误,请尝试此操作而不是步骤5,

            include ':app'
            include ':libs:PagerSlidingTabStrip'
        
        1. app/build.gradle中添加我们的库项目作为依赖项:

          dependencies {
              compile fileTree(dir: 'libs', include: ['*.jar'])
              compile 'com.android.support:appcompat-v7:21.0.3'
              compile project(":PagerSlidingTabStrip")
          }
          
        2. 6.1。如果您按照步骤5.1,那么请按照此步骤而不是6,

              dependencies {
                  compile fileTree(dir: 'libs', include: ['*.jar'])
                  compile 'com.android.support:appcompat-v7:21.0.3'
          
                  compile project(":libs:PagerSlidingTabStrip")
              }
          
          1. 如果您的图书馆项目没有build.gradle文件,则必须手动创建。以下是该文件的示例:

                apply plugin: 'com.android.library'
            
                dependencies {
                    compile 'com.android.support:support-v4:21.0.3'
                }
            
                android {
                    compileSdkVersion 21
                    buildToolsVersion "21.1.2"
            
                    defaultConfig {
                        minSdkVersion 14
                        targetSdkVersion 21
                    }
            
                    sourceSets {
                        main {
                            manifest.srcFile 'AndroidManifest.xml'
                            java.srcDirs = ['src']
                            res.srcDirs = ['res']
                        }
                    }
                }
            
          2. 此外,您可以为项目创建一个全局配置,其中包含每个模块的SDK版本和构建工具版本以保持一致性。只需编辑gradle.properties文件并添加行:

            ANDROID_BUILD_MIN_SDK_VERSION=14
            ANDROID_BUILD_TARGET_SDK_VERSION=21
            ANDROID_BUILD_TOOLS_VERSION=21.1.3
            ANDROID_BUILD_SDK_VERSION=21
            

            现在您可以在build.gradle文件(在应用程序和库模块中)中使用它,如下所示:

            //...
            android {
                compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
                buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
            
                defaultConfig {
                    minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
                    targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
                }
            }
            //...
            
          3. 这就是全部。只需单击,将项目与Gradle'图标synchronise with Gradle同步。您的图书馆应该在您的项目中可用。

          4. Google I/O 2013 - The New Android SDK Build System 是关于使用Gradle Build System构建Android应用程序的精彩演示:正如Xavier Ducrohet所说:

              

            Android Studio完全是关于编辑,调试和分析。   这不再是建筑了。

            一开始它可能有点令人困惑(特别是那些与Eclipse合作并且从未见过蚂蚁的人 - 就像我一样;)),但最后Gradle给了我们一些很好的机会,它值得学习这个构建系统。

答案 1 :(得分:271)

以下是视觉指南:

Android Studio 0.8.2的

更新

在Android Studio 0.8.2中,转到项目结构 - >在模块下,点击加号按钮,然后选择导入现有项目并导入actionbarsherlock。然后同步您的Gradle文件。

如果您遇到错误

  

错误:SDK Build Tools修订版(xx.x.x)太低。最低限度   要求是yy.y.y

只需打开build.gradle目录中的actionbarsherlock文件,然后将buildToolsVersion更新为建议的文件。

android {
  compileSdkVersion 19
  buildToolsVersion 'yy.y.y'

Android Studio 0.8.2


菜单文件 - > 项目结构......

First

模块 - > 导入模块

Second

导入库模块后,选择您的项目模块并添加依赖项:

Third

然后选择导入的模块

Forth

答案 2 :(得分:110)

使用菜单文件 - > 项目结构 - > 模块

我今天开始使用它。它有点不同。

对于Sherlock,您可能想要删除他们的测试目录,或者将junit.jar文件添加到类路径中。

要使用gradle导入库,您必须将其添加到dependencies的{​​{1}}部分(模块的部分)。

E.g。

build.gradle

Android Studio正在发生变化。

如果您有一个名为“打开模块设置”的部分 右键单击Android项目部分中的模块文件夹 Studio(我使用的是0.2.10版本)。

答案 3 :(得分:51)

我会考虑Dependencies, Android Libraries and Multi-project setup必读。请花几分钟时间。

特别是在非jar库项目的情况下,请阅读以上来源的以下片段:

  

Gradle项目还可以通过使用多项目设置来依赖其他gradle项目。   多项目设置通常通过将所有项目作为给定根项目的子文件夹来工作。

     

例如,给出以下结构:

MyProject/
 + app/
 + libraries/
    + lib1/
    + lib2/
  

我们可以识别3个项目。 Gradle将使用以下名称引用它们:

:app
:libraries:lib1
:libraries:lib2
  

每个项目都有自己的build.gradle来声明它是如何构建的。   此外,根目录中会有一个名为settings.gradle的文件,用于声明项目。   这给出了以下结构:

MyProject/
 | settings.gradle
 + app/
    | build.gradle
 + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle
  

settings.gradle的内容非常简单:

include ':app', ':libraries:lib1', ':libraries:lib2'
  

这定义了哪个文件夹实际上是Gradle项目。

     

:app项目可能依赖于库,这是通过声明以下依赖项来完成的:

dependencies {
    compile project(':libraries:lib1')
}

请注意,很少或根本没有使用Android Studio GUI来实现这一目标。

我目前正在使用git submodules将嵌套库链接到实际的库git repo,以避免依赖混乱。

答案 4 :(得分:24)

我刚刚找到了一种更简单的方法(而不是直接写入.gradle文件)。

这适用于Android Studio 1.1.0。

  1. 菜单文件 - > 新模块......

    Import Existing Project

    点击“导入现有项目”。

  2. 选择所需的库和所需的模块。

  3. 点击完成。 Android Studio会将库导入您的项目。它将同步gradle文件。

  4. 将导入的模块添加到项目的依赖项中。

    右键点击app文件夹 - >打开模块设置 - >转到依赖项选项卡 - >点击“+”按钮 - >单击Module Dependency。

    然后将库模块添加到项目的依赖项中。

    Add library module

  5. ???

  6. 利润

答案 5 :(得分:16)

我发现包含外部库项目的最简单方法是(例如,包含一个存储在依赖项文件夹中的一个目录的Facebook库):

  1. 在settings.gradle中添加

    include ':facebook'
    
    project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK')
    
  2. 在build.gradle依赖项部分中,添加

    compile project ('facebook')
    
  3. 剩下要做的就是将项目与gradle文件同步。

答案 6 :(得分:14)

将JAR文件作为库添加到Android Studio项目的简单方法:

a)复制* .jar文件

b)粘贴到项目下的 libs 目录中:

Enter image description here

c)添加到build.gradle:

dependencies {
    ...
    compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}

b)如果来自示例com.example.MYProject和库com.example.ScanAPI的项目具有相同的命名空间com.example ,Android Studio将检查您的构建并在您的内容中创建所有必要的更改项目。之后,您可以在菜单文件 - >中查看这些设置。 项目结构

c)如果您的项目和库具有不同的命名空间,您必须右键单击该库并选择“添加为库”选项并选择所需的类型。

请记住,“当前版本的Android Studio(0.2.3)”中的“项目结构”选项未对“build.gradle”进行任何自动更改。也许这个功能将在下一个版本中提供。

答案 7 :(得分:11)

选项1:将文件拖放到项目的libs /目录

然后,相关的build.gradle文件将自动更新。

选项2:手动修改build.gradle文件

打开build.gradle文件,并将新的构建规则添加到依赖项闭包中。例如,如果您想添加Google Play服务,那么您的项目的依赖项部分将如下所示:

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.google.android.gms:play-services:6.5.+'
   }

选项3:使用Android Studio的用户界面

在“项目”面板中, Control +单击要添加依赖关系的模块,然后选择“打开模块设置”。

Enter image description here

选择Dependencies选项卡,然后选择左下角的+按钮。您可以从以下选项列表中进行选择:

  • 图书馆依赖
  • 文件依赖
  • 模块依赖

然后,您可以输入有关要添加到项目中的依赖项的更多信息。例如,如果选择Library Dependency,则Android Studio会显示一个库列表供您选择。

添加了依赖项后,请检查模块级build.gradle文件。它应该已自动更新以包含新的依赖项。

Source

答案 8 :(得分:9)

这就是我在Android Studio 1.5 +

中的工作原理

在要添加外部库项目的项目中, 转到菜单文件 - > - > *导入新模块**,导航到要添加到项目中的库项目,选择在项目中添加“库”模块。您将在项目中获得 settings.gradle ,包括app,包含的库,如下所示:

include ':app', ':library'

在依赖项部分中添加 build.gradle(Module:app)

编译项目(':library')

重建项目,就是这样。

*您可以根据需要添加任意数量的库(模块)。在settings.gradle中,您将拥有:

 include ':app', ':lib1', ':lib2', ...

在build.gradle中,您需要:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // Some other dependencies...

    compile project(':lib1')
    compile project(':lib2')
    ...
}

答案 9 :(得分:8)

如果您需要访问库项目的资源(与使用ABS一样),请确保将库项目/模块添加为“模块依赖项”而不是“库”。

答案 10 :(得分:7)

  1. F4 显示项目结构,单击库或全局库,然后单击 + 添加JAR文件。
  2. 单击要添加jar的模块,选择依赖关系选项卡,单击 + ,然后添加库。

答案 11 :(得分:6)

您可以轻松完成此操作。转到菜单文件 - > - > 导入模块......

Enter image description here

浏览包含该模块的目录。单击完成:

Enter image description here

转到项目结构并添加模块依赖

Enter image description here

注意:如果您收到SDK错误,请更新该错误。

答案 12 :(得分:5)

不建议通过GUI编辑库依赖项,因为它不会将这些更改写入build.gradle文件。所以你的项目不会从命令行构建。我们应该直接编辑build.gradle文件,如下所示。

例如,给出以下结构:

MyProject的/

  • 应用程序/
  • 库/
    • LIB1 /
    • LIB2 /

我们可以确定三个项目。 Gradle将使用以下名称引用它们:

  1. :应用
  2. :库:LIB1
  3. :库:LIB2
  4. :app项目可能依赖于库,这是通过声明以下依赖项来完成的:

    dependencies {
        compile project(':libraries:lib1')
    }
    

答案 13 :(得分:5)

添加答案:如果IDE没有显示任何错误,但是当您尝试编译时,您会得到类似的内容:

No resource found that matches the given name 'Theme.Sherlock.Light'

您的库项目可能已编译为应用程序项目。要更改此设置,请转到:

菜单文件 - > 项目结构 - > Facets - > [图书馆名称] - >检查“库模块”。

答案 14 :(得分:4)

导入ABS模块(从文件>项目结构)并确保它具有Android 2.2和支持库v4作为依赖项后,我仍然收到以下错误@Alex

Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.DarkActionBar'

我将新导入的模块作为依赖项添加到我的主应用程序模块中,并修复了问题。

答案 15 :(得分:4)

第一种方式这适用于MacBook。

首先选择您的builder.gradle文件作为给定的屏幕:

Enter image description here

在所选屏幕上添加依赖项:

Enter image description here

选择同步项目。

如果您收到错误,例如"项目带路径':签名垫'无法在项目':app'"中找到,请使用第二种方式:

选择菜单文件 - > - > 导入模块......

Enter image description here

点击导入模块后,

Enter image description here

像我的MacBook路径一样给出库的路径:

Enter image description here

点击完成。现在您的库已添加。

答案 16 :(得分:3)

要解决此问题,您只需将abs资源路径添加到项目构建文件中,如下所示:

sourceSets {
    main {
        res.srcDirs = ['src/main/res','../../ActionBarSherlock/actionbarsherlock/res']
    }
}

所以,我再次编译没有任何错误。

答案 17 :(得分:3)

Android Studio 3.0

只需将库名称添加到应用程序的 build.gradle 文件的依赖项块中。

dependencies {
    // ...
    implementation 'com.example:some-library:1.0.0'
}

请注意,您现在应该使用implementation而不是compile。这是Android Studio 3.0的新功能。有关差异的解释,请参阅this Q&A

答案 18 :(得分:3)

如果您使用的是Android Studio .0.4.0,则可以在构建路径YourApp/libraries中创建一个新文件夹。复制JAR文件。在里面,右键单击它并“添加为库”。现在你有一个弹出窗口。只需选择你的目录并按OK,就是这样。

答案 19 :(得分:2)

https://www.dropbox.com/s/1e3eteu3h0pmkf7/Android%20studio%20_doc.doc?dl=0是如何在最新版本的Android Studio 1.0.1中添加JAR文件和库项目的Dropbox链接。

请参阅带截图的文档。这对新用户来说非常容易。

答案 20 :(得分:2)

基本上,您可以通过三种不同的方式包含JAR文件。最后一个是使用https://bintray.com/ jcenter在线存储库的远程库。但是,如果您使用其他两种方法之一,JAR文件将物理地包含在您的项目中。有关更多信息,请阅读此链接https://stackoverflow.com/a/35369267/5475941。在这篇文章中,我解释了如何在Android studio中导入JAR文件,并解释了所有可能的方法。

总之,如果它是这样的(本地地址),它们会被下载并且这些JAR文件实际上在项目中:

enter image description here

但是,如果它是这样的互联网地址,它们是远程库(bintray.com jcenter部分),它们将被远程使用:

enter image description here

我希望它有所帮助。

答案 21 :(得分:2)

只需将Android库项目作为模块导入,然后在 Build.gradle 中导入。

申请插件:'com.android.library'

之后,请按照以下步骤操作:

  1. 右键单击Module&选择打开模块设置
  2. 选择依赖项,单击 + ,选择库依赖项,然后添加以前导入的模块。

答案 22 :(得分:2)

打开build gradle模块应用程序文件并添加您的依赖项。如果您下载了库,只需导入并构建为gradle。

否则在side gradle模块应用程序中添加存储库:

repositories {
        maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}

第一个存储库将为您下载库。

编译下载的库:

 compile ('com.fortysevendeg.swipelistview:swipelistview:1.0-SNAPSHOT@aar') {
        transitive = true
    }

如果要创建库,只需将项目导入为导入新模块。

答案 23 :(得分:2)

我找到了解决方案。这很简单。关注froger_mcs instructions

确保在项目结构中将src文件夹设为源文件夹 - >模块(来源)。

Enter image description here

答案 24 :(得分:1)

对于Android Studio:

Enter image description here

单击 Build.gradle(module:app)

并添加

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile files('libs/commons-io-2.4.jar')
}

并在您的目录" app"中,创建一个目录," libs"。添加文件yourfile.jar:

Enter image description here

最后,编译Gradle文件:

Enter image description here

答案 25 :(得分:1)

在Android Studio中,转到内部app文件夹,然后打开build.gradle文件。在这里,您将看到依赖项{}。在其中,您可以添加库项目并进行同步。现在,在同步库之后,它将被添加到项目中,您可以在项目中使用它的函数和类。

答案 26 :(得分:1)

对于人们来说,我有一个不同的问题原因:

repositories {
    mavenCentral()
}

将mavenCentral()更改为jcenter()并添加

allprojects {
    repositories {
        jcenter()
    }
}

答案 27 :(得分:0)

我也遇到了同样的问题,然后我做了以下事情。

  1. 我使用菜单 File - >将库项目作为模块导入到我的AndroidStudio IDE中导入模块菜单

  2. 然后我去了我希望库项目作为依赖项目的主模块

  3. 右键单击主模块(在我的情况下,其名称为 app ) - >开放模块设置 - >进入依赖项标签 - >点击+按钮(你会在窗口的右侧看到它) - >点击模块依赖 - >从列表中选择您的图书馆项目

  4. 应用更改并单击确定按钮。

    它对我有用。我希望它也会帮助别人。

答案 28 :(得分:0)

您可以使用 Gradle dependency configuration[About] 将一些依赖项添加到您的项目中

/build.gradle

dependencies {
  //<gradle_dependency_configuration> '<dependency_name>:<dependency_version>'
  //e.g.
  implementation 'com.android.support:appcompat-v7:1.1.1'
}

答案 29 :(得分:-1)

确实,随着版本的变化,更改菜单上的用户界面和选项也是如此。在阅读了这些问题的大部分答案后,我不得不猜测什么对 Android Studio 1.1.0 有用。

  1. 使用鼠标,在主级别选择项目(这是显示应用名称的位置)。

  2. 右键单击,然后选择菜单选项新建,文件夹,资产文件夹

  3. 创建资产文件夹后,粘贴或复制其中包含库所需的任何JAR文件。

  4. 从Android Studio的主菜单(屏幕顶部)选择文件 - &gt; 项目结构

  5. 然后选择您的项目名称并转到依赖关系标签。

  6. 点击对话框左下方的加号( + ),然后选择文件相关性。

  7. 最后打开最近创建的资源文件夹,选择您复制的JAR文件,然后单击“应用”并确定

  8. 清理并重建您的项目。

答案 30 :(得分:-1)

将此添加到构建gradle文件中

 dependencies {
     implmentation 'com.jakewharton:butterknife:9.0.0'
}