如何将库项目(例如 Sherlock ABS)添加到 Android Studio?
(不是针对旧的基于 ADT Eclipse 的捆绑包,而是针对新的 Android Studio。)
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库添加到我们的项目的完整过程:
通过 Android Studio 创建者创建一个新项目。我把它命名为HelloWorld。以下是 Android Studio 创建的原始项目结构:
HelloWorld/ app/ - build.gradle // 本地 Gradle 配置(仅适用于应用程序)... - build.gradle // 全局 Gradle 配置(适用于整个项目) - settings.gradle - gradle.properties ...
在根目录 (HelloWorld/) 中,创建新文件夹:/libs,我们将在其中放置外部库(此步骤不是必需的 - 仅用于保持更清晰的项目结构)。将您的库粘贴到新创建的 /libs 文件夹中。在这个例子中,我使用了 PagerSlidingTabStrip 库(只需从 GitHub 下载 ZIP,将库目录重命名为“PagerSlidingTabStrip”并复制它)。这是我们项目的新结构:
HelloWorld/ app/ - build.gradle // 本地 Gradle 配置(仅适用于应用程序)... libs/ PagerSlidingTabStrip/ - build.gradle // 本地 Gradle 配置(仅适用于库) - build.gradle // 全局 Gradle 配置(适用于整个项目) - settings.gradle - gradle.properties ...
通过添加要包含的库来编辑 settings.gradle。如果您像我一样使用自定义路径,您还必须为我们的库定义项目目录。整个 settings.gradle 应该如下所示: include ':app', ':PagerSlidingTabStrip' project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
5.1 如果您遇到“默认配置”错误,请尝试此操作而不是第 5 步,
include ':app'
include ':libs:PagerSlidingTabStrip'
在 app/build.gradle 添加我们的库项目作为依赖项: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3 ' 编译项目(":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")
}
如果您的库项目没有 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'] } } } 此外,您可以为您的项目创建一个包含 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)只需单击“将项目与 Gradle”图标同步。您的库应该在您的项目中可用。
Google I/O 2013 - The New Android SDK Build System 是关于使用 Gradle 构建系统构建 Android 应用程序的精彩演示:正如 Xavier Ducrohet 所说:
Android Studio 是关于编辑、调试和分析的。这不再是关于建造。
一开始它可能有点令人困惑(特别是对于那些使用 Eclipse 并且从未见过蚂蚁的人 - 像我一样 ;)),但最后 Gradle 为我们提供了一些很好的机会,值得学习这个构建系统。
这是视觉指南:
Android Studio 0.8.2 更新:
在 Android Studio 0.8.2 中,转到 项目结构 ->在 Modules 下,只需点击加号按钮并选择 Import Existing Project 并导入 actionbarsherlock
。然后同步您的 Gradle 文件。
如果你面对错误
错误:SDK 构建工具版本 (xx.xx) 太低。最低要求是 yy.yy
只需打开 actionbarsherlock
目录中的 build.gradle
文件并将 buildToolsVersion
更新为建议的文件。
android {
compileSdkVersion 19
buildToolsVersion 'yy.y.y'
https://i.stack.imgur.com/3AlS8.jpg
菜单文件 -> 项目结构...:
https://i.stack.imgur.com/Yn3zX.png
模块 -> 导入模块
https://i.stack.imgur.com/9Efdc.png
导入库模块后,选择你的项目模块并添加依赖:
https://i.stack.imgur.com/ISmOJ.png
然后选择导入的模块:
https://i.stack.imgur.com/JW0yA.png
Select your project module and add dependency
dependencies { // ... compile project(':library') }
使用菜单文件 -> 项目结构 -> 模块。
我今天开始使用它。这有点不同。
对于 Sherlock,也许您想删除他们的测试目录,或者将 junit.jar
文件添加到类路径中。
要使用 gradle 导入库,您必须将其添加到 build.gradle
的 dependencies
部分(模块的部分)。
例如
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.0'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}
Android Studio 正在发生变化。
如果您右键单击 Android Studio 项目部分中的模块文件夹(我使用的是 0.2.10 版本),则存在一个名为“打开模块设置”的部分。
Project Structure
窗口中没有 Modules
部分。
我会考虑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 以避免依赖性混乱。
我刚刚找到了一种更简单的方法(而不是直接写入 .gradle 文件)。
这适用于 Android Studio 1.1.0。
菜单文件 -> 新模块...:单击“导入现有项目”。选择所需的库和所需的模块。点击完成。 Android Studio 会将库导入到您的项目中。它将同步 gradle 文件。将导入的模块添加到项目的依赖项中。右键单击应用程序文件夹 -> 打开模块设置 -> 转到依赖项选项卡 -> 单击“+”按钮 -> 单击模块依赖项。然后将库模块添加到项目的依赖项中。 ???利润
我发现包含外部库项目的最简单方法是(例如,包含一个 Facebook 库,该库存储在依赖项文件夹中的一个目录中):
在 settings.gradle 添加 include ':facebook' project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK') 在 build.gradle 依赖项部分,添加编译项目 ('facebook')
剩下要做的就是将项目与 gradle 文件同步。
一种将 JAR 文件作为库添加到 Android Studio 项目的简单方法:
a) 复制您的 *.jar 文件
b) 粘贴到项目下的 libs 目录中:
https://i.stack.imgur.com/zivBn.png
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”中进行任何自动更改。也许这个功能将在下一个版本中可用。
选项 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 并单击要添加依赖项的模块,然后选择“打开模块设置”。
https://i.stack.imgur.com/rA6un.png
选择 Dependencies 选项卡,然后选择左下角的 + 按钮。您可以从以下选项列表中进行选择:
库依赖
文件依赖
模块依赖
然后,您可以输入有关要添加到项目中的依赖项的更多信息。例如,如果您选择 Library Dependency,Android Studio 会显示一个库列表供您选择。
添加依赖项后,请检查模块级 build.gradle 文件。它应该已经自动更新以包含新的依赖项。
你可以很容易地做到这一点。转到菜单文件 -> 新建 -> 导入模块...:
https://i.stack.imgur.com/RgXiV.png
浏览包含该模块的目录。点击完成:
https://i.stack.imgur.com/vNKs8.png
转到项目结构并添加模块依赖项:
https://i.stack.imgur.com/kex4j.png
注意:如果您收到 SDK 错误,请更新该错误。
这就是我在 Android Studio 1.5+ 中的工作方式
在要添加外部库项目的项目中,转到菜单文件 -> 新建 -> *导入新模块**,导航到要添加到项目中的库项目,选择在其中添加“库”模块你的项目。您将在您的项目中获得 settings.gradle,在应用程序旁边,包含库,如下所示:
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')
...
}
如果您需要访问库项目的资源(就像使用 ABS 一样),请确保将库项目/模块添加为“模块依赖项”而不是“库”。
按 F4 显示项目结构,单击库或全局库,然后单击 + 添加 JAR 文件。单击 Modules what you want 添加 jar,选择 Dependencies 选项卡,单击 +,然后添加 Library。
不建议通过 GUI 编辑库依赖项,因为这不会将这些更改写入您的 build.gradle 文件。所以你的项目不会从命令行构建。我们应该如下直接编辑 build.gradle 文件。
例如,给定以下结构:
我的项目/
应用程序/
库/lib1/lib2/
lib1/
lib2/
我们可以确定三个项目。 Gradle 将使用以下名称引用它们:
:app :libraries:lib1 :libraries:lib2
:app 项目可能依赖于库,这是通过声明以下依赖项来完成的:
dependencies {
compile project(':libraries:lib1')
}
添加到答案中:如果 IDE 没有显示任何错误,但是当您尝试编译时,您会得到如下信息:
No resource found that matches the given name 'Theme.Sherlock.Light'
您的库项目可能被编译为应用程序项目。要更改此设置,请访问:
菜单文件 -> 项目结构 -> 方面 -> [库名称] -> 选中“库模块”。
第一种方式这适用于 MacBook。
首先选择您的 builder.gradle 文件作为给定屏幕:
https://i.stack.imgur.com/TMDxK.png
添加依赖项,如在所选屏幕上:
https://i.stack.imgur.com/kziuA.png
选择同步项目。
如果您收到类似“Project with path':signature-pad' cannot be found in project ':app'”之类的错误,请使用第二种方法:
选择菜单文件 -> 新建 -> 导入模块...:
https://i.stack.imgur.com/gt7ZE.png
点击导入模块后,
https://i.stack.imgur.com/DoOzo.png
给出库的路径,就像我的 MacBook 路径一样:
https://i.stack.imgur.com/cyouV.png
单击完成。现在您的库已添加。
导入 ABS 模块(从文件 > 项目结构)并确保它具有 Android 2.2 和支持库 v4 作为依赖项后,我仍然收到以下错误,因为你 @Alex
Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.DarkActionBar'
我将新导入的模块作为依赖项添加到我的主应用程序模块中,从而解决了问题。
Gradle: Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light'.
。我的主项目似乎没有看到库项目(ABS)的资源。但是,IDE 确实可以识别对类和资源的引用。 Screenshot
安卓工作室 3.0
只需将库名称添加到应用程序的 build.gradle 文件的依赖项块中即可。
dependencies {
// ...
implementation 'com.example:some-library:1.0.0'
}
请注意,您现在应该使用 implementation
而不是 compile
。这是 Android Studio 3.0 的新功能。有关差异的说明,请参见 this Q&A。
com.android.tools.build:gradle:2.3.3
而不是 Android Studio 3 中的 3.0.0。
要解决此问题,您只需将 abs 资源路径添加到项目构建文件中,如下所示:
sourceSets {
main {
res.srcDirs = ['src/main/res','../../ActionBarSherlock/actionbarsherlock/res']
}
}
所以,我再次编译没有任何错误。
如果您有 Android Studio .0.4.0,则可以在构建路径 YourApp/libraries
中创建一个新文件夹。复制 JAR 文件。在那里,右键单击它并“添加为库”。现在你有一个弹出窗口。只需选择您的目录并按 OK,就可以了。
只需将 Android 库项目作为模块导入到 Build.gradle 中。
应用插件:'com.android.library'
之后,请按照下列步骤操作:
右键Module & 选择open Module settings 选择依赖项,点击+,选择库依赖项,添加之前导入的模块。
https://www.dropbox.com/s/1e3eteu3h0pmkf7/Android%20studio%20_doc.doc?dl=0 是如何在最新版本的 Android Studio 1.0.1 中添加 JAR 文件和库项目的 Dropbox 链接。
请参阅带有屏幕截图的文档。对于新用户来说非常容易。
我找到了解决方案。就是这么简单。关注froger_mcs instructions。
确保将 src 文件夹设为 Project Structure -> Modules (Sources) 中的 Source 文件夹。
https://i.stack.imgur.com/k9Cmv.png
基本上,您可以通过三种不同的方式包含您的 JAR 文件。最后一个是使用 https://bintray.com/ jcenter 在线存储库的远程库。但是,如果您以其他两种方式之一执行此操作,则 JAR 文件将实际包含在您的项目中。请阅读此链接 https://stackoverflow.com/a/35369267/5475941 了解更多信息。在这篇文章中,我解释了如何在 Android Studio 中导入您的 JAR 文件,并解释了所有可能的方法。
综上所述,如果是这样的(本地地址),就下载下来了,这些JAR文件物理在项目中:
https://i.stack.imgur.com/gAnu8.jpg
但是,如果是这样的互联网地址,它们是远程库(bintray.com jcenter 部分),它们将被远程使用:
https://i.stack.imgur.com/pfZ06.jpg
我希望它有所帮助。
打开构建 gradle 模块应用程序文件并添加您的依赖项。如果您下载库,只需导入并构建为 gradle。
否则在侧 gradle 模块应用程序中添加存储库:
repositories {
maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}
第一个存储库将为您下载库。
并编译下载的库:
compile ('com.fortysevendeg.swipelistview:swipelistview:1.0-SNAPSHOT@aar') {
transitive = true
}
如果您正在创建一个库,您只需要将项目作为导入新模块导入。
我有不同的问题原因,所以对于人们来说:
repositories {
mavenCentral()
}
将 mavenCentral() 更改为 jcenter() 并添加
allprojects {
repositories {
jcenter()
}
}
在 Android Studio 中,进入 app 文件夹,然后打开 build.gradle 文件。在这里您将看到依赖项{}。在其中您可以添加库项目并进行同步。现在在同步库之后,它将被添加到您的项目中,您可以在项目中使用它的函数和类。
对于 Android 工作室:
https://i.stack.imgur.com/8M5gk.png
点击 Build.gradle(模块:app)。
并添加
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/commons-io-2.4.jar')
}
并在您的目录“app”中,创建一个目录“libs”。添加文件 yourfile.jar:
https://i.stack.imgur.com/mDyVc.png
最后,编译 Gradle 文件:
https://i.stack.imgur.com/RFVtx.png
我也遇到了同样的问题,然后我做了以下事情。
我使用菜单 File -> Import module menus 将库项目作为模块导入到我的 AndroidStudio IDE 然后我转到我的主模块,我希望在其中将库项目作为依赖项目右键单击主模块(在我的情况下它的名称是应用程序)->打开模块设置->进入依赖项选项卡->单击+按钮(您将在窗口右侧获得它)->单击模块依赖项->从列表中选择您的库项目
应用更改并单击确定按钮。
它对我有用。我希望它也能帮助其他人。
您可以使用 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'
}
事实上,随着版本的变化,用户界面和菜单上可用的选项也在变化。在阅读了这些问题的大部分答案后,我不得不猜测什么适用于 Android Studio 1.1.0。
用鼠标选择主级别的项目(这是显示应用程序名称的地方)。右键单击,然后选择菜单选项新建、文件夹、资产文件夹。创建资产文件夹后,将库所需的任何 JAR 文件粘贴或复制到其中。从 Android Studio 的主菜单(屏幕顶部)选择 File -> Project Structure。然后选择您的项目名称并转到“依赖项”选项卡。单击对话框左下角的加号 (+) 并选择文件依赖项。最后打开最近创建的 assets 文件夹,选择你复制的 JAR 文件,然后点击 apply 和 OK。
清理并重建您的项目。
不定期副业成功案例分享
Global libraries
在哪里(#10:“现在去全球图书馆”)?除此之外,它按描述工作:) 非常感谢。 (我希望谷歌能认真对待——这样一个简单的任务目前复杂得令人抓狂)