Volley不适用于Gradle 2.0和Instant run

时间:2016-03-19 14:51:25

标签: android android-studio gradle android-volley instant-run

我最近将Android Studio更新为2.0版:Beta 7。 我正在尝试使用Instant Run,我刚刚安装了Gradle 2.0。 但由于与bintray.gradle相关的错误

,现在我无法编译我的项目

编译时出现以下错误:

Error:Cannot configure the 'publishing' extension after it has been accessed.

调试器错误:

Error:FAILURE: Build failed with an exception.

* Where:
Script 'C:\Project\AtkApp\volley\bintray.gradle' line: 43

* What went wrong:
A problem occurred evaluating script.
> Cannot configure the 'publishing' extension after it has been accessed.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Bintray.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2"
    }
}

// apply the plugin with its class name rather than its Id to work around gradle limitation of
// not being able to find the plugin by Id despite the dependencies being added right above. Gradle
// is currently not capable of loading plugins by Id if the dependency is anywhere else than
// in the main project build.gradle. This file is "imported" into the project's build.gradle
// through a "apply from:".
apply plugin: com.jfrog.bintray.gradle.BintrayPlugin
apply plugin: 'maven-publish'

project.ext.group = 'com.android.volley'
project.ext.archivesBaseName = 'volley'
project.ext.version = '1.0.0'
project.ext.pomDesc = 'Volley Android library'

task sourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

publishing {
    publications {
        library(MavenPublication) {
            groupId project.ext.group
            artifactId project.ext.archivesBaseName
            version project.ext.version

            // Release AAR, Sources, and JavaDoc
            artifact "$buildDir/outputs/aar/volley-release.aar"
            artifact sourcesJar
            artifact javadocJar
        }
    }
}

bintray {
    user = System.env.BINTRAY_USER
    key = System.env.BINTRAY_USER_KEY

    publications = [ 'library' ]

    publish = project.has("release")
    pkg {
        userOrg = 'android'
        repo = 'android-utils'
        group = project.ext.group
        name = project.ext.group + '.' + project.ext.archivesBaseName
        desc = project.ext.pomDesc
        licenses = [ 'Apache-2.0' ]
        websiteUrl = 'https://tools.android.com'
        issueTrackerUrl = 'https://code.google.com/p/android/'
        vcsUrl = 'https://android.googlesource.com/platform/frameworks/volley.git'
        labels = ['android', 'volley', 'network']
        publicDownloadNumbers = true

        version {
            name = project.ext.version
            desc = project.ext.pomDesc + ' version ' + project.ext.version
            gpg {
                sign = true
                passphrase = System.env.GPG_PASSPHRASE
            }
        }
    }
}

4 个答案:

答案 0 :(得分:2)

comment the line in volley build.gradle

我在更新最新版本时遇到了同样的问题。 我尝试过这样做并取得成功。

答案 1 :(得分:0)

罪魁祸首是Volley项目publishing中使用的bintray.gradle标记。 使用Gradle 2.0.0更新后,无法在访问publishing后对其进行配置抱怨。

现在评论build.gradle Volley项目的//apply from: 'bintray.gradle' 中的以下行将进行构建。

{{1}}

我会更新评论一次有更好的解决方案。

答案 2 :(得分:0)

不要评论这一行:

var express = require('express');
var fs = require('fs');
var app = express();

var util = require('util');
var mongoose = require('mongoose');
var schema = mongoose.Schema;

var studSchema = new schema({
    id  : {type:Number, unique:true, required:true},
    name : {type:String, required:true},
    grade : Number,
    course : {type:String},
    year : Number
},{collection: 'details'});

var stud = mongoose.model('stud', studSchema);

module.exports = function (app) {
    app.get('/getAll', function(req, res) { // if url in path is getAll
     stud.find({}, function(err, user){
        if(err) throw err;
        console.log(user);
     });
    })
});

只需更改这些代码行

apply from: 'bintray.gradle'

publishing {
publications {
    library(MavenPublication) {
        groupId project.ext.group
        artifactId project.ext.archivesBaseName
        version project.ext.version

        // Release AAR, Sources, and JavaDoc
        artifact "$buildDir/outputs/aar/volley-release.aar"
        artifact sourcesJar
        artifact javadocJar
    }
}
}

答案 3 :(得分:0)

发布{publications {}},它位于您添加到项目中的排球文件中。不要浪费时间在项目中找工作。