当我将Android项目从Eclipse迁移到Android Studio时,使用travis ci构建项目,它有以下错误。
失败:构建因例外而失败 *凡:
构建文件' /home/travis/build/Logan676/seadroid/app/build.gradle'行:20
*出了什么问题:
评估项目时遇到了问题':app' 处理'命令' git''完成非零退出值128
build.gradle文件是
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.13.0'
}
}
apply plugin: 'com.android.application'
repositories {
jcenter()
}
/*
* Gets the version name from the latest Git tag
*/
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
// LINE 20 IS HERER!!!!!!!!!!!!!
commandLine 'git', 'describe', '--tags'
standardOutput = stdout
}
return stdout.toString().trim()
}
def getVersionCode = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-list', '--count', "HEAD"
standardOutput = stdout
}
return Integer.valueOf(stdout.toString().trim())
}
dependencies {
compile 'com.android.support:support-v4:21.0.+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.inkapplications.viewpageindicator:library:2.4.3'
compile 'com.github.kevinsawicki:http-request:5.6'
compile 'commons-io:commons-io:2.4'
compile 'com.google.guava:guava:18.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
compile project(':libraries:NewQuickAction')
compile project(':libraries:MarkdownView')
compile project(':libraries:PullToRefresh')
}
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode getVersionCode()
versionName getVersionName()
}
lintOptions {
abortOnError false
}
signingConfigs {
release {
// Signing code for manual signing
//storeFile file(System.console().readLine("\n\$ Enter keystore path: "))
//storePassword System.console().readPassword("\n\$ Enter keystore password: ").toString()
//keyAlias System.console().readLine("\n\$ Enter key alias: ")
//keyPassword System.console().readPassword("\n\$ Enter key password: ").toString()
}
}
buildTypes {
release {
//signingConfig signingConfigs.release
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
}
}
我猜是因为没有安装git错误引起的。但我不知道如何解决它。也许它需要一些脚本来自动安装git。所以任何人都可以帮我修改Gradle文件,如上所示。
答案 0 :(得分:0)
我从代码中的git命令输出中修改了版本属性的修订版(代码通用的unix / first exec /和windows / second exec /,命令git必须从控制台工作)
def os = System.getProperty("os.name").toLowerCase()
def revision = new ByteArrayOutputStream()
if (!os.contains("windows")) {
exec {
executable "/bin/sh"
args "-c", "echo -n `git rev-list HEAD | wc -l | sed 's/^[ ^t]*//'`"
standardOutput = revision;
}
} else {
exec {
executable "cmd"
args "/c", "git rev-list HEAD | find /c /v \"\""
standardOutput = revision;
}
revision = revision as String
revision = revision.trim()
};
您可以根据需要更改代码。