Can';添加库后,不要使用gradle编译Android项目
在将库添加到我的Android项目之前,布局如下:Can';添加库后,不要使用gradle编译Android项目,android,gradle,android-studio,Android,Gradle,Android Studio,在将库添加到我的Android项目之前,布局如下: MyappProject Myapp 格雷德尔先生 格雷德尔酒店 格雷德尔先生 顶层build.gradle始终为空,settings.gradle文件仅包含: include ':Myapp' 我获得了一个库项目,我能够成功地将其导入Android Studio,因此我认为其中的gradle文件是好的。我现在有以下结构: Library LibrarySubProject1 build.gradle
- MyappProject
- Myapp
- 格雷德尔先生
- Myapp
- 格雷德尔酒店
- 格雷德尔先生
include ':Myapp'
我获得了一个库项目,我能够成功地将其导入Android Studio,因此我认为其中的gradle文件是好的。我现在有以下结构:
Library
LibrarySubProject1
build.gradle
....
build.gradle
- MyappProject
- Myapp
- 格雷德尔先生
- 图书馆
- 图书馆
- 图书馆子项目1
- 格雷德尔先生
- 格雷德尔先生
- 图书馆子项目1
- 图书馆
- Myapp
- 格雷德尔酒店
- 格雷德尔先生
include ':Myapp'
include ':libraries:Library'
我还更新了Myapp的build.gradle,以便在依赖项中包含额外的最后一行:
dependencies {
compile 'com.android.support:support-v4:+'
compile files('libs/commons-lang3-3.1.jar')
compile files('libs/jsoup-1.7.3.jar')
compile project(':libraries:Library')
}
不幸的是,任何试图对gradle(同步文件、构建等)进行任何操作的尝试现在都会让我产生以下问题:
Gradle 'MyappProject' project refresh failed:
Configuration with name 'default' not found.
Gradle settings
对设置的任何更改似乎都没有效果,androidstudio将设置保持为“使用默认的gradle包装器”。
据我所知,这意味着顶级build.gradle在这个文件中存在一个问题,它没有包含足够的信息来构建子项目。但是,也许我误解了,因为我的应用程序用于构建和库似乎也很好。删除编译项目(“:libraries:Library”)允许再次同步gradle文件,但我想使用该库
欢迎就如何解决这一问题提出任何建议
编辑以从库中添加build.gradle。顶级:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
allprojects {
version = VERSION_NAME
group = GROUP
repositories {
mavenCentral()
}
}
从下一个层面:
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
您的库具有多模块生成文件结构:
Library
LibrarySubProject1
build.gradle
....
build.gradle
使用像Android Studio这样的两级build.gradle文件结构,项目已经实现了,但这不适用于库。MyApp正在拉入:libraries:Library的依赖项,但只看到带有buildscript
和allprojects
标记的顶级构建文件,并且在其中找不到可依赖的默认配置
您的库不能有settings.gradle文件来引导到LibrarySubProject1/build.gradle。您需要将库向上移动一个目录级别到库,并将两个build.gradle文件向下折叠到一个目录级别:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
repositories {
mavenCentral()
}
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
我不知道如何处理顶级build.gradle中的
版本
和组
内容;你必须弄清楚这一点。你不能在Android Studio的项目中拥有项目。您只能使用模块,以便按如下所示更改项目结构,使其符合允许的项目-模块级结构
MyappProject
Myapp
build.gradle
libraries
LibrarySubProject1
build.gradle
....
settings.gradle
build.gradle(Root only one)
现在对build.gradle文件执行以下操作
1。根级别build.gradle
file
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
repositories {
mavenCentral()
}
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
dependencies {
//YOUR MODULE DEPENDENCIES
compile project(':libraries:LibrarySubProject1')
}
include ':Myapp'
include ':libraries:LibrarySubProject1'
如果在库项目的根级别build.gradle文件中有某些内容,请将其也包含在此根级别build.gradle文件中,因为只有根级别才允许有这些内容,编译时这些内容将自动包含在每个子级别的build.gradle文件中
2。LibraryProject的build.gradle
文件
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
repositories {
mavenCentral()
}
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
dependencies {
//YOUR MODULE DEPENDENCIES
compile project(':libraries:LibrarySubProject1')
}
include ':Myapp'
include ':libraries:LibrarySubProject1'
3。您的主模块的build.gradle
文件应该如下所示
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
repositories {
mavenCentral()
}
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
dependencies {
//YOUR MODULE DEPENDENCIES
compile project(':libraries:LibrarySubProject1')
}
include ':Myapp'
include ':libraries:LibrarySubProject1'
您的设置。gradle
文件将类似于
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
repositories {
mavenCentral()
}
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
dependencies {
//YOUR MODULE DEPENDENCIES
compile project(':libraries:LibrarySubProject1')
}
include ':Myapp'
include ':libraries:LibrarySubProject1'
在我的例子中,通过删除包含
maven_push.gradle
此行试图将项目上载到maven,而我不需要。听起来像
:库:库不(隐式或显式)声明默认配置,在这种情况下,无法使用项目依赖项引用它。谢谢。我一直在浏览gradle文档,但不清楚如何声明配置。请您指出我应该阅读的内容,好吗?您能展示一下您的build.gradle库项目吗?我已根据要求添加了一些build.gradle文件。您不必手动声明默认
配置;android库
插件可能会解决这个问题。我不知道这个插件如何工作的细节,但是你应该能够在研究官方的Gradle Android插件文档之后找到一个解决方案,该文档包含了很多关于项目依赖性等方面的信息。