【问题标题】:Android Studio error ➡ Cannot run program "git" ... CreateProcess error=2, The system cannot find the file specifiedAndroid Studio错误➡无法运行程序“git” ... CreateProcess错误=2,系统找不到指定的文件
【发布时间】:2015-02-01 21:45:08
【问题描述】:

在 Android Studio for Windows 上导入项目后,之前在 Mac OS X 或 Linux 上设置,gradle build 产生错误:

-->Error:(12, 0) CreateProcess error=2, The system cannot find the file specified

或者

Error:(12, 0) A problem occurred evaluating project ':app'.
> Cannot run program "git" (in directory "<project path>"): CreateProcess error=2, The system cannot find the file specified`

build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14.1'
    }
}

def project
def  var

//Error line pointing out below line 

var = project.ext.gitHash = "git rev-parse --short HEAD".execute().text.trim() var --> Error:(12,0)

apply plugin: 'com.android.application'

repositories {
    mavenCentral()

    // for using SNAPSHOT
    //maven {
    //    url uri('https://oss.sonatype.org/content/repositories/snapshots/')
    //}
}

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.melnykov:floatingactionbutton:1.0.7'
    debugCompile project(':observablescrollview')
    releaseCompile "com.github.ksoichiro:android-observablescrollview:$VERSION_NAME"

    // for using SNAPSHOT
    //compile "com.github.ksoichiro:android-observablescrollview:$VERSION_NAME"
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        applicationId "com.github.ksoichiro.android.observablescrollview.samples"
        minSdkVersion 9
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        buildConfigField "String", "GIT_HASH", "\"${project.ext.gitHash}\""
    }

    signingConfigs {
        release {
            def filePrivateProperties = file("private.properties")
            if (filePrivateProperties.exists()) {
                Properties propsPrivate = new Properties()
                propsPrivate.load(new FileInputStream(filePrivateProperties))

                storeFile file(propsPrivate['key.store'])
                keyAlias propsPrivate['key.alias']
                storePassword propsPrivate['key.store.password']
                keyPassword propsPrivate['key.alias.password']
            }
        }
    }

    buildTypes {
        debug {
            applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
            buildConfigField "String", "LIB_VERSION", "\"${project.ext.gitHash}\""
        }

        release {
            buildConfigField "String", "LIB_VERSION", "\"${VERSION_NAME}\""

            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            def filePrivateProperties = file("private.properties")
            if (filePrivateProperties.exists()) {
                signingConfig signingConfigs.release
            }
        }
    }

    lintOptions {
        abortOnError false
    }

    applicationVariants.all { variant ->
        def output = variant.outputs.get(0)
        File apk = output.outputFile
        String newName = output.outputFile.name.replace(".apk", "-${variant.mergedFlavor.versionCode}-${variant.mergedFlavor.versionName}-${project.ext.gitHash}.apk")
                .replace("app-", "${variant.mergedFlavor.applicationId}-")
        output.outputFile = new File(apk.parentFile, newName)
    }
}

【问题讨论】:

  • 错误消息中应该有更详细的信息,以指示哪个命令运行失败。
  • 这与我们在错误消息中给出的一样多。问题是找不到git

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


【解决方案1】:

我正在与Android-ObservableScrollView 合作,我遇到了同样的问题。我就是这样解决这个问题的:

build.gradle(项目):

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}


allprojects {
    repositories {
        jcenter()
    }
}

build.gradle(示例):

/*buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}*/

//project.ext.gitHash = "git rev-parse --short HEAD".execute().text.trim()

apply plugin: 'com.android.application'

repositories {
    mavenCentral()

    // for using SNAPSHOT
    //maven {
    //    url uri('https://oss.sonatype.org/content/repositories/snapshots/')
    //}
}

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.melnykov:floatingactionbutton:1.0.7'
    debugCompile project(':observablescrollview')
    // Release build uses the synced latest version
    releaseCompile "com.github.ksoichiro:android-observablescrollview:${SYNCED_VERSION_NAME}"

    // for using SNAPSHOT
    //compile "com.github.ksoichiro:android-observablescrollview:$VERSION_NAME"
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        applicationId "com.github.ksoichiro.android.observablescrollview.samples"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
//        buildConfigField "String", "GIT_HASH", "\"${project.ext.gitHash}\""
    }

    signingConfigs {
        release {
            /*def filePrivateProperties = file("private.properties")
            if (filePrivateProperties.exists()) {
                Properties propsPrivate = new Properties()
                propsPrivate.load(new FileInputStream(filePrivateProperties))

                storeFile file(propsPrivate['key.store'])
                keyAlias propsPrivate['key.alias']
                storePassword propsPrivate['key.store.password']
                keyPassword propsPrivate['key.alias.password']
            }*/
        }
    }

    buildTypes {
        debug {
            applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
//            buildConfigField "String", "LIB_VERSION", "\"${project.ext.gitHash}\""
        }

        release {
            buildConfigField "String", "LIB_VERSION", "\"${VERSION_NAME}\""

            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
           /* def filePrivateProperties = file("private.properties")
            if (filePrivateProperties.exists()) {
                signingConfig signingConfigs.release
            }*/
        }
    }

    lintOptions {
        abortOnError false
    }

   /* applicationVariants.all { variant ->
        def output = variant.outputs.get(0)
        File apk = output.outputFile
        String newName = output.outputFile.name.replace(".apk", "-${variant.mergedFlavor.versionCode}-${variant.mergedFlavor.versionName}-${project.ext.gitHash}.apk")
                .replace("app-", "${variant.mergedFlavor.applicationId}-")
        output.outputFile = new File(apk.parentFile, newName)
    }*/
}

build.gradle(库)

/*buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}*/

apply plugin: 'com.android.library'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.android.support:recyclerview-v7:21.0.0'
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        minSdkVersion 9
    }
}

//apply from: 'https://raw.githubusercontent.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    问题是gradle在路径中找不到git。如果您在 Android Studio --stacktrace --debug 中打开编译器选项,您将获得更多信息。

    这是堆栈跟踪的一部分:

    Caused by: java.io.IOException: Cannot run program "git" (in directory "..."): CreateProcess error=2, The system cannot find the file specified
    

    解决方案是安装git并将二进制文件的位置添加到路径中。打开最初在 Mac OS X 上创建的项目时,我在 Windows 上遇到了这个问题。

    1. 关闭 Android Studio

    2. 在 Windows 上打开系统属性 > 高级 > 环境变量...

    3. 点击“路径”,然后点击编辑

    4. 在“变量值”的末尾添加类似“;C:\Program Files\Git\cmd”的内容(但当然没有引号)。不要添加:';"C:\Program Files\Git\cmd"' 因为它不起作用。这就是我遇到的问题。

    5. 打开 Android Studio,清理并再次构建,您应该可以正常运行了。

    【讨论】:

    • 就是这样!由于空格而在路径变量中加上双引号多年后,这对我来说是自动的。您的观察 #4 成功了!
    • 如果您认为您已经更新了路径变量,请重新启动机器。
    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2016-07-26
    • 1970-01-01
    • 2018-06-11
    • 2018-09-17
    相关资源
    最近更新 更多