支持AGP8的Android路由库URouter

URouter

看到 AGP8 的transform字节码方式的改变,对 注解处理和路由的原理研究后,
出于兴趣 实现了一个支持AGP8的路由框架:
URouter: https://github.com/classops/URouter

功能

  • 支持 AGP8
  • @Param 参数注入,支持 setter 参数设置(kotlin属性)
  • 支持ActivityResult方式,启动和处理返回结果
  • 路由拦截处理
  • 路由回调
  • Parcelable Serialization Array 参数的序列化
  • Uri 方式解析
  • 支持增量编译

使用方法

  1. 项目顶级build.gradle添加
plugins {
    id 'com.android.application' version '7.1.1' apply false
    id 'com.android.library' version '7.1.1' apply false
    id 'io.github.classops.urouter' version '1.0.1' apply false
}
  1. app模块的build.gradle添加插件和依赖:
plugins {
    id "kotlin-kapt"
    id 'io.github.classops.urouter'
}

dependencies {
    kapt "io.github.classops.urouter:router-compiler:1.0.1"
    implementation "io.github.classops.urouter:router:1.0.1"
}
  1. 项目中使用
// Application 里初始化
Router.get().init(this)

// 在需要路由的 Activity/Fragment 上添加注解
@Route(path = "/test")

// 跳转方法
Router.get().build("/test")
    .withString("toast", "hello world")
    .navigate(this)

URouter 支持 ActivityResult 方式 跳转页面处理结果

private lateinit var launcher: ActivityResultLauncher<UriRequest>

override fun onCreate(savedInstanceState: Bundle?) {
    launcher = Router.get().registerForResult(
        this,
        ActivityResultContracts.StartActivityForResult(),
    ) {
        // 返回结果
    }
}

// 通过UriRequest构建,启动路由页面
private fun start() {
    launcher.launch(
        UriRequest.Builder("/test")
            .withString("toast", "hello world")
            .build()
    )
}

文档

  • https://developer.android.com/build/releases/gradle-plugin-api-updates
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值