android的ARouter的组件化跳转

本文详细介绍如何在Android项目中使用阿里ARouter插件实现组件化开发与跳转。包括在build.gradle中配置插件、设置组件路径及注解处理器选项、初始化ARouter等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目的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);
    }
}

完成上述的操作,可以实现组件化的跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值