1.1 配置Dagger2依赖关系

目前android应用的代码管理大多采用Gradle来做,但是在集成Dagger2的过程中,Gradle的版本与Dagger2的依赖方式存在一定的相关性,在网上一些介绍集成Dagger2的资料中,大多采用“com.neenbedankt.gradle.plugins:android-apt:1.4”来作为Dagger2的辅助依赖工具,而实际上对稍高一些版本的Gradle来说,要继续采用apt的方式对接Dagger会显得比较困难,而且对Gradle来说,也不建议再继续使用apt,而是推荐使用“annotationProcessor”的方式。

我们接下来在进行环境配置的时候也采用使用“annotationProcessor”的方式。

Android工程在通过Gradle进行代码管理的过程中,往往会使用2类build.gradle文件来进行依赖管理,其中一类是工程(project)级别的gradle配置,一类是App级别的gradle配置,分别位于工程根路径和工程的app路径下。

工程级build.gradle配置:

buildscript {repositories {google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:3.5.2'classpath 'org.greenrobot:eventbus-annotation-processor:3.1.1' //增加依赖annotationProcessor}
}
​
allprojects {repositories {google()jcenter()}
}
​
task clean(type: Delete) {delete rootProject.buildDir
}

注,重点关注注释提示的代码配置

app级build.gradle配置:

apply plugin: 'com.android.application'
​
android {compileSdkVersion 30buildToolsVersion "31.0.0"defaultConfig {applicationId "com.tc.app.dagger2"minSdkVersion 24targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility = 1.8targetCompatibility = 1.8}
}
​
dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'androidx.appcompat:appcompat:1.0.2'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'implementation 'com.google.android.material:material:1.0.0'
​// 开始增加Dagger2依赖关系annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.1.1'//增加依赖annotationProcessorannotationProcessor 'com.google.dagger:dagger-compiler:2.40'// 指定注解处理器compileOnly 'org.glassfish:javax.annotation:10.0-b28'//添加android缺失的部分javax注解implementation 'com.google.dagger:dagger:2.40'// 指定依赖版本// Dagger2依赖关系添加结束testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.0'androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

1.2 对Dagger2配置环境进行简单验证

1.2.1 新建Android项目,并配置Dagger2

新建一个简单的Android工程,并参考1.1章节中的配置介绍,对工程进行Dagger2依赖关系配置(此过程省略——应该能搞定哦)

1.2.2 编写验证代码

首先,编写等待进行依赖注入的业务代码(MyBusinessApiService)

package com.tc.app.dagger2.di;
​
import android.util.Log;
​
/*** 真实的业务处理服务** @author min.weixm* @version $Id: MyBusinessApiService.java, v 0.1 2021/11/12 14:35 min.weixm Exp $*/
public class MyBusinessApiService {public void register(){Log.i("----------------------------MyBusinessApiService--------------------","MyBusinessApiService");}
}

真实的业务处理类,通过打印日志的方式来验证Dagger2配置环境是否可以正常工作。

接下来,配置业务处理服务的实际实例化处理工具(MyBusinessApartModule)

package com.tc.app.dagger2.di;
​
import dagger.Module;
import dagger.Provides;
​
/*** 在这里对实际进行业务处理的组件进行实例化(如,对MyBusinessApiService进行实例化处理)** @author min.weixm* @version $Id: MyBusinessApartModule.java, v 0.1 2021/11/12 14:38 min.weixm Exp $*/
@Module
public class MyBusinessApartModule {@Providespublic MyBusinessApiService provideMyBusinessApiService(){return new MyBusinessApiService();}
​
}

然后,声明我们的容器对接接口(MyApartComponent)

package com.tc.app.dagger2.di;
​
import com.tc.app.dagger2.MainActivity;
​
import dagger.Component;
​
/*** 不真正提供实例,真实实例由 MyBusinessApartModule 提供** @author min.weixm* @version $Id: MyApartComponent.java, v 0.1 2021/11/12 14:40 min.weixm Exp $*/
@Component(modules = {MyBusinessApartModule.class})
public interface MyApartComponent {void inject(MainActivity activity);
}

注:完成本操作后,需要唤醒Dagger2进行对接业务处理自动生成代码,因此,需要对工程执行一次build操作,这时,Dagger2会完成相应的代码自动生成动作

最后,我们做依赖注入的业务对接(MainActivity)

package com.tc.app.dagger2;
​
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
​
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
​
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.tc.app.dagger2.di.DaggerMyApartComponent;
import com.tc.app.dagger2.di.MyBusinessApiService;
​
import javax.inject.Inject;
​
public class MainActivity extends AppCompatActivity {
​/** 通过依赖注入的业务服务实例 */@InjectMyBusinessApiService myBusinessApiService;
​@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);
​FloatingActionButton fab = findViewById(R.id.fab);fab.setOnClickListener((view) ->Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show());
​//初始化环境,并完成功能调用DaggerMyApartComponent.create().inject(this);this.myBusinessApiService.register();}
​@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}
​@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();
​//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}
​return super.onOptionsItemSelected(item);}
}

