我正在尝试将自己的库导入到Android Studio中的某个应用中。我在几个地方看到的说明基本上相当于:
1 将文件移动到项目组合中的库文件夹中
2 将include '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 sync已正确完成,但我还没有准备好运行该项目。 所以我做了一个测试项目并使用相同的步骤导入了库。 这次我收到错误:
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')
}
这里是Tester项目中文件结构的screenshot。
答案 0 :(得分:1)
每个项目只能有一个 settings.gradle 文件,所以如果你有一个带有自己的 settings.gradle 的多模块库,你就无法带来它只有一个include
语句。您需要将库的 settings.gradle 合并到您包含它的项目中。
进行合并时,请确保合并 settings.gradle 中的所有include
语句都有合理的路径,这些路径将相对于项目根目录定位其库。另请注意, settings.gradle 文件中指定的路径必须与dependencies
块中的路径相匹配。所以如果你有这个:
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
。如果这是你的构建脚本中的拼写错误而不仅仅是你问题中的拼写错误,那将是一个问题。