android – Kapt在Instant app功能模块中不生成类

android – Kapt在Instant app功能模块中不生成类,第1张

概述我在我的 Android应用程序中使用dagger2.即使没有错误,它也不会生成匕首组件类. 我在设置中启用了注释处理器并重新启动我的android工作室,但这对我不起作用.我也读了这个线程Dagger2 not generating Daggercomponent classes,并在一个不推荐使用apt的线程上阅读,所以我使用的是annotationProcessor 基本模块build.gr 我在我的 Android应用程序中使用dagger2.即使没有错误,它也不会生成匕首组件类.

我在设置中启用了注释处理器并重新启动我的androID工作室,但这对我不起作用.我也读了这个线程Dagger2 not generating Daggercomponent classes,并在一个不推荐使用apt的线程上阅读,所以我使用的是annotationProcessor

基本模块build.gradle

apply plugin: 'com.androID.feature'apply plugin: 'kotlin-androID'apply plugin: 'kotlin-kapt'androID {    compileSdkVersion 26    buildToolsversion "26.0.1"    baseFeature true    defaultConfig {        minSdkVersion 23        targetSdkVersion 26        versionCode 1        versionname "0.0.1"    }    buildTypes {        release {            MinifyEnabled false            proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.pro'        }    }}dependencIEs {    application project(':app')    feature project(":main")    feature project(":tv")      API 'com.androID.support:appcompat-v7:26.0.2'    API 'com.androID.support.constraint:constraint-layout:1.0.2'    API 'com.androID.support:design:26.0.2'    API "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"    API "org.jetbrains.anko:anko-commons:$anko_version"    API "androID.arch.lifecycle:runtime:1.0.0-Alpha9"    API "androID.arch.lifecycle:extensions:1.0.0-Alpha9"    kapt "androID.arch.lifecycle:compiler:1.0.0-Alpha9"    API 'com.squareup.retrofit2:retrofit:2.3.0'    API "com.squareup.retrofit2:converter-moshi:2.0.0"    API 'com.Google.dagger:dagger:2.11'    kapt 'com.Google.dagger:dagger-compiler:2.11'    API 'com.github.bumptech.glIDe:glIDe:4.0.0'    kapt 'com.github.bumptech.glIDe:compiler:4.0.0'    // new version 1.5.2 has some multi dex issue    deBUGAPI 'com.squareup.leakcanary:leakcanary-androID:1.5.1'    releaseAPI 'com.squareup.leakcanary:leakcanary-androID-no-op:1.5.1'}repositorIEs {    mavenCentral()}apply plugin: 'com.Google.gms.Google-services'

电视功能build.gradle

apply plugin: 'com.androID.feature'apply plugin: 'kotlin-androID'apply plugin: 'kotlin-android-extensions'androID {    compileSdkVersion 26    buildToolsversion "26.0.1"    defaultConfig {        minSdkVersion 23        targetSdkVersion 26        versionCode 1        versionname "1.0"        testInstrumentationRunner "androID.support.test.runner.AndroIDJUnitRunner"    }    buildTypes {        release {            MinifyEnabled false            proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.pro'        }    }}dependencIEs {    implementation filetree(dir: 'libs',include: ['*.jar'])    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"    implementation project(':base')    testImplementation 'junit:junit:4.12'    androIDTestImplementation 'com.androID.support.test:runner:1.0.0'    androIDTestImplementation 'com.androID.support.test.espresso:espresso-core:3.0.0'}

项目build.gradle

// top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {    ext.kotlin_version = '1.1.3-2'    ext.anko_version = '0.10.1'    repositorIEs {        Google()        jcenter()    }    dependencIEs {        classpath 'com.androID.tools.build:gradle:3.0.0-beta4'        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"        classpath 'com.Google.gms:Google-services:3.1.0'        // NOTE: Do not place your application dependencIEs here; they belong        // in the indivIDual module build.gradle files    }}allprojects {    repositorIEs {        Google()        jcenter()    }}task clean(type: Delete) {    delete rootProject.buildDir}

NetComponent.kt

@Component(modules = arrayOf(AppModule::class,NetModule::class))interface NetComponent {    fun inject(activity: MainActivity)}

apt在apt目录中生成dagger类,但是现在没有这样的dagger生成类,即使我在整个项目目录中搜索.

我发现它没有生成DaggerNetComponent类,因为编译时也没有错误.有谁知道可能是什么问题?

解决方法 您的模块是即时应用功能模块.而且看起来kapt还不支持那些.

我无法用源代码支持这个,但这应该有效:

>功能模块

>图书馆模块dagger kapt

将所有内容从功能模块移动到库模块.然后使功能模块依赖于库模块.

图书馆模块确实支持kapt.

This sample project在Instant App Feature模块中使用Dagger和Kapt,它开箱即用.您的项目设置必须存在其他问题,这与Dagger或注释处理无关.

通过Instant App Codelab并确保你没有误解任何事情.

然后原来的答案应该有效.

原始答案

使用kapt而不是annotationProcessor配置.如:

kapt "androID.arch.lifecycle:compiler:1.0.0-Alpha9"kapt 'com.Google.dagger:dagger-compiler:2.11'kapt 'com.github.bumptech.glIDe:compiler:4.0.0'

如果您正在使用数据绑定,请添加以下内容:

kapt "com.androID.databinding:compiler:3.0.0-beta4"

使用不同的构建插件版本时,不要忘记更新版本.

Kotlin插件没有获取annotationProcessor依赖项,我们必须使用kapt依赖项.

最后,要使用最新版本的Kotlin注释处理器,请将它放在模块的build.gradle顶部:

apply plugin: 'kotlin-kapt'

Kotlin对com.androID.feature模块的支持是added in Kotlin 1.1.4,确保你至少使用它.

总结

以上是内存溢出为你收集整理的android – Kapt在Instant app功能模块中不生成类全部内容,希望文章能够帮你解决android – Kapt在Instant app功能模块中不生成类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131164.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存