验证结果,在模拟器中run下app,观察运行日志:

I/----------------------------MyBusinessApiService--------------------: MyBusinessApiService
D/OpenGLRenderer: HWUI GL Pipeline
D/: HostConnection::get() New Host Connection established 0xa71e4380, tid 3631
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 1
W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...

顺利得到业务组件的打印日志,说明本次Dagger2配置验证成功。

Dagger2集成之环境配置及简单验证相关推荐

  1. mmdetection 环境配置与简单测试(mmrotate同理)

    mmdetection 环境配置与简单测试(mmrotate同理) 环境配置 annaconda环境安装 创建新的虚拟环境(此处参考官方) 代码结构分析讲解 接下来详细介绍自己数据集的训练 环境配置 ...

  2. golang开发环境配置以及简单使用

    golang开发环境配置以及简单使用 编译golang程序 go build命令的使用 http://c.biancheng.net/view/120.html 使用go build, 将main.g ...

  3. 40系笔记本(可不联网激活)深度学习生产力(环境配置和简单训练测试)

    40系笔记本深度学习.转码生产力(环境配置和简单训练测试)这里写自定义目录标题 深度学习环境准备 CUDA.CUDNN版本问题 torch版本问题 其他软件版本的安装命令 训练测试代码地址 关于Lin ...

  4. CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建

    CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建 实验内容: 1. 初始环境的优化 2. DNS服务器的搭建和postfix域名解析 3. Postfix服务器安装 ...

  5. java集成ogre_ogre3d环境配置 SDK安装配置及简单事例教程

    SDK安装以及编译 1.下载SDK,地址如下:http://www.ogre3d.org/download/sdk 2.安装SDK,直接解压到相应目录,如D:/ogreSDK 3.我用的是1.8版本, ...

  6. Java-Maven(四):Eclipse集成Maven环境配置

    一般maven都需要集成到IDE上使用的,而不是单独的使用,常见的maven可集成IDE:eclipse.IntelliJ IDEA.但这里就只学习eclipse集成maven的基础上,进行maven ...

  7. tomcat 外网访问不了_免费云服务器/jdk环境配置/Tomcat简单配置

    关于本文:     最近准备做一期jdk环境配置教程,准备做一个实机演示,于是想到用云服务器来为大家演示,顺路写上如何申领一个月免费服务器,以及如何让外网访问自己的云服务器,这这里我依旧使用Tomca ...

  8. ogre3d环境配置与简单程序示例

    SDK安装以及编译 1.下载SDK,地址如下 http://www.ogre3d.org/download/sdk 2.安装SDK,直接解压到相应目录,如D:/ogreSDK 3.我用的是1.8版本, ...

  9. Golang入门,安装与环境配置,简单代码入门

    目录 一:安装包下载和环境配置 1.1软件下载和安装 1.2环境变量配置 1.3环境配置验证 二:完成HelloWorld程序 2.1编码 2.2执行 三:开发IDE工具软件安装和配置 3.1下载和安 ...

最新文章

  1. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)
  2. Replace函数语法
  3. Download interrupted: URL not found.
  4. 网站做好后不能用手机浏览吗_企业几年前制作的网站大部分都应该被淘汰掉
  5. 动态规划和摩尔投票法
  6. LeetCode题解之Reorder List
  7. Java的新项目学成在线笔记-day14(四)
  8. Jira filter subscribe issues
  9. 初学者python笔记(类的继承与多态---详解)
  10. 恶意软件利用合法的代码签名证书横行Windows 系统
  11. 如何选择深度学习框架 TensorFlow/Torch/Mxnet/Theano
  12. html中渐变怎么写,css3如何实现文字渐变?
  13. 我上传的CSDN资源无法使用的处理方法
  14. VMware虚拟机无法识别U盘解决方案
  15. framework7 入门知识
  16. 2023年【安徽省安全员C证】免费试题及安徽省安全员C证证考试
  17. FSAA (FullSceneAnti-aliasing)全屏抗锯齿技术
  18. 红警ol服务器维护中1003,【图片】红警ol心灵终结3单位全面解析_红警ol吧_百度贴吧...
  19. 【AGC012E】 Camel and Oases ST表+状压dp
  20. Prism 模板包,快捷创建Prism程序

热门文章

  1. sublime_text 3安装Emmet时出现PyV8警告
  2. 首先下载大白菜制作U盘启动盘,重装系统后开机就直接进入PE界面重装系统
  3. 服务器管理口虚拟kvm切换服务器,1个本地/1个远程用户控管 8端口KVM over IP切换器远程电脑管理方案兼具虚拟媒体功能 (1920 x 1200)...
  4. 计算机老师报警三声,台式机报警三声怎么样解决
  5. python3 多线程操作数据库锁机制问题
  6. java实现从url路径中下载pdf文档到本地
  7. 10个Scratch热门作品(2)
  8. 各厂家rtsp地址格式如下:
  9. 如何使用万能地图下载器下载矢量建筑边界
  10. 目标检测算法——人脸识别数据集汇总(附下载链接)