"dependencies": {
"@mc/mcrn-bridge": "x.x.x",
}
复制代码
2.执行npm install安装mcrn-bridge
Android端接入流程
1.在Setting.gradle中加入
include ':mcrn-bridge'
project(':mcrn-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/@mc/mcrn-bridge/android')
复制代码
2.在项目根目录的build.gradle中的添加如下内容
allprojects {
repositories {
//正式版的maven地址
maven { url 'http://mvn.sprucetec.com/nexus/content/repositories/releases/' }
//SNAPSHOT 的maven地址
maven { url 'http://mvn.sprucetec.com/nexus/content/repositories/snapshots/' }
}
}
复制代码
3.在App build.gradle 中 做如下操作
3.1在defaultConfig中添加
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
android{
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
}
}
复制代码
3.2 在dependencies中加入
api project(':mcrn-bridge')
api('com.meicai.android:router_api:1.0')
annotationProcessor('com.meicai.android:router_compiler:1.0')
复制代码
4.在APP的Application中添加如下内容
4.1在Application的Oncreate内添加
MCRouter.init(this);
MCRNBridge.init(getReactNativeHost());
复制代码
4.2在getPackage中添加 new MCRNReactPackage()
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
...
new MCRNReactPackage()
...
);
}
复制代码
5.在APP的Mainfest.xml中添加
<activity
android:name="com.meicai.mcrn_bridge.activity.MCReactActivity"
android:screenOrientation="portrait" />
复制代码
到此,接入就完成了,开始使用吧。
使用说明
Android原生端使用说明
1.如果项目有基类BaseActivity,只需在BaseActivity中添加如下内容
1.1在BaseActivity类中添加
protected abstract String setRouterPath();
复制代码
1.2在BaseActivity的onCreate中添加
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String path = setRouterPath();
AppManagerUtils.getInstance().addActivity(path, this);
}
复制代码
1.3 在BaseActivity的onDestroy中添加
@Override
protected void onDestroy() {
super.onDestroy();
AppManagerUtils.getInstance().finishActivity(this);
}
复制代码
1.4添加完成后所有继承BaseActivity的类都会重写setRouterPath()方法
@Override
protected String setRouterPath() {
return "xxx";
}
复制代码
需要在该方法中返回当前页面的路径,方便将该Activity加入栈中,目的是方便RN端回退到特定路径的页面,比如当前打开页面为A-B-C-D
B端路径为"/home/b",则RN端可以根据跳转到"/home/b"这个路径,也就是回退到B页面,同时将C、D页面销毁。
2.如果Android端APP没有公共的BaseActivity,则需要在每个页面Oncreate 和onDestory中加入如下内容
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AppManagerUtils.getInstance().addActivity("xxx", this);
}
@Override
protected void onDestroy() {
super.onDestroy();
AppManagerUtils.getInstance().finishActivity(this);
}
复制代码
注意:上边的xxx是指该页面的路径,每个页面都有一个唯一的路径,用户需要手动填写,确保每个Activity的路径唯一。
3.Fragment 如何添加路径
3.1,可以通过new MCReactFragment得到fragment
MCReactFragment fragment = MCReactFragment.newInstance(this, mReactInstanceManager, "example", "/Example", "{}", Uuid.getInstance().getUid());
复制代码
3.2,可以继承MCReactFragment,并重写getMainComponentName()、getPath()、getQuery()、getViewId()方法
public class SecondFragment extends MCReactFragment {
private String viewId;
@Override
public String getMainComponentName() {
return "mcrn";
}
@Override
public String getPath() {
return "/home/main";
}
@Override
public String getQuery() {
return "{}";
}
@Override
public String getViewId() {
if (TextUtils.isEmpty(viewId)) {
viewId = Uuid.getInstance().getUid();
}
return viewId;
}
}
复制代码
4.Android端如何通过Activity路径打开Activity
4.1在需要跳转的Activity顶部添加@Route("/xxx/xxx")
注意:xxx是指该页面路径。注意,路径需要设置两级以上,并且以/开头
@Route(path = "/home/first")
public class FirstActivity extends BaseActivity {
...
}
复制代码
4.2Android 端可以通过该路径打开该页面
MCRouter.getsInstance().build("/home/first").navigation();
复制代码
https://juejin.im/post/5d1462c3f265da1b6836ce16