Android | Harmony | iOS | 中文官网
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:
For more detailed documentation, please check the project wiki:Wiki
| 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" 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); } 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); } 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(); } } # 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>; } 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 - 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
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
link to Releases:Github Releases
TheRouter is licensed under the Apache License 2.0: LICENSE.

