21

有没有人想出/发现 Android 库是如何在 Android Studio 中工作的?

我还没有找到任何关于这方面的文档(Android 开发者网站上的文档非常简陋),我观察到根据我创建库项目的方式,我会得到完全不同的结果。

如果我从 Eclipse 导入一个库(按照网站上的建议首先导出到 Gradle),我最终会得到一个包含库项目的新项目 + 模块。这似乎不太正确(一个 intellij 项目 = eclipse 工作区),并且尝试在 intellij 中编译/制作它会导致许多错误(库项目找不到 android 支持库)。

如果我使用库模块从头开始创建一个新项目,那么我将获得一个带有 build.gradle 文件的 android 库项目。

如果我从项目中创建一个新模块(使用右键单击项目),那么我会得到一个使用 Ant 构建的 Android 库。这编译得很好,但看起来很奇怪。当然,我们不应该在 android Studio 中将 Ant 用于 Android 库吗?顺便说一句,使用 File > New Module 创建一个新的库模块似乎不起作用。它只是创建一个新的应用程序。

有没有人收集到任何信息来理解这一点?我还没有找到可以指定哪些库应该在哪些应用程序模块中使用的任何位置。我知道这是一个预览版,但我很难相信像 Android 库这样的核心功能得到如此糟糕的支持。我错过了什么?

2014 年 4 月 9 日更新:

所以这周我对 Android Studio 进行了新一轮的测试。虽然现在的问题与我最初写这篇文章时不同,但这 - 非常令人难以置信 - 仍然是一个大问题。我仍然没有找到在 AS 的多个项目中使用 Android 库的很好解释(包括嵌套库)。我看到的一些建议建议将代码复制到多个位置——这完全违背了拥有一个库的目的。

我只是不明白谷歌对 Android Studio 的想法......很遗憾,因为它看起来是一个很棒的工具,但是缺乏直观的处理像代码重用这样基本的东西对我来说是一个大问题(没关系与不断改进的跨平台开发工具相比,专门为 Android 编写的代码变得越来越没有吸引力)。

4

6 回答 6

12

如果您想在Android Studio项目中使用其他库:

  1. 将 .jar 库复制到项目中的 libs 文件夹中
  2. 右键单击库并选择“添加为库”
  3. build.gradle替换

    编译文件('libs/android-support-v4.jar')

compile fileTree(dir: 'libs', include: '*.jar')

如果它仍然不起作用,请使用我们的终端导航到项目的根文件夹并运行gradlew clean命令。

于 2013-05-24T10:19:33.220 回答
2

Intellij 与 Eclipse 不同,因为您的“工作区”仅用于一个“项目”。每个项目由多个模块组成。这些模块本身可以是自己的“项目/应用程序/库”。

所以模块有点像 Eclipse 项目。

转到:文件->项目结构->模块

并将 Android 库添加为模块,您可以声明它在 Android 库中,并使其成为您的“项目”(应用程序模块)的依赖项。

于 2013-05-17T19:27:13.720 回答
1

我认为多项目设置是您正在寻找的。一开始我不会过多关注 Android Studio 的东西。专注于正确获取 gradle 文件,然后“同步”模块以更新 Android Studio。(我有时不得不重新启动它,以便“构建变体”部分更新新口味。)

@Xav 在Google+ 回复中建议如下:

如果您想稍后添加新模块(库项目),则可以使用高级项目。第一次创建一个带有单个模块的顶级项目比创建一个平面项目,然后在添加模块时转换它更容易。</p>

需要指出的两件事,在您的 settings.gradle 文件中,您将列出 :app 和 :library 模块;'android' 插件也用于应用程序,但 'android-library' 插件应该用于库模块。

如果您能够从命令行进行 ./gradlew assemble,那么 Android Studio 应该会在您下次打开项目或同步时使用正确的设置进行更新。

于 2013-05-21T07:55:38.760 回答
0

此刻,您需要将build.gradle文件配置为在 Android Studio 中使用 jar,否则您最终会NoClassDefException在运行时遇到可怕的情况。有关使 jar 库正常工作的一些提示,请参阅我的答案。您还可以将 Maven 依赖项直接定义build.gradle为非常方便的。

于 2013-05-30T19:20:40.107 回答
0

为了任何人都能解决这个问题,这就是我正在做的“解决”这个问题。它与一个优雅的解决方案 IMO 相去甚远,但它最接近我在使用 Git 的 Android Studio 中处理我的问题(重用 Android 库)时找到的一个好的解决方案。

基本思想是使用 Git 子模块。每个库都有自己的 Git 存储库。

  1. 将 myLibrary 创建为模块,然后将其提交到存储库。
  2. 从项目根存储库中,我做了一个git submodule add来获取库。
  3. 在 settings.gradle 中,我添加:include ':myLibrary'并同步项目。
  4. Module Settings >> Dependencies >> + Module Dependency 并根据需要向模块添加依赖项。

这与在 Eclipse 中使用 Android 库的简单优雅相去甚远,但它的工作方式很流行。要记住的事情:

  • 记得经常 git pull 以获取更改(然后提交主项目以与子模块更改同步)。
  • 如果您已经提交了对库的更改,请记住从模块目录 git push 到远程。

内置的 VCS 应该能够在这里提供帮助,但对我来说这很不稳定,所以我现在更喜欢自己从终端上做。

希望这可以帮助。

于 2015-01-31T21:26:47.853 回答
0

将 android 库附加到 android studio。如果您对库有任何想法,请直接添加例如。

(这是毕加索图书馆)

compile 'com.squareup.picasso:picasso:2.3.2'

如果您想创建我们自己的库,请按照以下步骤操作。

  1. 点击文件菜单
  2. 选择新模块并选择 Android 库。

  3. 声明库名称和包名称。

现在终于创建了您的库,您可以轻松使用。

  1. 单击文件,然后单击项目结构
  2. 单击小窗口内的依赖项选项卡,然后单击绿色加号按钮。

  3. 并选择 Module dependency 你可以看到你的库文件。

  4. 选择库并确定

于 2015-11-09T09:00:44.807 回答