如何将库项目(例如 Sherlock ABS)添加到Android Studio?
(不是针对旧的基于 ADT Eclipse 的包,而是针对新的Android Studio。)
如何将库项目(例如 Sherlock ABS)添加到Android Studio?
(不是针对旧的基于 ADT Eclipse 的包,而是针对新的Android Studio。)
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'
}
添加库
这是将外部Android库添加到我们的项目的完整过程:
HelloWorld/ app/ - build.gradle // local Gradle configuration (for app only) ... - build.gradle // Global Gradle configuration (for whole project) - settings.gradle - gradle.properties ...
HelloWorld/
) 中,创建新文件夹:/libs
我们将在其中放置外部库(此步骤不是必需的 - 仅用于保持更清洁的项目结构)。/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 ...
通过将您的库添加到来编辑 settings.gradle include
。如果您像我一样使用自定义路径,您还必须为我们的库定义项目目录。整个 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'
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")
}
如果您的库项目没有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 中,转到Project Structure -> 在Modules下,只需点击加号按钮并选择Import Existing Project和 import actionbarsherlock
。然后同步您的 Gradle 文件。
如果你面对错误
错误:SDK 构建工具版本 (xx.xx) 太低。最低要求是 yy.yy
只需打开目录build.gradle
中的文件actionbarsherlock
并将其更新buildToolsVersion
为建议的文件。
android {
compileSdkVersion 19
buildToolsVersion 'yy.y.y'
菜单文件->项目结构...:
模块->导入模块
导入库模块后,选择你的项目模块并添加依赖:
然后选择导入的模块:
使用菜单File -> Project Structure -> Modules。
我今天开始使用它。这有点不同。
对于 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'
}
Android Studio 正在发生变化。
如果您右键单击 Android Studio 项目部分中的模块文件夹(我使用的是 0.2.10 版本),则存在一个名为“打开模块设置”的部分。
我会考虑必要的阅读依赖项、Android 库和多项目设置。请花几分钟时间这样做。
特别是,对于非 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 子模块将嵌套库链接到实际库 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 依赖项部分,添加
compile project ('facebook')
剩下要做的就是将项目与 gradle 文件同步。
一种将 JAR 文件作为库添加到 Android Studio 项目的简单方法:
a) 复制您的 *.jar 文件
b) 粘贴到项目下的libs目录中:
c) 添加到 build.gradle:
dependencies {
...
compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}
b)如果示例 com.example.MYProject 和库 com.example.ScanAPI 中的项目具有相同的命名空间 com.example,Android Studio 将检查您的构建并在您的项目中创建所有必要的更改。之后,您可以在菜单File -> Project Structure中查看这些设置。
c)如果您的项目和库有不同的命名空间,您必须右键单击库并选择“添加为库”选项并选择您需要的类型。
请记住,在当前版本的 Android Studio (0.2.3) 中,“项目结构”选项不会在“build.gradle”中进行任何自动更改。也许这个功能将在下一个版本中可用。
然后相关的 build.gradle 文件将自动更新。
打开您的 build.gradle 文件并将新的构建规则添加到依赖项闭包中。例如,如果您想添加 Google Play 服务,您的项目的依赖项部分将如下所示:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:6.5.+'
}
在“项目”面板中,Control+ 单击要添加依赖项的模块,然后选择“打开模块设置”。
选择 Dependencies 选项卡,然后选择左下角的 + 按钮。您可以从以下选项列表中进行选择:
然后,您可以输入有关要添加到项目中的依赖项的更多信息。例如,如果您选择 Library Dependency,Android Studio 会显示一个库列表供您选择。
添加依赖项后,请检查模块级 build.gradle 文件。它应该已经自动更新以包含新的依赖项。
在要添加外部库项目的项目中,转到菜单文件->新建-> *导入新模块**,导航到要添加到项目中的库项目,选择在其中添加“库”模块你的项目。您将在您的项目中获得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 一样),请确保将库项目/模块添加为“模块依赖项”而不是“库”。
不建议通过 GUI 编辑库依赖项,因为这不会将这些更改写入您的 build.gradle 文件。所以你的项目不会从命令行构建。我们应该如下直接编辑 build.gradle 文件。
例如,给定以下结构:
我的项目/
我们可以确定三个项目。Gradle 将使用以下名称引用它们:
:app 项目可能依赖于库,这是通过声明以下依赖项来完成的:
dependencies {
compile project(':libraries:lib1')
}
添加到答案中:如果 IDE 没有显示任何错误,但是当您尝试编译时,您会得到如下信息:
No resource found that matches the given name 'Theme.Sherlock.Light'
您的库项目可能被编译为应用程序项目。要更改此设置,请访问:
菜单文件->项目结构->方面-> [库名称] -> 选中“库模块”。
只需将库名称添加到应用程序的build.gradle文件的依赖项块中即可。
dependencies {
// ...
implementation 'com.example:some-library:1.0.0'
}
请注意,您应该使用implementation
而不是compile
现在。这是 Android Studio 3.0 的新功能。有关差异的解释,请参阅此问答。
导入 ABS 模块(从文件 > 项目结构)并确保它具有 Android 2.2 和支持库 v4 作为依赖项后,我仍然收到以下错误,因为你 @Alex
Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.DarkActionBar'
我将新导入的模块作为依赖项添加到我的主应用程序模块中,从而解决了问题。
要解决此问题,您只需将 abs 资源路径添加到项目构建文件中,如下所示:
sourceSets {
main {
res.srcDirs = ['src/main/res','../../ActionBarSherlock/actionbarsherlock/res']
}
}
所以,我再次编译没有任何错误。
如果您有 Android Studio .0.4.0,您可以在构建路径中创建一个新文件夹YourApp/libraries
. 复制 JAR 文件。在那里,右键单击它并“添加为库”。现在你有一个弹出窗口。只需选择您的目录并按 OK,就可以了。
https://www.dropbox.com/s/1e3eteu3h0pmkf7/Android%20studio%20_doc.doc?dl=0是如何在最新版本的 Android Studio 1.0.1 中添加 JAR 文件和库项目的 Dropbox 链接。
请参阅带有屏幕截图的文档。对于新用户来说非常容易。
只需将 Android 库项目作为模块导入Build.gradle 即可。
应用插件:'com.android.library'
之后,请按照下列步骤操作:
我找到了解决方案。就是这么简单。按照froger_mcs 的说明进行操作。
确保将 src 文件夹设为Project Structure -> Modules (Sources) 中的 Source 文件夹。
打开构建 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()
}
}
基本上,您可以通过三种不同的方式包含您的 JAR 文件。最后一个是使用https://bintray.com/ jcenter 在线存储库的远程库。但是,如果您以其他两种方式之一执行此操作,则 JAR 文件将实际包含在您的项目中。请阅读此链接https://stackoverflow.com/a/35369267/5475941了解更多信息。在这篇文章中,我解释了如何在 Android Studio 中导入您的 JAR 文件,并解释了所有可能的方法。
综上所述,如果是这样的(本地地址),就下载下来了,这些JAR文件物理在项目中:
但是,如果是这样的互联网地址,它们是远程库(bintray.com jcenter 部分),它们将被远程使用:
我希望它有所帮助。
在 Android Studio 中,进入 app 文件夹,然后打开 build.gradle 文件。在这里您将看到依赖项{}。在其中您可以添加库项目并进行同步。现在在同步库之后,它将被添加到您的项目中,您可以在项目中使用它的函数和类。
我也遇到了同样的问题,然后我做了以下事情。
我使用菜单File -> Import module menus将库项目作为模块导入我的 AndroidStudio IDE
然后我去了我的主模块,我希望库项目作为一个依赖项目
右键单击主模块(在我的情况下,它的名称是app)-> 打开模块设置-> 进入依赖项选项卡-> 单击 + 按钮(您将在窗口右侧得到它)-> 单击模块依赖项- > 从列表中选择您的图书馆项目
应用更改并单击OK按钮。
它对我有用。我希望它也能帮助其他人。
您可以使用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。
用鼠标选择主级别的项目(这是显示应用程序名称的地方)。
右键单击,然后选择菜单选项New、Folder、Assets Folder。
创建资产文件夹后,将库所需的任何 JAR 文件粘贴或复制到其中。
从 Android Studio 的主菜单(屏幕顶部)中选择File -> Project Structure。
然后选择您的项目名称并转到“依赖项”选项卡。
单击+对话框左下角的加号 ( ) 并选择文件依赖项。
最后打开最近创建的 assets 文件夹,选择你复制的 JAR 文件,然后点击 apply 和OK。
清理并重建您的项目。
将此添加到您的构建 gradle 文件中:
dependencies {
implementation 'com.jakewharton:butterknife:9.0.0'
}