然后在每个Module中对应修改成如下代码:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId “com.demo.myapplication”
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’
}
}
}
dependencies {
implementation fileTree(dir: “libs”, include: [“*.jar”])
implementation “com.android.support:appcompat-v7:$rootProject.ext.supportLibVersion”
implementation “com.android.support.constraint:constraint-layout:$rootProject.ext.constraintLibVersion” // 注意这里是双引号
}
3. 设置模块是否可以单独运行
在根目录的gradle.properties末尾添加
是否需要单独编译, 是否是application,true为application,false为library
isApplicationModule1=false
isApplicationModule2=false
isApplicationModule3=false
然后在module中的build.gradle中改变 application 还是 library
(1) 区分 application 还是 library
if (isApplicationModule1.toBoolean()){
apply plugin: ‘com.android.application’
}else{
apply plugin: ‘com.android.library’
}
(2) 增加 applicationId
defaultConfig {
if (isApplicationModule1.toBoolean()){
applicationId “com.demo.myapplication.module1”
}
}
(3) AndroidManifest 启动入口
sourceSets {
main {
if (isApplicationModule1.toBoolean()) {
manifest.srcFile ‘src/main/module/AndroidManifest.xml’
} else {
manifest.srcFile ‘src/main/AndroidManifest.xml’
}
}
}
4. 在主 app module 中引入其他Module
要注意的一点是每个组件如果是独立运行的话,那它是不能作为依赖库供app模块使用的,所以在app模块下的build.gradle文件中需要进行依赖判断
if (!isApplicationModule1.toBoolean()){
implementation project(‘:module1’)
}
if (!isApplicationModule2.toBoolean()){
implementation project(‘:module2’)
}
if (!isApplicationModule3.toBoolean()){
implementation project(‘:module3’)
}
implementation project(‘:common’)
在模块 Module中引入 common module
implementation project(‘:common’)
至此通过修改配置,每个Module就可以单独运行。
5. 引入Arouter
由于需要模块之间的解耦,平时的Intent跳转需要导包,而Arouter引入之后,就能在跳转的同时不用导包。
集成Arouter
(1) 引入依赖
common中添加
api(“com.alibaba:arouter-api:$rootProject.ext.arouterLibVersion”) { exclude group: ‘com.android.support’ }
annotationProcessor “com.alibaba:arouter-compiler:$rootProject.ext.arouterAnnotationLibVersion”
在每个Module下都需要添加注解
annotationProcessor “com.alibaba:arouter-compiler:$rootProject.ext.arouterAnnotationLibVersion”
(2) 每个引入Arouter的Module的build.gradle中加入下面代码
defaultConfig {
…
//arouter
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
}
(3) 在Application中进行初始化
if (isDebug) {
ARouter.openLog();
ARouter.openDebug();
}
ARouter.init(this);
(4)使用Arouter跳转
定义路由
@Route(path = “/app/main”)
public class MainActivity extends AppCompatActivity {
…
}
跳转路由
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
学习路线+知识梳理
花了很长时间,就为了整理这张详细的知识路线脑图。当然由于时间有限、能力也都有限,毕竟嵌入式全体系实在太庞大了,包括我那做嵌入式的同学,也不可能什么都懂,有些东西可能没覆盖到,不足之处,还希望小伙伴们一起交流补充,一起完善进步。
这次就分享到这里吧,下篇见。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-nmgCa4Lh-1712608304681)]
学习路线+知识梳理
花了很长时间,就为了整理这张详细的知识路线脑图。当然由于时间有限、能力也都有限,毕竟嵌入式全体系实在太庞大了,包括我那做嵌入式的同学,也不可能什么都懂,有些东西可能没覆盖到,不足之处,还希望小伙伴们一起交流补充,一起完善进步。
这次就分享到这里吧,下篇见。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-ZxrSMVCQ-1712608304682)]