kni*_*irr 3 android gradle android-studio
在向我的Android项目添加库之前,布局是这样的:
顶层build.gradle始终为空,而settings.gradle文件仅包含:
include ':Myapp'
Run Code Online (Sandbox Code Playgroud)
我获得了一个库项目,可以将其成功导入到Android Studio中,因此我认为其中的gradle文件很好。我现在有以下结构:
...并且顶级设置gradle现在看起来像:
include ':Myapp'
include ':libraries:Library'
Run Code Online (Sandbox Code Playgroud)
我还更新了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')
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,任何尝试使用gradle进行任何操作(同步文件,构建等)现在都可以使我获得以下信息:
Gradle 'MyappProject' project refresh failed:
Configuration with name 'default' not found.
Gradle settings
Run Code Online (Sandbox Code Playgroud)
设置的任何更改似乎均无效,并且Android Studio会将设置保留为“使用默认Gradle包装器”。据我了解,这意味着顶层build.gradle出现了问题,因为该文件的内容不足以构建子项目。但是,也许我误解了,因为Myapp曾经用来构建,而Library似乎也不错。删除编译项目(':libraries:Library')可以使gradle文件再次同步,但是我想使用该库...
任何有关如何解决此问题的建议都将受到欢迎。
编辑以从Library添加build.gradle。顶层:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
allprojects {
version = VERSION_NAME
group = GROUP
repositories {
mavenCentral()
}
}
Run Code Online (Sandbox Code Playgroud)
从下一个级别:
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'
Run Code Online (Sandbox Code Playgroud)
您不能在Android Studio的项目中包含项目。您只能拥有模块,因此请如下所示更改项目结构,以使其符合所允许的项目-模块级别的结构。
MyappProject
Myapp
build.gradle
libraries
LibrarySubProject1
build.gradle
....
settings.gradle
build.gradle(Root only one)
Run Code Online (Sandbox Code Playgroud)
现在对您的build.gradle文件执行以下操作
1.根build.gradle目录文件
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
repositories {
mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)
如果您在库项目的根级别build.gradle文件中包含某些内容,则也要在此根级别build.gradle文件中包含该内容,因为在编译过程中,仅允许root拥有,而根文件将自动包含在每个子级别的build.gradle文件中。
2. LibraryProject的build.gradle文件
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'
Run Code Online (Sandbox Code Playgroud)
3.您的主模块build.gradle文件应该看起来像
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
dependencies {
//YOUR MODULE DEPENDENCIES
compile project(':libraries:LibrarySubProject1')
}
Run Code Online (Sandbox Code Playgroud)
您的settings.gradle文件将像
include ':Myapp'
include ':libraries:LibrarySubProject1'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14819 次 |
| 最近记录: |