18
4

6 回答 6

22

我将向您展示如何使用地图示例执行此操作。

假设您在 Android Studio 中导入了地图示例,并创建了相应的地图模块。

1.创建一个android库模块

您需要为 GMS 创建一个额外的库模块,其中包括地图示例需要从 Google API 编译您的地图模块的所有类。

图书馆项目位于:

$ANDROID_SDK/extras/google/google_play_services/libproject/google-play-services_lib

为此,请转到File->Import module并选择上述位置或库项目的位置。

然后在Create module from existing sourcesImport module from external model之间使用正确的选项。就我而言,它来自现有来源。

Android Studio 检测到 src/res 目录,到目前为止一切顺利。

它还检测库目录,这将为您节省手动导入 lib/ 中可能拥有的任何 jar(在我的情况下就像 google-play-services.jar)。

[编辑:它实际上只为您节省了一半的时间,因为它创建了库但不将它们链接到您的模块依赖项中]

2. 更新你的主模块依赖——库模块

现在,棘手的部分是您只创建了模块,而不是作为依赖项链接到您的项目。

这样做,去File-> Project structure->Modules

选择你的主模块,在我的例子中是地图,然后转到dependencies右侧的选项卡。单击+3. Module dependency

选择您的主模块所依赖的模块,然后单击确定。

3. 更新你的主模块依赖 - 罐子

现在由于无法解释的原因,我的地图模块中的活动仍然找不到 API 类。我还必须手动添加对模块配置的 google-play-services.jar 依赖项(如 2.,但选择Library而不是Module dependency);

这一点肯定可以用 gradle 自动化,但我还没有研究过。当您使用新的 IDE 时,使用的工具越少,就越容易跟踪配置错误。我建议一次只添加一个工具:)

于 2013-05-18T11:14:57.357 回答
7

以下步骤在 Android Studio 1.3.1 中对我有用

mylib1 在独立项目中。

在我需要 mylib1 的项目中

1) 编辑 settings.gradle 文件

include ':app'
include ':mylib1' ##New line
project(':mylib1').projectDir = new File('../../android_lib_repo/mylib1/app/') ##New line

其中../../android_lib_repo/mylib1是项目目录

其中../../android_lib_repo/mylib1/app/是模块目录

2) 编辑 build.gradle 文件

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'org.bouncycastle:bcprov-jdk16:1.46'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.android.support:support-v4:21.0.3'
    compile project(':mylib1') ##New line
}
于 2015-11-25T09:37:42.640 回答
2

在项目中导入“库”模块后(据我所知,您的工作区是项目,项目是 intellij / Android studio 中的模块),

  1. 前往File -> Project structure -> Modulesselect the project and hit F4.-> Modules
  2. 选择您的“库”模块(在中间列中)并单击依赖项选项卡(在最右边的列中)
  3. 单击模块名称前的复选框(导出)。(核实)
  4. 现在,选择“您的”模块并单击左侧窗格中的 + 号并选择“3. Module Dependencies...”,选择您的“库”项目并单击“确定”。
  5. 现在编译你的模块。

如果您仍然在项目中看到错误说无法从“库”项目中找到类,请确保选中“库”模块依赖项中模块前面的“导出”复选框。希望有帮助:)

于 2013-05-22T03:53:04.360 回答
1

不建议通过 GUI 编辑库依赖项,因为这不会将这些更改写入您的 build.gradle 文件。所以你的项目不会从命令行构建。我们应该如下直接编辑 build.gradle 文件。

例如,给定以下结构:

我的项目/

  • 应用程序/
  • 图书馆/
    • lib1/
    • lib2/

我们可以确定 3 个项目。Gradle 将使用以下名称引用它们:

  1. :应用程序
  2. :图书馆:lib1
  3. :图书馆:lib2

:app 项目可能依赖于库,这是通过声明以下依赖项来完成的:

dependencies {
    compile project(':libraries:lib1')
}
于 2013-05-23T12:14:32.267 回答
1

如果您使用的是在 Studio 中创建的项目或从 ADT 导出到 Gradle 的项目,则需要编辑 build.gradle 以更改依赖项。Project Structure 对话框中的 UI 仅影响 IDE 中的依赖项,但将使用 Gradle,它不会设置依赖项。

编辑 build.gradle 将使 Studio 重新加载它并更新两个地方的依赖关系。

有关依赖项和多模块设置的更多信息(如果您还添加一个模块作为依赖项),请阅读http://tools.android.com/tech-docs/new-build-system/user-guide #TOC-Dependencies-Android-Libraries-and-Multi-project-setup

于 2013-05-22T04:17:27.223 回答
1

对于任何可能只是发现这个的人。如果您需要访问库项目的资源(就像使用 ABS 一样),请确保将库项目/模块添加为“模块依赖项”而不是“库”。

于 2013-05-19T01:11:00.233 回答