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

Ale*_*tin 788 android android-library android-studio

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

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

fro*_*mcs 711

Android Studio 1.0更新

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

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

在开始手动向项目添加库之前,请考虑添加外部依赖项.它不会搞乱您的项目结构.几乎每个着名的Android库都可以在Maven存储库中使用,并且它的安装只需要在app/build.gradle文件中包含一行代码:

dependencies {
     compile 'com.jakewharton:butterknife:6.0.0'
}
Run Code Online (Sandbox Code Playgroud)

添加库

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

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

    include ':app', ':PagerSlidingTabStrip'
    project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
    
    Run Code Online (Sandbox Code Playgroud)

5.1如果您遇到"默认配置"错误,请尝试此操作而不是步骤5,

    include ':app'
    include ':libs:PagerSlidingTabStrip'
Run Code Online (Sandbox Code Playgroud)
  1. app/build.gradle添加我们的库项目作为一个依赖关系:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'
        compile project(":PagerSlidingTabStrip")
    }
    
    Run Code Online (Sandbox Code Playgroud)

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")
    }
Run Code Online (Sandbox Code Playgroud)
  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']
                }
            }
        }
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)

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

    //...
    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)
        }
    }
    //...
    
    Run Code Online (Sandbox Code Playgroud)
  3. 就这样.只需单击,将项目与Gradle'图标同步与Gradle同步.您的图书馆应该在您的项目中可用.

