命令git以非零退出值128结束

时间:2014-11-24 07:50:28

标签: android git gradle android-studio android-gradle

当我将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文件,如上所示。

1 个答案:

答案 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()
};

您可以根据需要更改代码。