Android Gradle将外部库和嵌套外部库添加到项目中

 vivianchen1988 发布于 2023-02-05 10:14

如何将外部库和嵌套外部库添加到android项目?


我的项目结构(不允许更改)

应用/

应用1 /

的build.gradle

settings.gradle

库/

LIBRARY1 /

build.grade

settings.gradle

library2 /

build.grade

settings.gradle

library3 /

build.grade

settings.gradle

library4 /

build.grade

settings.gradle


APP1

应用1 /的build.gradle

buildscript {
    ...
}

apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':..:libraries:library1')
    compile project(':..:libraries:library2')
    compile project(':..:libraries:library3')
    compile project(':..:libraries:library4')
}

android {
    ...
}

APP1并不直接依赖于library3library4,但是,它会抱怨,如果我不包括他们在在依赖build.gradle文件和settings.gradle文件.所以,我把它们包括在内只是为了阻止它抱怨.

应用1/settings.gradle

include ':'
include '..:libraries:library1'
include '..:libraries:library2'
include '..:libraries:library3'
include '..:libraries:library4'

LIBRARY1

LIBRARY1 /的build.gradle

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':..:library3')
    compile project(':..:library4')
}

android {
    ...
}

LIBRARY1/settings.gradle

include ':'
include '..:library3'
include '..:library4'

library2..4

library2..4 /的build.gradle

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    ...
}

library2..4/settings.gradle

include ':'

尝试时gradlew clean build,App1我收到以下错误:

FAILURE: Build failed with an exception.

* Where:
Build file '/home/user/projects/branches/branch1/Apps/libraries/library1/build.gradle' line: 15

* What went wrong:
A problem occurred evaluating project ':..:library:library1'.
> Project with path ':..:library3' could not be found in project ':..:library:library1'.

15号线compile project(':..:library3')library1/build.gradle的文件.

如何将外部库和嵌套外部库添加到android项目?

1 个回答
  • 在顶级settings.gradle(App1/settings.gradle)文件中为每个库执行类似的操作

    include ':library1'   
    include ':library2'   
    include ':library3'   
    include ':library4'   
    
    project(':library1').projectDir = new File(rootProject.projectDir, '../libraries/library1')
    project(':library2').projectDir = new File(rootProject.projectDir, '../libraries/library2')
    project(':library3').projectDir = new File(rootProject.projectDir, '../libraries/library3')
    project(':library4').projectDir = new File(rootProject.projectDir, '../libraries/library4')
    

    删除其他settings.gradle文件,您不需要它们

    然后在每个构建脚本中,您只需要使用

    compile project (':library1')
    compile project (':library2')
    etc....
    

    如上所述,只需在根项目(App1)中使用一个settings.gradle文件.

    然后从App1文件夹运行gradlew clean :library1:build以验证library1是否正确构建.

    至于关于App1抱怨缺少库3和4的问题,你确定应用程序中没有代码直接引用这些库,或者在编译library1时没有找到库.单独构建每个库以验证它们都构建正常.

    2023-02-05 10:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有