Google I/O 2013 - 新的Android SDK构建系统是一个关于使用Gradle Build System构建Android应用程序的精彩演示:正如Xavier Ducrohet所说:

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

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

  • +1.很长一段时间都在挣扎.正如*victor n*所说,从actionbarsherlock模块引用主项目的支持jar不起作用.我必须执行以下操作才能使其正常工作...(1)从项目的build.gradle中删除**编译文件('libs/android-support-v4.jar')**.主模块应该只有**编译项目(":libraries:actionbarsherlock")**.(2)在actionbarsherlock的构建中添加**编译文件('libs/android-support-v4.jar')**而不是**编译文件(':HelloWorld/libs/android-support-v4.jar')**.gradle. (9认同)
  • 为什么我没有"导入模块"部分,在您指导我们的选项中?我正在使用Android Studio 0.3.1 (8认同)
  • 嘿那里,你完美地解释了真正的问题.投票给你的答案,以便其他人可以看到它.一个不起作用的小问题是在依赖项的build.gradle中引用支持库.事实证明':Project/libs ......'由于某种原因不起作用.我不得不取消项目识别.所以'libs/...'.它编译得很好.需要注意的是,这两种引用路径或项目的方式令人困惑.我希望将来会出现一个简单统一的方案.原始解决方案没有理由不起作用. (6认同)
  • 缺少导入模块选项!! (5认同)
  • "全球图书馆"在哪里(#10:"现在去全球图书馆")?除此之外,它的工作原理如此:)非常感谢.(我希望谷歌能够做到这一点 - 这个简单的任务目前很复杂) (3认同)
  • 我尝试了5和5.1两种情况都得到了错误:错误:找不到名称'default'的配置.它不适合我:/ @froger_mcs (3认同)
  • 此答案与当前的Android Studio版本不同. (2认同)
  • 该库必须解压缩? (2认同)

Sam*_*Rad 274

这是视觉指南:

Android Studio 0.8.2 更新:

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

如果您遇到错误

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

只需打开目录中的build.gradle文件actionbarsherlock并更新buildToolsVersion为建议的文件.

android {
  compileSdkVersion 19
  buildToolsVersion 'yy.y.y'
Run Code Online (Sandbox Code Playgroud)

Android Studio 0.8.2


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

第一

模块 - > 导入模块

第二

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

第三

然后选择导入的模块:

向前

  • 导入模块选项在Android Studio4.3中不可用 (31认同)
  • 这将复制项目中的库模块,如果您希望在多个项目之间共享公共代码库,那么这不是您想要的 (7认同)
  • 让我做这项工作并解决包找不到错误的关键是"选择你的项目模块并添加依赖"`依赖项{// ...编译项目(':library')} (3认同)

Bla*_*elt 111

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

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

对于Sherlock,您可能希望删除其测试目录,或将该junit.jar文件添加到类路径中.

要导入的gradle使用图书馆,你可以将其添加到dependencies您的部分 build.gradle(模块的一个).

例如

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.0'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}
Run Code Online (Sandbox Code Playgroud)

Android Studio正在发生变化.

如果右键单击Android Studio项目部分中的模块文件夹(我使用的是版本0.2.10),则存在名为"打开模块设置"的部分.

  • 嗨,我遇到像Alex这样的问题("Gradle:错误检索项目的父项:找不到与给定名称匹配的资源'Theme.Sherlock.Light'.") - Java依赖项似乎正确解决,导致IDE并没有责怪我的SherlockActivity,但由于某种原因,Gradle似乎没有考虑ABS的资源.有任何想法吗? (7认同)
  • 在Android Studio 0.2.8上,"Project Structure"窗口中没有"Modules"部分. (4认同)

Jon*_*Lin 51

我会考虑依赖,Android库和多项目设置必要的阅读.请花几分钟时间.

特别是,对于非jar库项目,请从上面的源代码中阅读以下代码段:

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

例如,给出以下结构:

MyProject/
 + app/
 + libraries/
    + lib1/
    + lib2/
Run Code Online (Sandbox Code Playgroud)

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

:app
:libraries:lib1
:libraries:lib2
Run Code Online (Sandbox Code Playgroud)

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

MyProject/
 | settings.gradle
 + app/
    | build.gradle
 + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle
Run Code Online (Sandbox Code Playgroud)

settings.gradle的内容非常简单:

include ':app', ':libraries:lib1', ':libraries:lib2'
Run Code Online (Sandbox Code Playgroud)

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

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

dependencies {
    compile project(':libraries:lib1')
}
Run Code Online (Sandbox Code Playgroud)

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

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


Ren*_*hel 25

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

这适用于Android Studio 1.1.0.

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

    导入现有项目

    单击"导入现有项目".

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

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

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

    右键单击app文件夹 - >打开模块设置 - >转到依赖项选项卡 - >单击"+"按钮 - >单击"模块依赖项".

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

    添加库模块

  5. ???

  6. 利润


Vil*_*len 17

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

  1. 在settings.gradle中添加

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

    compile project ('facebook')
    
    Run Code Online (Sandbox Code Playgroud)

剩下要做的就是将项目与gradle文件同步.


小智 15

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

a)复制*.jar文件

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

在此输入图像描述

c)添加到build.gradle:

dependencies {
    ...
    compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}
Run Code Online (Sandbox Code Playgroud)

B)如果从例如com.example.MYProject和库com.example.ScanAPI你的项目有相同的命名空间com.示例,Android的工作室将检查您的构建和创建项目中的所有必要的修改.之后,您可以在菜单文件 - > 项目结构中查看这些设置.

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

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


pat*_*ran 12

选项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.+'
   }
Run Code Online (Sandbox Code Playgroud)

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

在"项目"面板中,Control单击要添加依赖项的模块,然后选择"打开模块设置".

在此输入图像描述

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

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

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

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

资源


pan*_*ear 10

这就是Android Studio 1.5+中我的工作方式

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

include ':app', ':library'
Run Code Online (Sandbox Code Playgroud)

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

编译项目(':library')

重建项目,就是这样.

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

 include ':app', ':lib1', ':lib2', ...
Run Code Online (Sandbox Code Playgroud)

在build.gradle中,您需要:

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

    // Some other dependencies...

    compile project(':lib1')
    compile project(':lib2')
    ...
}
Run Code Online (Sandbox Code Playgroud)


dre*_*n50 9

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


Cro*_*ong 8

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


Adi*_*iii 8

你可以轻松地做到这一点.转到菜单文件 - > 新建 - > 导入模块...:

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

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


Sha*_*lik 6

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

例如,给出以下结构:

我的项目/

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

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

  1. :应用程序
  2. :库:LIB1
  3. :库:LIB2

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

dependencies {
    compile project(':libraries:lib1')
}
Run Code Online (Sandbox Code Playgroud)


Dal*_*mas 5

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

No resource found that matches the given name 'Theme.Sherlock.Light'
Run Code Online (Sandbox Code Playgroud)

您的库项目可能被编译为应用程序项目.要更改此信息,请转到:

菜单文件 - > 项目结构 - > - > [库名] - >选中"库模块".


小智 5

第一种方式这适用于MacBook。

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

在此处输入图片说明

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

在此处输入图片说明

选择同步项目。

如果遇到类似“ Project with path':signature-pad'在项目':app'中找不到”的错误,请使用第二种方法:

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

在此处输入图片说明

点击导入模块后

在此处输入图片说明

给库的路径就像我的MacBook路径:

在此处输入图片说明

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


Sur*_*gch 5

安卓工作室 3.0

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

dependencies {
    // ...
    implementation 'com.example:some-library:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

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