hll-wp-therouter-android
Android | Harmony | iOS | 中文官网
A. Features
TheRouter core functions have four functionalities:
- Page Navigation(Navigator)
- Cross-module dependency injection(ServiceProvider)
- Single module automatic initialization (FlowTaskExecutor)
Enable client apps to remotely load method dynamically (ActionManager)
Demo:

B. Introduction
For more detailed documentation, please check the project wiki:Wiki
B1. Gradle configuration
| module | apt | router | plugin |
|---|---|---|---|
| version |
// root build.gradle
classpath 'cn.therouter:plugin:1.3.0'
// app module
apply plugin: 'therouter'
// dependencies
kapt "cn.therouter:apt:1.3.0"
implementation "cn.therouter:router:1.3.0"
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("str_123_Value", "传中文字符串")
.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.propertiesand declare the modules you want to debug. For example, if you want the source code to debug theaptmodule, you can declareapt=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
pluginfolder name tobuildSrc(Case sensitive) - Remove
classpathreference in rootbuild.gradle - sync Gradle change
E. Change Log
link to Releases:Github Releases
F. Author

G. LICENSE
TheRouter is licensed under the Apache License 2.0: LICENSE.
