使用 Android 工具项目构建系统时遇到问题

Posted

技术标签:

【中文标题】使用 Android 工具项目构建系统时遇到问题【英文标题】:Having problems using the Android Tools Project Build System 【发布时间】:2012-12-06 07:51:27 【问题描述】:

所以我一直在尝试使用 http://tools.android.com/tech-docs/new-build-system 自动构建 Android。

我仍然不清楚如何准确地使用构建系统,所以如果有人对此有经验,或者一般的 Gradle 可能能够为我回答以下问题。

将此构建文件用作参考。

//
// A basic Android application that follows all the conventions
//
buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:0.2'
    

apply plugin: 'android'

android 
    target = "android-15"
    testBuildType = "debug"

    defaultConfig 
        versionCode = 12
        versionName = "2.0"
        minSdkVersion = 16
        targetSdkVersion = 16

        signingStoreLocation = "debug.keystore"
        signingStorePassword = "android"
        signingKeyAlias = "androiddebugkey"
        signingKeyPassword = "android"

        buildConfig "private final static boolean DEFAULT = true;", \
                    "private final static String FOO = \"foo\";"
    

    buildTypes 
        debug 
            packageNameSuffix = ".debug"

            buildConfig "private final static boolean DEBUG2 = false;"
        
    

    sourceSets 

       main 
       test 
    

    aaptOptions 
        noCompress "txt"
    

    您究竟是如何向它添加依赖项以进行构建的?使用 Gradle 的依赖项会给我带来构建错误。 您将如何创建不同的构建环境?然后从命令行运行这些? 在 main 和 test 之外的 sourceSets 有什么意义?

感谢您的帮助,我们将不胜感激除上述问题之外的任何一般指南。

【问题讨论】:

另外,如果其他人可能会建议一个完全不同的 Android 构建系统,并期望它具有简单快速的学习曲线,那就太好了。 Ant 并没有真正内置依赖管理或自动化测试。希望将其纳入框架。 您遇到了什么错误? 我不确定您是否可以使用空块来配置 sourceSets.main 和 sourceSets.test。如果您使用的是默认文件夹结构(src/main/java 和 src/test/java),我会删除它们,看看是否有帮助。 【参考方案1】:

1- 依赖是通过常规的 gradle 方式添加的,例如:

依赖 编译'com.google.android:support-v4:r7'

更多信息:http://gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html

2- 不知道你的意思。如果您指的是不同的构建变体,则必须创建产品风味(请参阅http://tools.android.com/tech-docs/new-build-system/using-the-new-build-system)。

从命令行构建,您只需运行“gradle assemble”。请参阅上面的文档。

3- SourceSets 用于配置默认配置(main/test)、flavors 和构建类型的源集。与 Java gradle 构建不同,您不能只添加新的源集并让它们自动编译。 这就是为什么它位于 android 命名空间 (android.sourcesets) 中,而不是像默认 Java 插件提供的 sourceSets 对象那样位于顶层。

【讨论】:

到目前为止,我已经搁置了使用该工具并正在探索使用 android maven 插件,因为我发现指南超级缺乏。来自非运营背景,并使用 Eclipse 或 Intellij 构建我的 Android 应用程序,我发现现在这太难理解了。

以上是关于使用 Android 工具项目构建系统时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jenkins 构建 Android 项目时出现问题(未找到任务)

使用 gradle 构建 android 项目失败

jenkins构建项目的错误和原因及其解决方法

使用 PHP 构建 gradle Android 项目

项目构建失败时,Android Studio 挂起/冻结

Android Gradle 插件Gradle 构建工具简介 ② ( Android 项目构建打包流程 | 构建工具发展 -> 手动配置 -> Ant -> Maven -> Gradle )