android - Gradle 模块和 git 子模块

标签 android git gradle android-studio build.gradle

我有一个名为 toolkit 的库项目,它有两个模块 coredatabase,配置如下:

设置.gradle

include ':core'
include ':database' 

核心build.gradle

dependencies {
    compile 'com.android.support:support-v4:20.+'
    compile 'com.jakewharton:butterknife:5.1.+'
    compile 'com.google.code.gson:gson:2.2.+'
    compile 'uk.co.chrisjenx:calligraphy:0.7.+'
    compile files('libs/flurry-3.4.0.jar')
}

数据库build.gradle

dependencies {
    compile project(':core')
}

在这个库项目上运行我的测试没问题,但我想将这个库添加为其他项目的 git 子模块,这个项目有以下配置:

设置.gradle

include ':app-tablet'
include 'libraries:float-hint'
include 'libraries:toolkit:core'
include 'libraries:toolkit:database'
include 'libraries:twoway-view:TwoWayView'

应用构建.gradle

dependencies {
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.j256.ormlite:ormlite-android:4.48'
    compile 'com.jayway.android.robotium:robotium-solo:5.2.1@jar'
    compile 'com.squareup.dagger:dagger:1.2.+'
    compile 'com.squareup.picasso:picasso:2.1.1@jar'
    compile files('libs/YouTubeAndroidPlayerApi.jar')
    compile project(':libraries:float-hint')
    compile project(':libraries:porquenao-toolkit:core')
    compile project(':libraries:porquenao-toolkit:database')
    compile project(':libraries:twoway-view:TwoWayView')
}

当我尝试编译时,我得到以下信息:

$  gradlew assembleDebug -d

12:10:46.283 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
12:10:46.285 [ERROR] [org.gradle.BuildExceptionReporter] 
12:10:46.285 [ERROR] [org.gradle.BuildExceptionReporter] * Where:
12:10:46.285 [ERROR] [org.gradle.BuildExceptionReporter] Build file '/path/libraries/toolkit/database/build.gradle' line: 16
12:10:46.286 [ERROR] [org.gradle.BuildExceptionReporter] 
12:10:46.286 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
12:10:46.286 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred evaluating project ':libraries:toolkit:database'.
12:10:46.287 [ERROR] [org.gradle.BuildExceptionReporter] > Project with path ':core' could not be found in project ':libraries:toolkit:database'.
12:10:46.308 [ERROR] [org.gradle.BuildExceptionReporter]    ... more
12:10:46.308 [LIFECYCLE] [org.gradle.BuildResultLogger] 
12:10:46.308 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED

我知道问题出在路径 :corelibraries:toolkit:core 但如何适本地解决这个问题?

最佳答案

您的应用程序 gradle 文件存在命名问题。

settings.gradle 有:

包含'libraries:toolkit:core'

build.gradle 有:

compile project(':libraries:porquenao-toolkit:core')

假设您修复了这个问题,您仍然会遇到错误。

数据库模块将尝试编译 ":core",但在应用程序中使用时,核心模块具有不同的路径:":libraries:porquenao-toolkit:core "

解决此问题的一种方法是将核心库作为“:core”包含在两个项目中,但为其提供不同的项目路径。

您的 settings.gradle 文件看起来像:

工具包:

include ':core'
project(':core').projectDir = new File(rootDir, 'core')

应用:

include ':core'
project(':core').projectDir = new File(rootDir, 'libraries/porquenao-toolkit/core')

关于android - Gradle 模块和 git 子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186187/

相关文章:

android - 安卓用户界面的问题

git - 是否可以防止 git 立即删除已删除分支的 reflog?

java - React-native 构建错误 Android - java.lang.UnsupportedClassVersionError : com/android/build/gradle/AppPlugin : Unsupported major. 次要版本 52.0

java - 添加 sourceSet 时已经设置了 endPosTable

android - 如何根据gradle flavor 设置变量

android - mediaplayer 在 android 中播放实时流音频的问题

eclipse - 如何在使用 Eclipse 和 Git 时修复 ssh 身份验证错误

groovy - 在构建过程中在源中设置 "hard-coded"标志

没有 Activity 的 Android 应用程序将充当服务并在设备启动时启动?

IntelliJ 中的 git 提交和推送