HuolalaTech
hll-wp-therouter-android
Kotlin

A framework for assisting in the renovation of Android componentization(帮助 App 进行组件化改造的动态路由框架)

Last updated Jul 8, 2026
1.3k
Stars
151
Forks
6
Issues
0
Stars/day
Attention Score
89
Language breakdown
No language data available.
Files click to expand
README

TheRouter: Android componentization solution


Hex.pm Language Wiki

Android | Harmony | iOS | 中文官网

A. Features

TheRouter core functions have four functionalities:

  • Demo:
demo gif

B. Introduction

For more detailed documentation, please check the project wikiWiki

B1. Gradle configuration

|module| apt | router | plugin | |---|----------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------| |version| apt | router | plugin |

// root build.gradle 
classpath 'cn.therouter:plugin:1.3.2'

// app module apply plugin: 'therouter'

// dependencies kapt "cn.therouter:apt:1.3.2" implementation "cn.therouter:router:1.3.2"

B2. initialization library

The library contains the automatic initialization function inside,link to: Single module automatic initialization; therefore, there's no need for any initialization code. However, it is recommended that you set the Debug environment according to your business settings to view log information.

@Override
protected void attachBaseContext(Context base) {
    TheRouter.setDebug(true or false);
    super.attachBaseContext(base);
}

B3. page parameter injection

Called in the onCreate() method of Activity or Fragment: (It is recommended to do it directly in BaseActivity(BaseFragment))

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TheRouter.inject(this);
}

B4. page navigation

For the meaning of the annotation @Route, please check the documentation: Page Navigation

@Route(path = "http://therouter.com/home", action = "action://scheme.com",
        description = "second page", params = {"hello", "world"})
public class HomeActivity extends BaseActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TheRouter.build("Path")
            .withInt("intValue", 12345678)
            .withString("str123Value", "传中文字符串")
            .withBoolean("boolValue", true)
            .withLong("longValue", 123456789012345L)
            .withChar("charValue", 'c')
            .withDouble("double", 3.14159265358972)
            .withFloat("floatValue", 3.14159265358972F)
            .navigation();
    }
}

C. proguard rules configuration

# need add for Fragment page route

-keep public class * extends android.app.Fragment

-keep public class * extends androidx.fragment.app.Fragment

-keep public class * extends android.support.v4.app.Fragment

-keep class androidx.annotation.Keep -keep @androidx.annotation.Keep class {;} -keepclassmembers class * { @androidx.annotation.Keep *; } -keepclasseswithmembers class * { @androidx.annotation.Keep <methods>; } -keepclasseswithmembers class * { @androidx.annotation.Keep <fields>; } -keepclasseswithmembers class * { @androidx.annotation.Keep <init>(...); } -keepclasseswithmembers class * { @com.therouter.router.Autowired <fields>; }

D. Build and Debug

D1. project module description

TheRouter
  ├─app
  │   └──sample
  ├─business-a
  │   └──modular business demo
  ├─business-b
  │   └──modular business demo
  ├─business-base
  │   └──modular business demo
  │
  ├─apt
  │   └──Annotation processor tool code
  │
  ├─plugin
  │   └──Gradle plugin
  │
  └─router
      └──library code

D2. run Project

  • Open local.properties and declare the modules you want to debug. For example, if you want the source code to debug the apt module, you can declare apt=true
  • sync Gradle change

D3. plugin source code debugging

plugin debugging is special; you'll need to modify the module name to enable plugin debugging.

  • Modify the plugin folder name to buildSrc (Case sensitive)
  • Remove classpath reference in root build.gradle
  • sync Gradle change

E. Change Log

link to Releases:Github Releases

F. Author

HUOLALA mobile technology team

G. LICENSE

TheRouter is licensed under the Apache License 2.0: LICENSE.

© 2026 GitRepoTrend · HuolalaTech/hll-wp-therouter-android · Updated daily from GitHub