Dagger 2 和 android Studio:工作但看不到生成的 类
Dagger 2 and android Studio: working but can't see generated classes
我正在尝试在 Android Studio 项目中使用 Dagger 2。我使用了 CoffeeMaker 示例。但是,我已经设法构建并运行该应用程序:
- 我没有成功看到生成的代码。
- 如果我调试,我也看不到它。
- 此外 DaggerCoffeeApp_Coffee 标记为芦苇(无法解析符号)
我的 gradle 个文件是:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
和
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mateuyabar.android.dagger2test"
minSdkVersion 22
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false // ignoring some references from dagger-compiler
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'javax.inject:javax.inject:1'
compile 'javax.annotation:javax.annotation-api:1.2'
compile 'com.google.dagger:dagger:2.0'
provided 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
}
谢谢
使用 Hugo Visser 的Android-Apt plugin:
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
buildscript {
repositories {
mavenCentral()
}
dependencies {
// the latest version of the android-apt plugin
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
}
android {
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mateuyabar.android.dagger2test"
minSdkVersion 22
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false // ignoring some references from dagger-compiler
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'javax.inject:javax.inject:1'
compile 'javax.annotation:javax.annotation-api:1.2'
compile 'com.google.dagger:dagger:2.0'
apt 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
}
还要注意 apt 'com.google.dagger:dagger-compiler:2.0'
行。这应该使生成的源对 AS 可见。
我偶然发现了同样的问题,在我的例子中,我正在测试新的 classes 并试图将它们分别注入我的主 class,在这种情况下,Dagger 不会从中生成任何 DaggerComponents工厂。
简单地说,记住将进入一个 class 的所有注入放在一个模块和一个组件中。 您不能将一个以上的 DaggerComponent 注入一个 class。 此外,这些组件的意义在于聚合注入 classes
我正在尝试在 Android Studio 项目中使用 Dagger 2。我使用了 CoffeeMaker 示例。但是,我已经设法构建并运行该应用程序: - 我没有成功看到生成的代码。 - 如果我调试,我也看不到它。 - 此外 DaggerCoffeeApp_Coffee 标记为芦苇(无法解析符号)
我的 gradle 个文件是:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
和
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mateuyabar.android.dagger2test"
minSdkVersion 22
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false // ignoring some references from dagger-compiler
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'javax.inject:javax.inject:1'
compile 'javax.annotation:javax.annotation-api:1.2'
compile 'com.google.dagger:dagger:2.0'
provided 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
}
谢谢
使用 Hugo Visser 的Android-Apt plugin:
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
buildscript {
repositories {
mavenCentral()
}
dependencies {
// the latest version of the android-apt plugin
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
}
android {
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.mateuyabar.android.dagger2test"
minSdkVersion 22
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false // ignoring some references from dagger-compiler
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'javax.inject:javax.inject:1'
compile 'javax.annotation:javax.annotation-api:1.2'
compile 'com.google.dagger:dagger:2.0'
apt 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
}
还要注意 apt 'com.google.dagger:dagger-compiler:2.0'
行。这应该使生成的源对 AS 可见。
我偶然发现了同样的问题,在我的例子中,我正在测试新的 classes 并试图将它们分别注入我的主 class,在这种情况下,Dagger 不会从中生成任何 DaggerComponents工厂。
简单地说,记住将进入一个 class 的所有注入放在一个模块和一个组件中。 您不能将一个以上的 DaggerComponent 注入一个 class。 此外,这些组件的意义在于聚合注入 classes