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

(不是针对旧的基于Eclipse的ADTBundle 包,而是针对新的Android Studio.)

推荐答案

Update for Android Studio 1.0

自从Android Studio1.0发布以来(从我之前回答的时候起,在1.0版和第一个版本之间有很多版本),有些事情已经改变了.

我的描述集中在通过Gradle文件手动添加外部库项目(为了更好地理解过程).如果你想通过Android Studio Creator添加库,只需查看下面的the answer个可视化指南(Android Studio1.0和截图中的有所不同,但过程非常相似).

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

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

Adding the library

以下是向我们的项目中添加外部Android库的完整过程:

  1. 通过Android Studio Creator创建一个新项目.我把它命名为HelloWorld.
  2. 以下是Android Studio创建的原始项目 struct :
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,我们将在其中放置外部库(这一步不是必需的,只是为了保持项目 struct 更清晰).
  2. 将库粘贴到新创建的/libs文件夹中.在这个例子中,我使用了PagerSlidingTabStrip library(只需从GitHub下载ZIP,将库目录重命名为"PagerSlidingTastrip"并复制它)
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.如果像我一样使用自定义路径,还必须为我们的库定义项目目录.一整套的设置.gradle应该如下所示:

    include ':app', ':PagerSlidingTabStrip'
    project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
    

5.1如果遇到"默认配置"错误,请try 此操作,而不是第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")
    }
    

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版本和build tools版本,以保持一致性.只需编辑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同步.您的库应该在您的项目中可用.

100是关于使用Gradle Build System构建Android应用程序的精彩演示:正如Xavier Ducrohet所说:

Android Studio的全部功能是编辑、调试和评测.

一开始可能会有点困惑(尤其是那些与Eclipse打交道的人,他们从未见过像我这样的蚂蚁;),但最后Gradle给了我们一些很好的机会,值得我们学习这个构建系统.

Android相关问答推荐

在Android中点击滑动时触发的手势

无法理解Kotlin Coroutines and Flows中的J.C.编程行为

无法列出目录中的文件'

KMM项目生成错误-';在项目';中找不到测试类:共享';

如何在Reaction Native中显示Google Map iFrame?

处理Room数据库中的嵌套实体

组成底部导航栏,自定义形状,周围透明

约束布局:垂直链中的视图应将内容包裹到空间的1/3

在Jetpack Compose中将导航绘图显示在顶部栏下方、底部栏上方

未解析的引用:视图模型

SmsMessage如何在Kotlin库中工作?

如何检测低性能 Android 设备进行条件动画渲染?

从包含的(复合)模块导入 Kotlin 类时,Android 应用程序模块的 build.gradle.kts 未解决的引用错误

块不起作用,出现 "只有安全的 (?.)... " 错误

在 kotlin 中动态添加 GridView

Android apk 不工作

插入查询室 OnConflictStrategy.REPLACE

Android Studio:如何添加应用程序质量洞察窗口以查看 Android Studio 中的 Crashlytics 数据?

Android 应用程序在启动时自动启动

如何在 kotlin 的 android room DB 中设置一对多关系