【问题标题】:Android Libraries in Android StudioAndroid Studio 中的 Android 库
【发布时间】:2013-05-11 09:39:52
【问题描述】:

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

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

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

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

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

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

2014 年 4 月 9 日更新:

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

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

【问题讨论】:

  • 文件->项目结构->模块->依赖
  • 好的,Gradle 插件用户指南 (tools.android.com/tech-docs/new-build-system/user-guide) 包含一些关于 Android Studio 预期用途的有用点,尽管它仍然没有解释应该如何使用 AS,例如,每个项目1个应用程序,每个项目多个应用程序,iml文件的放置位置(不同的向导以不同的方式进行)等:/
  • 我没有使用Gradle,只是将模块导入项目,而不是添加库和自定义依赖项
  • ADK 的评论对我有用:文件->项目结构->模块->依赖项(然后单击错误,这些将展开它们,在每个错误旁边,将鼠标悬停在第一个小图标上,“修复' 将在您悬停时出现在工具提示中,右键单击“修复”图标,然后执行“添加到依赖项...”)
  • 对此有任何跟进吗?几乎是 2015 年 2 月,如果不将我的 AS 项目中的整个内容复制为子模块,我似乎仍然无法链接到外部模块。有些帖子建议在 settings.gradle 文件中声明你的外部项目,然后在 build.grade 中添加它,但它对我不起作用。

标签: android intellij-idea android-studio


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 感谢您的回答。不过,我看到的问题与 Android 库(我使用了很多)有关。
  • 就我而言,我不需要右键单击库并选择“添加为库”。如果我这样做了,我将不得不删除此单击添加的行:编译文件('libs/xxx.jar')。 "compile fileTree(dir: 'libs', include: '*.jar')" 负责 libs 中的所有 jars。
【解决方案2】:

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

所以模块有点像 Eclipse 项目。

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

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

【讨论】:

  • 我也遇到了同样的问题,这让我非常沮丧——也许你可以帮忙。我已经以我能想到的任何可能的方式将 jars 添加为库和依赖项 - 我能得到的最远的结果是让库与应用程序一起编译,但我仍然得到“NoClassDefFoundError”异常......这是我的库设置看起来像:i.imgur.com/hbuzeA1.pngi.imgur.com/O6J3kDn.png
  • 如果你想使用 Android 库,你不应该使用 JAR
  • 好的,“库”可以是 jar,但“Android 库”不是 jar。请使用正确的术语
  • 谢谢。不过,我知道这一点,但它仍然无法正常工作。我怀疑这与 Gradle 设置/设置有关,尽管查看 Android 构建系统文档和自动生成的代码,我没有发现任何明显的错误。
  • 另外,我不会像上面 ADK 建议的那样在 Android Studio 中使用 Ant。迁移到 Android Studio 而不迁移到 Gradle(这将是未来的“官方”构建系统)对我来说似乎毫无意义。
【解决方案3】:

Multi Project Setup 是我想你要找的。一开始我不会过多关注 Android Studio 的东西。专注于正确获取 gradle 文件,然后“同步”模块以更新 Android Studio。 (我有时不得不重新启动它,以便“构建变体”部分更新新的风格。)

@Xav 在Google+ response 中提出以下建议:

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

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

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

【讨论】:

  • 谢谢。我还没有时间研究这个(时间有限),但我会研究首先导入顶级项目而不是低级项目(这是我采取的方向)是否更好。我有点认为让简单的东西工作起来比从一开始就尝试导入具有多个子库的项目更容易。
【解决方案4】:

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

【讨论】:

  • 谢谢,但问题不在于外部 ja 库 - 它与 Android 库有关。但是,问题似乎出在 Android Studio 中 - 最新版本据说对这些问题进行了一些修复(尽管我还没有检查过),而且还会有更多。
【解决方案5】:

为了方便任何人解决这个问题,我正在采取以下措施来“解决”这个问题。它与 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 应该可以在这里提供帮助,但它对我来说非常不稳定,所以我现在更喜欢自己在终端上做。

希望这会有所帮助。

【讨论】:

    【解决方案6】:

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

    (这是毕加索图书馆)

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

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

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

    3. 声明库名和包名。

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

    1. 点击File,然后点击Project Structure
    2. 点击小窗口内的Dependencies选项卡,然后点击绿色加号按钮。

    3. 然后选择Module dependency就可以看到你的库文件了。

    4. 选择库并ok

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 2016-01-19
      相关资源
      最近更新 更多