Gradle / Android:指定'root'作为子项目的依赖项

时间:2013-07-24 14:07:12

标签: gradle android-studio

首先,我有一个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文件应包含哪些内容?

1 个答案:

答案 0 :(得分:1)

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

我看到的一件事在您的配置文件中脱颖而出:这是相当的beta / alpha内容。您尚未将项目修改为最新的Android Studio 0.2.0说明。特别是,应该修改'com.android.tools.build:grad:0.4'。参考:http://tools.android.com/recent

有一个开源应用程序与您的基本需求相同。这是一个Grocery Shopping应用程序,作为CouchDBLIte https://github.com/couchbaselabs/GrocerySync-Android的样本提供

它必须参考现有项目。它似乎比你使用更明确的依赖关系语法。示例:“compile'c​​om.couchbase.cblite:CBLiteEktorp:0.7.4'” - 包括完整的类路径。但他们定义了两种基本方法,直接集成和工件集成。

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

相关问题