接入Android
MADP开发平台提供了组件化架构工程创建,支持多人、多团队协同开发,模块单独打包调试;同时支持普通工程以依赖库的形式接入。
- 组件化架构工程接入
- 普通工程接入
组件化架构工程接入
组件化架构工程创建
在主项目引入编译脚本
在根目录下gradle.properties
文件中,增加属性:
mainmodulename=app
其中mainmodulename是项目中的host工程,一般为app
在根目录的build.gradle
中增加配置
buildscript {
dependencies {
classpath 'com.github.jimu:build-gradle:1.3.3'
}
}
为每个组件引入依赖库,如果项目中存在basiclib等基础库,可以统一交给basiclib引入
api 'com.github.jimu:componentlib:1.3.3'
拆分组件为module工程
在每个组件的工程目录下新建文件gradle.properties文件,增加以下配置:
isRunAlone=true
debugComponent=sharecomponent
compileComponent=sharecomponent
三个属性分别对应是否单独调试、debug模式下依赖的组件,release模式下依赖的组件。
应用组件化编译脚本
在组件和host的build.gradle都增加配置
apply plugin: 'com.dd.comgradle'
注意:不需要再引用com.android.application或者com.android.library
同时增加以下extension配置:
combuild {
applicationName = 'com.luojilab.reader.runalone.application.ReaderApplication'
isRegisterCompoAuto = true
}
组件化架构工程使用
单独调试运行
添加单独调试运行的Application以及Androidmanifest.xml文件
在gradle中指定参与单独调试运行的Application
combuild {
applicationName = 'com.pactera.madp.alone.AloneApplication'
isRegisterCompoAuto = false
}
可以看到组件已经可以单独调试运行
集成调试运行
集成组件路由,在每个组件的gradle文件中依赖
api 'com.github.jimu:router-anno-compiler:1.0.1'
组件之间的UI跳转是基于标准的URL来实现的,所以需要在组件中注册host:
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [host: "sharecomponent"]
}
}
}
为目标页面添加注解
@RouteNode(path = "/main", desc = "组件主页")
public class MainActivity extends AppCompatActivity {
在组件module的生命周期类IApplicationLike中注册反注册组件。
public class H5ApplicationLike implements IApplicationLike {
UIRouter uiRouter = UIRouter.getInstance();
@Override
public void onCreate() {
uiRouter.registerUI("sharecomponent");
}
@Override
public void onStop() {
uiRouter.unregisterUI("sharecomponent");
}
}
组件之间的跳转,支持三种跳转方式
// Bundle方式跳转
private void goToShareActivityWithBundle() {
Bundle bundle = new Bundle();
bundle.putString("bookName", "Gone with the Wind");
UIRouter.getInstance().openUri(getActivity(), "DDComp://sharecomponent/main", bundle);
}
// URl方式跳转
private void goToShareActivityWithUri() {
Author author = new Author();
author.setName("Barack Obama");
author.setCounty("New York");
final String URI_LEGAL = "DDComp://sharecomponent/main?bookName=NYTIME&author=";
UIRouter.getInstance().openUri(getActivity(),
URI_LEGAL
+ JsonService.Factory.getInstance().create().toJsonString(author), null);
}
// startActivityForResult 方式
private void goToShareActivityForResult() {
Author author = new Author();
author.setName("Margaret Mitchell");
author.setCounty("USA");
UIRouter.getInstance().openUri(getActivity(),
"DDComp://share/shareBook?bookName=Gone with the Wind&author="
+ JsonService.Factory.getInstance().create().toJsonString(author), null, 7777);
}
将参与集成打包的组件module目录下的gradle.properties文件中isRunAlone修改为false;将主module目录下的gradle.properties文件中isRunAlone修改为true
// 主module
isRunAlone=false // 独立运行
debugComponent=sharecomponent // 参与编译的组件
compileComponent=sharecomponent
代码示例
下载 Android 代码示例,在本地 Android Studio 中编译组件,并安装 .apk
文件到您的 Android 移动设备中。要了解详细信息,查看 获取代码示例。
普通工程接入
普通工程接入只需要依赖相应的组件库即可,可参考组件版本。