# alibaba/arouter

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/alibaba-arouter).**

14,476 stars · 2,606 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/alibaba/ARouter
- awesome-repositories: https://awesome-repositories.com/repository/alibaba-arouter.md

## Topics

`android` `componentization` `dependency-injection` `interceptor` `navigation` `router`

## Description

ARouter is a framework for Android applications designed to decompose monolithic apps into smaller, independent modules. It provides a URL-based routing system that enables navigation between decoupled components and modules without requiring direct class dependencies.

The framework includes a navigation interceptor to handle authentication, redirection, and custom activity animations during page transitions. It also features a service injector that manages dependencies across modules using an inversion of control pattern and interface-based injection.

The toolset covers inter-module navigation, parameter injection from URL strings into page fields, and route fallback strategies for missing destinations. It supports dynamic route registration for plugin architectures and provides automation for generating route maps and documentation.

## Tags

### Part of an Awesome List

- [App Routing and Navigation](https://awesome-repositories.com/f/awesome-lists/devtools/app-routing-and-navigation.md) — Provides a URL-based routing system for navigating between screens and activities in Android apps.
- [URL Routing](https://awesome-repositories.com/f/awesome-lists/devtools/url-routing.md) — Implements a URL-based navigation system to decouple components and modules within Android applications.

### Development Tools & Productivity

- [Metadata Generators](https://awesome-repositories.com/f/development-tools-productivity/metadata-generators.md) — Provides automated generation of routing configuration metadata during the build process to eliminate runtime reflection.

### Mobile Development

- [Android Dependency Management](https://awesome-repositories.com/f/mobile-development/android-dependency-management.md) — Manages service dependencies across Android modules using an interface-based inversion of control system.
- [Componentization Tools](https://awesome-repositories.com/f/mobile-development/componentization-tools.md) — Provides a framework for breaking monolithic Android applications into smaller independent modules with centralized routing.
- [Componentization Workflows](https://awesome-repositories.com/f/mobile-development/componentization-workflows.md) — Enables the decomposition of monolithic Android apps into smaller, independent modules to improve build times.
- [Navigation & Routing](https://awesome-repositories.com/f/mobile-development/navigation-routing.md) — Enables navigation between decoupled app modules using URL-based routing without direct class dependencies. ([source](https://github.com/alibaba/arouter#readme))
- [Navigation Interceptors](https://awesome-repositories.com/f/mobile-development/navigation-routing/navigators/navigation-interceptors.md) — Implements a pipeline of pluggable interceptors to handle authentication and redirection during navigation.

### Networking & Communication

- [Automatic Parameter Mapping](https://awesome-repositories.com/f/networking-communication/url-parameter-parsers/automatic-parameter-mapping.md) — Parses standard URL strings to automatically pass data and parameters into target page fields. ([source](https://github.com/alibaba/arouter#readme))

### Software Engineering & Architecture

- [Annotation-Based Route Mapping](https://awesome-repositories.com/f/software-engineering-architecture/annotation-based-route-mapping.md) — Implements a static lookup table linking URL paths to target classes via compile-time annotation processing.
- [Component Decoupling Patterns](https://awesome-repositories.com/f/software-engineering-architecture/component-decoupling-patterns.md) — Employs an inversion of control pattern to manage shared components across separate Android modules.
- [Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection.md) — Removes hard dependencies between components by injecting required services across modules. ([source](https://github.com/alibaba/arouter#readme))
- [Interface-Based Discovery](https://awesome-repositories.com/f/software-engineering-architecture/service-discovery-patterns/interface-based-discovery.md) — Uses an inversion of control pattern to resolve shared service dependencies via interface lookups.
- [Reflection-Based Unmarshallers](https://awesome-repositories.com/f/software-engineering-architecture/reflection-based-unmarshallers.md) — Maps URL parameter keys to annotated member variables using Java reflection at runtime.
- [Plugin-Based Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures.md) — Supports the dynamic registration of routes to allow the loading of optional or external feature modules.

### Web Development

- [Navigation Interception](https://awesome-repositories.com/f/web-development/browser-integration-utilities/browser-infrastructure/service-worker-controls/service-worker-libraries/interception-logic/navigation-interception.md) — Implements global logic such as authentication and analytics tracking during page transitions.
- [Page Field Injections](https://awesome-repositories.com/f/web-development/routing-systems/routing/parameter-handling-utilities/route-parameter-captures/page-field-injections.md) — Implements automatic injection of URL parameters directly into target page fields via annotations. ([source](https://github.com/alibaba/ARouter/blob/master/README_CN.md))
- [Dynamic Route Registration](https://awesome-repositories.com/f/web-development/dynamic-route-registration.md) — Allows adding routing information at runtime to support optional or external feature modules. ([source](https://github.com/alibaba/arouter#readme))
- [Route Fallback Strategies](https://awesome-repositories.com/f/web-development/routing-strategies/route-fallback-strategies.md) — Specifies global or local degradation behaviors to handle cases where a destination route cannot be found. ([source](https://github.com/alibaba/ARouter/blob/master/README_CN.md))

### User Interface & Experience

- [Navigation Animations](https://awesome-repositories.com/f/user-interface-experience/navigation-animations.md) — Allows configuration of custom entry and exit animations during page transitions. ([source](https://github.com/alibaba/ARouter/blob/master/README_CN.md))
