java - 包括整个项目作为库 android studio

标签 java android import android-studio project

我正在尝试将我自己的库导入到 Android Studio 中的一个应用程序中。我在几个地方看到了基本上相当于:

1 将文件移动到项目目录中的库文件夹中。
2include 'projectName:folderName:libraryName 添加到您的 settings.gradle 文件
3 将依赖项下的 compile project('folderName:libraryName') 添加到项目级 build.gradle 文件

如果我要导入一个模块,这对我有用...我认为它是一个模块。我仍在尝试弄清楚 gradle。我的库结构如下所示:

ProjectName
    Module1
        Classes
    Module2
        Classes2

如果我以这种方式单独导入 Module1 或 Module2(其中 Module1 是上面说明中我的“libraryName”),它们将起作用。但如果我尝试将整个项目作为一个库导入,则会出现错误。

我做错了什么? 我想导入整个项目,因为我希望它有许多模块。还有另一种/更好的方法吗?我有什么误解吗?

更新:
根据 @ScottBarta 的说明,我合并了 settings.gradle 文件。 这似乎在我的主项目中有效,因为 gradle 同步已正确完成,但我还没有准备好运行该项目。 所以我创建了一个测试项目并使用相同的步骤导入了库。 这次我收到错误:

Gradle 'Tester' project refresh failed:
Build script error, unsupported Gradle DSL method found. 'compile()'!

据我所知,这两个项目中的文件是等效的:

主要:

include ':Eed'
include ':Eed:libraries:Overt:Visible'
include ':Eed:libraries:Overt:Control'

测试:

include ':app'
include ':app:libraries:Overt:Visible'
include ':app:libraries:Overt:Control'

主要:

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project('libraries:Overt:Visible')
    compile project('libraries:Overt:Control')
}

测试

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    complie project('libraries:Overt:Visible')
    complie project('libraries:Overt:Control')

}

这是一个 screenshot Tester 项目中的文件结构。 enter image description here

最佳答案

每个项目只能有一个 settings.gradle 文件,因此如果您有一个带有自己的 settings.gradle 的多模块库,则不能将它包含在一个 include 语句中。您需要将库的 settings.gradle 合并到您要包含它的项目中。

进行合并时,请确保合并的 settings.gradle 中的所有 include 语句都具有合理的路径,可以相对于项目根目录定位其库。另请记住,settings.gradle 文件中指定的路径必须与 dependency block 中的路径匹配。所以如果你有这个:

include ':app'
include ':app:libraries:Overt:Visible'
include ':app:libraries:Overt:Control'

你需要这个:

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':app:libraries:Overt:Visible')
    compile project(':app:libraries:Overt:Control')
}

在您在问题中发布的构建脚本中,存在一个拼写错误:它显示的是 complie 而不是 compile。如果这是您的构建脚本中的拼写错误,而不仅仅是您的问题中的拼写错误,那么这将是一个问题。

关于java - 包括整个项目作为库 android studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23236493/

相关文章:

ios - 导入 swift iOS 项目到另一个项目

java - 客户端/服务器套接字与 Applet 的 Windows/Linux 问题

android - 在包 'widgetCategory' 中找不到属性 'android' 的资源标识符

android - 何时在 DialogFragment 中使用 DatePickerDialog 而不是 DatePicker?

c++ - 在C++中使用delphi库

excel - 如何以编程方式向场景添加上下文引用

java - 在 Java 中使用 SQLite 需要什么?

java - 即使设置了路径变量,SonarQube 也不会在 Windows 上启动

Java StreamTokenizer 在 @ 符号处拆分电子邮件地址

android - 列表适配器中未调用 DiffCallback