[关闭]
@wuseal 2018-04-10T06:06:16.000000Z 字数 3138 阅读 754

艾瑞Android组件化框架使用说明

组件化 APP


构建脚本配置

配置仓库地址

  1. allprojects {
  2. repositories {
  3. google()
  4. jcenter()
  5. maven { url 'https://jitpack.io' }
  6. maven{
  7. url "http://dpapi.irs01.com:8081/nexus/content/repositories/internal/"
  8. credentials {
  9. username = 'username'
  10. password = 'password'
  11. }
  12. }
  13. maven {
  14. url 'http://dpapi.irs01.com:8081/nexus/content/groups/public/'
  15. }
  16. }
  17. }

把账号密码替换为自己的账号密码

添加依赖包

在代码工程的build.gradle文件中的dependencies内添加如下依赖

  1. implementation 'cn.com.iresearch.android:componentizationsupporter:0.1'

构建自己的组件

一.在工程中实例化一个组件类

就以实现toast自己组件状态Ok提示为例,如下同步实现。

  1. class MyComponent :IComponent {
  2. override fun execute(commandLine: String, vararg commandLineArgs: Any): Any {
  3. if (commandLine == "toast") {
  4. val context =commandLineArgs[0] as Context
  5. Toast.makeText(context,"I am Ok",Toast.LENGTH_LONG).show()
  6. return true
  7. }
  8. return false
  9. }
  10. override fun executeAsync(commandLine: String, vararg commandLineArgs: Any, callback: (response: Any) -> Unit) {
  11. }
  12. override fun getComponentName(): String {
  13. return "Demo.MyComponent"
  14. }
  15. }

二.注册自己工程的组件

在组件module的AndroidManifest文件中的Application标签中添加组件注册信息

  1. <application>
  2. <meta-data
  3. android:name="IRComponentMyComponent"
  4. android:value="android.iresearch.com.cn.mycomponent.MyComponent" />
  5. </application>

注意:
name 对应的声明值必须以IRComponent开头,且尽量保证唯一性,避免与其它组件声明Key的冲突。
value 对应组件的全路径类名信息,用来反射生成实例组件对象用的。

三.把自己的工程组件上传到私有的maven仓库中

在module的build.gradle中添加上传脚本

  1. plugins {
  2. id "com.github.dcendents.android-maven" version "2.0"
  3. }
  1. group = "cn.com.iresearch.android.component"
  2. version = "1.0"
  3. android {...}
  1. project(':module的名字').name = '新的库名字'

比如:

  1. project(':library').name = 'mycomponent'
  1. uploadArchives {
  2. repositories.mavenDeployer {
  3. repository(url: "http://dpapi.irs01.com:8081/nexus/content/repositories/internal/") {
  4. authentication(userName: "username", password: "password")
  5. }
  6. }
  7. }

至此,自己的组件化工程就可以被其它人使用了。

组件的使用

就以刚才上传的组件的使用为例

配置仓库地址,同上

在工程总的构建脚本中添加如下代码

  1. allprojects {
  2. repositories {
  3. google()
  4. jcenter()
  5. maven { url 'https://jitpack.io' }
  6. maven{
  7. url "http://dpapi.irs01.com:8081/nexus/content/repositories/internal/"
  8. credentials {
  9. username = 'username'
  10. password = 'password'
  11. }
  12. }
  13. maven {
  14. url 'http://dpapi.irs01.com:8081/nexus/content/groups/public/'
  15. }
  16. }
  17. }

引入组件框架及组件

在app工程中的build.gralde脚本中的dependencies添加如下依赖

  1. implementation 'cn.com.iresearch.android:componentizationsupporter:0.1'
  2. implementation 'cn.com.iresearch.android.demo.component:mycomponenttest:1.0'

然后同步下构建脚本

初始化组件框架

在应用工程的Application类中执行组件框架的初始化

  1. class MyApplication: Application() {
  2. override fun onCreate() {
  3. super.onCreate()
  4. ComponentRouter.init(this)
  5. }
  6. }

调用组件功能

按照组件提供方提供的使用说明文档方法执行相应的组件功能调用,就以刚才上传的示例组件为例,执行如下操作即可调用组件功能

  1. val component = ComponentRouter.getComponent("Demo.MyComponent")
  2. component.execute("toast",this)

如一切正常,则可以弹出I am Ok提示信息

组件工程的调试

将App module中buid.gradle文件中的依赖方式设置成直接工程依赖组件库,并按上文执行调用,则可以打包运行到设备上进行单独的组件调试及运行。
即把之前的依赖:

  1. implementation 'cn.com.iresearch.android.demo.component:mycomponenttest:1.0'

更换成

  1. implementation project(':mycomponenttest')

这种形式就可以实现边修改边运行调试了
若需要再依赖其它的组件或模块,则可以直接在app module build.gradle中添加即可。

附该Demo工程地址 Demo

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注