Gradle - 错误无法找到参数的方法实现()[com.android.support:appcompat-v7:26.0.0]

时间:2017-08-10 13:42:29

标签: java android android-studio android-gradle

我正在尝试在android studio中打开现有的android项目,并且gradle无法在没有错误的情况下构建应用程序

android studio继续抛出错误

@NgModule({
  imports: [
    BrowserModule,
    AngularFireModule.initializeApp(constants.firebase),
    AngularFireDatabaseModule])

build.gradle中的我的代码这有助于理解我的问题 我的依赖

import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';

 db: AngularFireDatabase;
 lists:FirebaseListObservable<any[]>
 lists=this.db.list('/users');

请帮助解决问题

14 个答案:

答案 0 :(得分:75)

object ClientBuilder { def build(client: Row, addr: Option[Iterable[Row]], addrType: Map[String,String]): ClientData = { val addrList: Option[List[Address]] = if (addr.isEmpty) None else Some( addr.get.map( (addrRow: Row) => Address( addrRow.getAs[String]("AddressLine1") , addrRow.getAs[String]("AddressLine2") , addrRow.getAs[String]("City") , addrRow.getAs[String]("ProvinceCode") , addrRow.getAs[String]("Country") , addrType.get(addrRow.getAs[String]("AddressTypeCode")).getOrElse("") ) ).toList ) val firstName: String = DFAsist.safeGeteString(client, "FirstName").getOrElse("") val lastName: String = DFAsist.safeGeteString(client, "LastName").getOrElse("") val title: String = DFAsist.safeGeteString(client, "Title") match { case None => "" case Some(s) if List("Mr.", "Ms.", "Mrs.").contains(s) => s case _ => throw new IllegalArgumentException("Title is wrong!!!") } ClientData(title,firstName,lastName, addrList) } 替换为compile

implementation最近deprecated,由compileimplementation

取代

答案 1 :(得分:20)

您至少需要使用 Gradle 3.4 或更新才能使用implementation。建议不要继续使用已弃用的compile,因为这会导致构建时间变慢。有关更多详细信息,请参阅官方Android开发人员指南:

  

当您的模块配置实现依赖项时,它让Gradle知道模块不希望在编译时将依赖项泄漏给其他模块。也就是说,依赖性仅在运行时可用于其他模块。   使用此依赖项配置而不是api或compile可以显着缩短构建时间,因为它减少了构建系统需要重新编译的项目数量。例如,如果实现依赖项更改其API,则Gradle仅重新编译该依赖项以及直接依赖于它的模块。大多数应用和测试模块都应该使用此配置。

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations

更新: compile将在2018年底前删除,因此请确保您现在只使用implementation

  

警告:配置&#39;编译&#39;已经过时,已被取代   &#39;实施&#39 ;.它将在2018年底删除

答案 2 :(得分:19)

在使用“实现”之前,请确保您的gradle版本为3。

在依赖项下打开项目级别的gradle文件

dependencies{
classpath 'com.android.tools.build:gradle:3.1.2'
}

打开gradle包装器属性使用分发网址作为

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

或最新版本

synk项目,希望这可以解决您的问题

答案 3 :(得分:4)

对我来说,我把我的依赖放在了错误的位置。

buildscript {
  dependencies {
    //Don't put dependencies here.
  }
}

dependencies {
 //Put them here
}

答案 4 :(得分:3)

更改apply plugin:'java' 应用插件:'java-library'

java-library-plugin

答案 5 :(得分:2)

implementation替换为classpath。应该可以。

答案 6 :(得分:1)

您的代码

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

替换为

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')

答案 7 :(得分:1)

如此处https://stackoverflow.com/a/50941562/2186220所述,请在使用“实现”时使用gradle插件版本3或更高版本。

此外,请使用google()中的buildscript存储库。

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

这些更改应该可以解决问题。

答案 8 :(得分:1)

我将implementation从根级别的build.gradle移到了模块级别的build.gradle。它解决了这个问题。

答案 9 :(得分:1)

就我而言,这是因为我使用了 Implementation 而不是 implementation

答案 10 :(得分:0)

太荒谬了,但是我仍然想分享我的经验,以防有人陷入像我这样的情况。

请检查是否更改了以下内容:compileSdkVersion-> implementationSdkVersion

答案 11 :(得分:0)

确保您将这些依赖项添加到android / app / build.gradle中,而不是android / build.gradle

答案 12 :(得分:0)

如果未定义实现,则说明您写的文件错误。在Unity 2019+上,正确的文件是main template grandle,而不是其他一些文件。

答案 13 :(得分:0)

按照官方 docs 中的建议,您需要添加这些:

buildscript {
    repositories {
        // Gradle 4.1 and higher include support for Google's Maven repo using
        // the google() method. And you need to include this repo to download
        // Android Gradle plugin 3.0.0 or higher.
        google()
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.0'
    }
}

添加这些消除了我的错误。也使用实现而不是编译。