MainModule是写mainactivity中viewpager+三个按钮的那个,它是个module
commonsdk是用来归类底层library(utillibrary、widgetlibrary,baselibrary)的,它是个module
commonsdk拿它放color属性,图片资源,等
baselibrary 基本上所有要用的依赖都放这里,但前面不能用implement,都用api,api就相当于public的意思,implement它就是private的意思
在gradle.properties配置
# 开启并行编译
org.gradle.parallel=true
# 开启编译守护进程
org.gradle.daemon=true
# 标识模块的运行模式 true标识作为Module,否则表示作为Applicaiton运行
IS_MODULE = true
MIN_SDK_VERSION=16
COMPILE_SDK_VERSION=28
TARGET_SDK_VERSION=28
在项目的buildgradle写
project.ext {
compileSdkVersion = COMPILE_SDK_VERSION.toInteger()
minSdkVersion = MIN_SDK_VERSION
targetSdkVersion = TARGET_SDK_VERSION
isModule = IS_MODULE.toBoolean()
}
在app的buildgradle写
if (isModule) {
implementation project(':MainModule')
implementation project(':commonsdk')
}
//这个没有快捷键,也提示不出来
compileSdkVersion rootProject.ext.compileSdkVersion
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
在baselibrary的buildgradle
// ARouter 使两个功能模块相互通信
api 'com.alibaba:arouter-api:1.4.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
先改mainmodule的buildgradle(其余的功能模块的buildegradle,commonsdk的buildegradle)
if (isModule) {
apply plugin: 'com.android.library'
} else {
apply plugin: 'com.android.application'
}
mainmodule的buildgradle
if (isModule) {
api project(':commonsdk')
implementation project(':ModuleChitchat')
implementation project(':ModuleCommunity')
implementation project(':ModuleInformation')
implementation project(':ModuleMine')
}
其余的功能模块的buildegradle
//Android模块化开发
implementation project(':commonsdk')
api project( ':baselibrary')
api project( ':utillibrary')
api project( ':widgetlibrary')
在配置APP里的buildgradle baselibrary的buildgradle,MainModule commonsdk utillibrary和widgetlibrary的buildegradle,功能模块的buildegradle
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath = true
arguments = [ AROUTER_MODULE_NAME : project.getName() ]
}
}
再在commonsdk模块 其他功能模块和MainModule添个依赖
//Android模块化开发
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
在baselibrary里创建baseapplication类
public class BaseApplication extends Application {
public static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
}
public static Context getContext() {
return mContext;
}
}
在utillibrary、widgetlibrary建个manager
public class UtilManager {
private static Context mContext;
public static void init(Context mContext) {
mContext= mContext;
}
public static Context getContext() {
return mContext;
}
}
public class WidgetManager {
private static Context mContext;
public static void init(Context mContext) {
mContext= mContext;
}
public static Context getContext() {
return mContext;
}
}
在commonsdk在配一个application,继承baseapplication
public class CommonApplication extends BaseApplication {
@Override
public void onCreate() {
super.onCreate();
UtilManager.init(mContext);
WidgetManager.init(mContext);
}
}
在app里写一个application,继承CommonApplication
public class MyApplication extends CommonApplication {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = this;
//今日头条初始化
AutoSizeinit.AutoSizeinit(this);
//Fresco
Fresco.initialize(this);
}
}
保证APP的buildgradle里有applicationId 别的APPID都注释了
applicationid就只有APP的buildgradle有,别的module和library都注释了(别的buildgradle没有applicationid,因为它是library)
编译一下!!看看是否有错
在app的myapplication中写
ARouter.openDebug();
ARouter.openDebug();
ARouter.init(this);
在你app下写个activity测试一下是否能在模块之间跳转
ARouter.getInstance().build("/main/home").navigation();