1

首先,我有一个可以在 Studio 中正常工作的 Android 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 文件应该包含什么吗?

4

1 回答 1

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'”——包括完整的类路径。但他们定义了两种基本方法,直接集成和工件集成。

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

于 2013-07-26T14:33:19.343 回答