【问题标题】:Gradle/Android: Specify 'root' as a dependency of subprojectGradle/Android:将“root”指定为子项目的依赖项
【发布时间】:2013-07-24 14:07:12
【问题描述】:

首先,我有一个 Android Studio 项目设置,可以在 Studio 中正常工作。我可以毫无问题地构建它并在设备和模拟器中运行它,还可以构建发布 APK。

我现在正在尝试使用一些命令行工具来处理我的构建。我所做的所有阅读都表明 Android Studio 使用 gradle,但据我所见,我的项目显然不是这种情况——因为我必须在 gradlew 甚至尝试之前创建我的 build.gradle、settings.gradle 文件构建任何东西——但 Android Studio 仍然可以很好地编译和部署。

这是我的项目结构(因为它实际位于磁盘上):

Root Project (Android library project, contains all the src, logic, UI, activities, etc.)
\--- WrapperProject (Android app, depends on the root project)
\--- SubProject1 (Android library, used by root)
\--- SubProject2 (Android library, used by root)

这是我根项目的settings.gradle 文件

include ':SubProject1', ':SubProject2'

同样,这是我的根项目的 build.gradle 文件。请注意,此项目被标记为 android-library,并且不以任何方式引用 WrapperProject(应该吗?)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android-library'

dependencies {
    compile project(':SubProject1')
    compile project(':SubProject2')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 17
    }
    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')
    }
}

我能够使用gradlew build 成功构建我的根项目——但我的最终目标是从依赖于根项目的 WrapperProject 构建 APK。你能建议我 WrapperProject 的 build.gradle 文件应该包含什么吗?

【问题讨论】:

    标签: gradle android-studio


    【解决方案1】:

    我在这里是因为寻找类似的答案,尽管我的问题主要是相反的。我发现命令行构建 (gradlew) 和 Android Studio 0.2.2 之间的集成充满了秘密。

    我在您的配置文件中看到了一个突出的特点:这是非常漂亮的 beta/alpha 内容。您尚未将项目修改为最新的 Android Studio 0.2.0 注释。特别是应该修改“com.android.tools.build:gradle:0.4”。参考:http://tools.android.com/recent

    有一个开源应用程序与您的基本需求相同。这是一个杂货购物应用程序,作为 CouchDBLite 的示例提供 https://github.com/couchbaselabs/GrocerySync-Android

    它必须引用现有项目。它似乎对依赖项使用了比您更明确的语法。例如:“compile 'com.couchbase.cblite:CBLiteEktorp:0.7.4'”——包括完整的类路径。但他们定义了两种基本方法,直接集成和工件集成。

    抱歉,我无法为您的语法问题提供更准确的答案 - 但我正在分享我目前所知道的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多