在项目的build.gradle添加,阿里的路由插件ARoute
项目的build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
//可以在项目中,引入其他的gradle的文件,并可以使用
//让build.gradle比较干净整洁
apply from: "config.gradle"
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
//添加gradle的插件
classpath 'com.android.tools.build:gradle:2.3.1'
//ARouter插件依赖,添加ali的ARouter插件
classpath "com.alibaba:arouter-register:1.0.2"
}
}
。。。。。
}
在使用的主app模块的build.gradle添加
android {
compileSdkVersion 25
buildToolsVersion rootProject.ext.android['buildToolsVersion']
defaultConfig {
。。。。。。
//java.lang.RuntimeException: ARouter::Compiler >>> No module name
//需要加入这句话,否则会报错
//需要加入,ARouter才能找到,组件的目标
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
}
}
dependencies {
//主app需要引入,组件的模块
//模块跳转需要引入
if (!isModule.toBoolean()) {
compile project(':appmoduledemo')
}
//加入aroute库
compile rootProject.ext.dependencies['arouter-api']
//设置这个,目的是为了把ARouter.getInstance.....编译时生成字节码
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
}
在主App中,java代码中,Application需要初始化ARouter,一般在onCreate
ARouter.init(mApplication);
在需要触发组件跳转,
//当前的path = /appmoduledemo/ModuleMainActivity
//就是组件中的Activity的@Router的path
ARouter.getInstance().build("/appmoduledemo/ModuleMainActivity").navigation(this, new NavCallback() {
@Override
public void onFound(Postcard postcard) {
Log.e("NavCallback", "页面找到了");
}
@Override
public void onLost(Postcard postcard) {
Log.e("NavCallback", "页面找不到了");
}
@Override
public void onArrival(Postcard postcard) {
Log.e("NavCallback", "页面跳转完成");
}
@Override
public void onInterrupt(Postcard postcard) {
Log.e("NavCallback", "页面被拦截了");
}
});
在组件的module中build.gradle添加
isModule设置在项目文件gradle.properties
isModule=false可以完成跳转
isModule=true,作为单独app使用
//设置是当前是单独app
//还是模块的库
//isModule设置在gradle.properties
if(isModule.toBoolean()) {
apply plugin: 'com.android.application'
}else{
apply plugin: 'com.android.library'
}
android {
compileSdkVersion 25
buildToolsVersion "29.0.3"
defaultConfig {
。。。。。。
//java.lang.RuntimeException: ARouter::Compiler >>> No module name
//需要加入这句话,否则会报错
//需要加入,ARouter才能找到,组件的目标
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
}
。。。。。。
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//加入aroute库
compile rootProject.ext.dependencies['arouter-api']
//设置这个,目的是为了把@Router编译时生成字节码
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
}
在组件模块中的ARouter的设置
//与主app的ARouter的path保持一致
@Route(path = "/appmoduledemo/ModuleMainActivity")
public class ModuleMainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.module_activity_main);
}
}
完成上述的操作,可以实现组件化的跳转