Android Studio升级到0.8.5会导致Gradle错误

时间:2014-08-09 01:34:38

标签: android-studio android-gradle

My Gradle一直在努力,直到我升级到Android Studio 0.8.5。现在,gradle构建中断了错误消息:

错误:已弃用依赖打包来定义主工件的扩展,并计划在Gradle 2.0中删除  (类java.lang.String)

我正在附加build.gradle文件以供参考:

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://saturday06.github.io/gradle-android-scala-plugin/repository/snapshot' }
        flatDir {
            dirs 'libs/'
        }
//        flatDir {
//            dirs '/Users/sto/workspace/robolectric-gradle-plugin.sonny/build/libs/'
//        }
//        flatDir {
//            dirs '/Users/sto/workspace/gradle-android-scala-plugin/build/libs/'
//        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
        classpath 'jp.leafytree.gradle:gradle-android-scala-plugin:1.0-SNAPSHOT'
        classpath 'org.robolectric:robolectric-gradle-plugin.sonny:0.12.1'
        classpath "commons-io:commons-io:2.4"
        classpath 'net.lingala.zip4j:zip4j:1.3.2'
    }
}

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs/'
    }
}


apply plugin: 'com.android.application'
apply plugin: 'android-scala'
apply plugin: 'robolectric'

robolectric {
    include '**/*Test*.class'
}

android {
    compileSdkVersion 19
    buildToolsVersion '20.0.0'

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName '1.0'
//        testInstrumentationRunner "android.test.InstrumentationTestRunner"
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }
    packagingOptions {
        exclude 'rootdoc.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'decoder.properties'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'LICENSE.txt'
    }

    sourceSets {
        main {
            java.srcDirs = ['src/main/gen-java', 'src/main/java', 'src/main/scala']
        }
        androidTest.setRoot('src/androidTest/')
        androidTest {
            java.srcDirs = ['src/androidTest/scala', 'src/androidTest/java']
        }
    }

    android {
        lintOptions {
            abortOnError false
        }
    }

    buildTypes {
        debug {
            runProguard true
            proguardFile file('proguard-rules-debug.txt')
        }
        release {
            runProguard true
            proguardFile file('proguard-rules.txt')
        }
    }
}

dependencies {
    compile project(':swiper')
    compile 'org.scala-lang:scala-library:2.11.2'
    compile 'org.json4s:json4s-native_2.11:3.2.10'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile 'com.google.android:android:4.1.1.4'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.2'
    compile 'com.loopj.android:android-async-http:1.4.4'
    compile 'com.edmodo:cropper:1.0.1'
    compile 'de.hdodenhof:circleimageview:1.1.1'
    compile 'org.fusesource.mqtt-client:mqtt-client:1.10'
    compile 'log4j:log4j:1.2.17'
    compile 'de.mindpipe.android:android-logging-log4j:1.0.3'
    compile('org.apache.thrift:libthrift:0.9.1') {
        transitive = false
    }
    compile 'ch.hsr:geohash:1.0.10'
    compile 'org.slf4j:slf4j-android:1.7.7'

    androidTestCompile('junit:junit:4.11') {
//        exclude module: 'hamcrest-core'
    }
    androidTestCompile('org.robolectric:robolectric:2.3') {
        exclude module: 'classworlds'
        exclude module: 'commons-logging'
        exclude module: 'httpclient'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-provider-api'
    }

}

我仍然可以从命令行使用gradle(v1.12)进行构建,但是如果不使用Studio,我就无法设置我常用的断点进行调试。

1 个答案:

答案 0 :(得分:2)

更新

对我来说,导致这个问题的原因(可能是你,鉴于上面的构建文件)是Scala插件。有a bug with the Scala plugin阻止Android Studio导入Gradle项目。对此的修复已经被推送,因此为了让Android Studio再次运行,您可以禁用Scala插件或更新它。

  1. 打开Settings / Preferences
  2. 打开左侧的Plugins部分
  3. 找到Scala插件
  4. 右键点击插件,然后点击Reload List of Plugins
  5. 再次右键点击该插件,然后点击Update Plugin
  6. 这让我可以再次从Android Studio进行Gradle同步和构建,希望对您有所帮助!

    以下原始答案:

    看起来这是a bug with Android Studio。希望它很快就能解决。

    与此同时,您可以通过将调试程序附加到应用程序的正在运行的进程来调试应用程序,而无需从Android Studio启动它。你可以这两种方式。

    • 通过菜单:Run -> Attach Debugger to Android Process
    • 按播放/构建按钮右侧的两个按钮。它看起来像一个灰色的手机/矩形,右下方有一个小绿色的虫子

    执行此操作后,将显示一个对话框,列出要调试的可用应用程序。选择您的应用程序,然后按OK。你的断点现在应该有效。

    如果您需要调试应用启动时发生的事情,您可以告诉Android在使用以下步骤启动某些应用程序时等待调试器:

    1. 在手机上打开Android设置
    2. 打开Developer Options
    3. 确保选中Wait for debugger
    4. Select debug app并选择您的应用
    5. 然后,当您启动应用程序时,它将等待您通过上述两种方法之一附加调试器。

      希望这有帮助!