草庐IT

android - 配置后无法创建变体 'android-lint'

coder 2023-11-19 原文

我正在将项目的 Gradle 插件从 2.1.2 更新到 3.1.0,但是 gradle 在构建时开始抛出错误:

Cannot create variant 'android-lint' after configuration ':app:debugRuntimeElements' has been resolved

项目级渐变:

 // Top-level build file 
 buildscript {
repositories {
    jcenter()
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.1'
    classpath 'org.ajoberstar:gradle-git:0.6.3'
    //noinspection GradleDynamicVersion
    classpath 'io.fabric.tools:gradle:1.+'
    classpath 'me.tatarka:gradle-retrolambda:3.2.5'
    classpath 'com.google.gms:google-services:3.0.0'
}
}

 // Used to disable preDex, will speed up clean build but slow down incremental builds.
  project.ext.preDexLibs = !project.hasProperty('disablePreDex')

 subprojects {
project.plugins.whenPluginAdded { plugin ->
    if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) {
        project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
    } else if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) {
        project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
    }
}
}

allprojects {
repositories {
    jcenter()
 }
 }

库级gradle:

 apply plugin: 'com.android.library'

 setVersion '1.2'

repositories {
mavenCentral()
maven {
    url 'https://maven.google.com/'
    name 'Google'
}
}

configurations {
classpaths
}

def sharedManifest = manifest {
attributes('Specification-Title': 'My App',
           'Specification-Version': '2.1',
           'Specification-Vendor': 'App Vendor',
           'Implementation-Title': 'App',
           'Implementation-Version': '2.1',
           'Implementation-Vendor': 'App Vendor')
 }

android {
compileSdkVersion 27
buildToolsVersion "27.0.3"

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 27
    consumerProguardFile file("proguard-project.txt")
}

buildTypes {
    debug {
        testCoverageEnabled true
    }
}

// work-around for duplicate files during packaging of APK
packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation project(':exclude-doclet')
implementation 'com.android.support:support-annotations:27.0.2'
implementation 'com.android.support:support-v4:27.0.2'
implementation 'commons-io:commons-io:2.4'
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
implementation 'com.google.code.gson:gson:2.4'
implementation 'io.reactivex:rxandroid:1.2.1'
implementation 'io.reactivex:rxjava:1.1.7'
classpaths files(new File(System.getenv("ANDROID_HOME") + "/platforms/android-${Integer.parseInt(rootProject.ANDROID_BUILD_SDK_VERSION)}/android.jar"),
        new File(System.getenv("ANDROID_HOME") + "/extras/android/support/v4/android-support-v4.jar"))
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'org.mockito:mockito-core:1.10.19'
}

android.libraryVariants.all { variant ->
String name = variant.buildType.name
task("generate${name.capitalize()}Javadoc", type: Javadoc) {
    dependsOn variant.javaCompiler
    description "Generates Javadoc for $project.name."

    title "App $project.version"
    source = variant.javaCompiler.source
    classpath += project.files(variant.javaCompiler.classpath.files, android.getBootClasspath())
    List<File> pathList = new ArrayList<File>()
    pathList.add(new File(project(':exclude-doclet').libsDir,
                          "ExcludeDoclet-${project(':exclude-doclet').version}.jar"))
    options {
        doclet = "ExcludeDoclet"
        docletpath = pathList
        encoding = "UTF-8"
        classpath = configurations.classpaths.files.asType(List)
        linksOffline "http://developer.android.com/reference", "${android.sdkDirectory}/docs/reference"
        links "http://docs.oracle.com/javase/7/docs/api/",
              "http://square.github.io/retrofit/2.x/retrofit/",
              "http://square.github.io/okhttp/2.x/okhttp/",
              "http://reactivex.io/RxJava/javadoc/"
        memberLevel = JavadocMemberLevel.PUBLIC
        header = "AppKit"
    }
    exclude '**/BuildConfig.java'
    exclude '**/R.java'
    failOnError true

    doLast {
        copy {
            from 'src/javadoc/assets/'
            into destinationDir.path + '/assets/'
        }
    }
}

task("assemble${name.capitalize()}JavadocJar", type: Jar) {
    dependsOn "generate${name.capitalize()}Javadoc"
    description "Assembles Jar contaning Javadoc for $project.name."
    from project.tasks.getByName("generate${name.capitalize()}Javadoc").destinationDir
    classifier = 'javadoc'
    manifest {
        from sharedManifest
    }
}

task("assemble${name.capitalize()}Jar", type: Jar) {
    dependsOn variant.javaCompiler
    description "Assembles Jar contaning $project.name."
    from variant.javaCompiler.destinationDir
    manifest {
        from sharedManifest
    }
}

artifacts {
    archives project.tasks.getByName("assemble${name.capitalize()}Jar")
    archives project.tasks.getByName("assemble${name.capitalize()}JavadocJar")
}
}

我被这个问题困住了,没有找到任何解决方案。谁能帮帮我。

最佳答案

我在另一个图书馆遇到了和你一样的问题。 我可以通过替换这一行来解决这个问题:

classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar)

与:

doFirst { classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) },

“这是由于 AndroidStudio 更新时新的 Gradle 插件与 JavaDoc 插件发生冲突”,如果您有 Javadoc 任务,您必须能够找到相同的行。

关于android - 配置后无法创建变体 'android-lint',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49852030/

有关android - 配置后无法创建变体 'android-lint'的更多相关文章

  1. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  3. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  4. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  7. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  8. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  9. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  10. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

随机推荐