gpt4 book ai didi

android - 为什么 dagger 2 生成的组件在项目重建时被删除?

转载 作者:行者123 更新时间:2023-12-03 05:12:36 24 4
gpt4 key购买 nike

当在组件上使用生成的“Dagger”前缀的代码没有被注释掉时,就会出现问题。如果将其注释掉,则会生成生成的 Dagger 2 文件。

图书模块

@Module
public class BookModule {

@Provides
public Book providesBook(){
return new Book();
}

}

图书组件
@Component(modules = BookModule.class)
public interface BookComponent {

void inject(MainActivity activity);

public Book getBook();

}

主要应用
public class MainApplication extends Application {

public static BookComponent mBookComponent;

@Override
public void onCreate() {
super.onCreate();
mBookComponent = DaggerBookComponent.builder().bookModule(new BookModule()).build();
}
}

Build.gradle(应用程序)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

构建.gradle(项目)
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'

android {
compileSdkVersion 24
buildToolsVersion "25.0.2"

defaultConfig {
applicationId "com.example.bryan.myapplication"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
jackOptions{
enabled = true
}
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:support-v4:24.2.0'
compile group: 'com.google.dagger', name: 'dagger', version: '2.10-rc1'
apt group: 'com.google.dagger', name: 'dagger-compiler', version: '2.10-rc1'
compile group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3'

}

错误堆栈跟踪
ERROR: C:\bin\AndroidProjects\MyApplication\app\src\main\java\com\example\lloyd\myapplication\MainApplication.java:12.26: DaggerBookComponent cannot be resolved

com.android.jack.api.v01.CompilationException: Failed to compile
at com.android.jack.api.v01.impl.Api01ConfigImpl$Api01CompilationTaskImpl.run(Api01ConfigImpl.java:144)
at com.android.builder.core.AndroidBuilder.convertByteCodeUsingJackApis(AndroidBuilder.java:1931)
at com.android.build.gradle.tasks.JackTask.doMinification(JackTask.java:148)
at com.android.build.gradle.tasks.JackTask.access$000(JackTask.java:73)
at com.android.build.gradle.tasks.JackTask$1.run(JackTask.java:112)
at com.android.builder.tasks.Job.runTask(Job.java:51)
at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41)
at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:223)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.android.jack.frontend.FrontendCompilationException: Failed to compile
at com.android.jack.Jack.buildSession(Jack.java:1053)
at com.android.jack.Jack.run(Jack.java:540)
at com.android.jack.api.v01.impl.Api01ConfigImpl$Api01CompilationTaskImpl.run(Api01ConfigImpl.java:124)
... 8 more
mBookComponent = DaggerBookComponent.builder().bookModule(new BookModule()).build();

上面的代码在 MainApplication 中,这就是问题所在,如果我将其注释掉,它会完全重建。但是当我保持原样时,它得到一个错误,说“DaggerBookComponent”无法解析,此时生成的 DaggerBookComponent 被删除,导致无法解析

最佳答案

当您进行重建时,构建系统会查看 Dagger 模块和组件类并生成使所有 dagger 工作的实际类。当您进行正常的增量构建时,它不会(它假设旧版本仍然很好)。这意味着当你重建时,如果你的程序或你的 Dagger 组件/模块中有一些错误,它将无法重建这些文件。

所以基本上,你的 Dagger 设置中可能(尽管不一定)有一个错误。当您修复它时,您将不再遇到问题。

关于android - 为什么 dagger 2 生成的组件在项目重建时被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42477625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com