【发布时间】:2017-02-14 14:28:09
【问题描述】:
一些上下文:
我正在使用 MSBuild 为一个包含 Android 应用程序的大型项目开发持续集成管道。该应用程序包括一些需要定期集成到项目中的自动生成的文件。这通常是通过手动复制它们并在 android studio 中选择 Build->rebuild project 来完成的。
此步骤是必要的,因为该项目还使用了AndroidAnnotations,它在编译时生成类。
问题:
当您在 android studio 中选择“重建项目”时,我没有找到任何有关运行内容的文档。
我尝试了什么:
How to Rebuild and Run android project from command line
还有:
What is happened after I run rebuild project in Android studio?
但是文档here 没有谈论重建命令,而且 6 周的 udacity 课程也不是有用的资源。
当我点击“重建项目”时,Android Studio 事件日志显示:
执行任务:[clean, :app:generateDevelopmentDebugSources, :app:generateDevelopmentDebugAndroidTestSources, :app:prepareDevelopmentDebugUnitTestDependencies, :app:mockableAndroidJar, :app:compileDevelopmentDebugSources, :app:compileDevelopmentDebugAndroidTestSources, :app:compileDevelopmentDebugUnitTestSources]
我在命令行中运行如下:
gradlew.bat clean :app:generateDevelopmentDebugSources :app:generateDevelopmentDebugAndroidTestSources :app:prepareDevelopmentDebugUnitTestDependencies :app:mockableAndroidJar :app:compileDevelopmentDebugSources :app:compileDevelopmentDebugAndroidTestSources :app:compileDevelopmentDebugUnitTestSources
命令执行,但构建完成后出现数百个错误,当您尝试编译或清理而不首先运行重新构建时也会发生这种情况。显然这个命令是不完整的。
当我查看 Android Studio 中的 Gradle 控制台时,我看到了几十个正在运行的目标,但我对复制粘贴这些目标犹豫不决,因为我不知道对项目进行哪些小的更改需要不同的目标要运行。
我已将问题范围缩小到:app:compileDevelopmentDebugUnitTestJavaWithJavac 目标。此目标需要 Gradle 控制台中列出的其他目标之一,但我不知道是哪一个。
这些目标必须来自某个地方,但来自哪里?
tl;博士:
当我从命令行运行“重建项目”时,如何执行 Android Studio 所做的所有事情?
【问题讨论】:
-
通常从终端运行
./gradlew clean build assemble现在最后一个可以是其他任何东西,例如:assembleDebug try -
@dario.budmir 我已经玩过它并尝试了您的解决方案,但仍然缺少目标。我认为关键问题是“Android Studio 从哪里获得所有这些目标?”
-
你能用 --stacktrace --debug 发布构建日志
-
你可以运行:./gradlew clean build assemble --stacktrace --debug
-
所以堆栈跟踪的输出是 14 MB。我会尝试发布相关部分
标签: android windows android-studio gradle msbuild