美文网首页Android开发
Android应用Small组件化实例

Android应用Small组件化实例

作者: chsasaw | 来源:发表于2016-08-16 18:26 被阅读189次

    Small插件化方案适用于将一个APK拆分为多个公共库插件、业务模块插件的场景。

    • 完美内置所有插件支持内置于宿主包中

    • 高度透明插件编码、布局编写方式与独立应用开发无异
      插件代码调试与整包开发无异

    • 极致剪裁对插件分离所有一切能分离的公共代码、资源

    • 无缝链接通过设定URI,宿主、本地化应用插件、本地化web插件、在线网页,以及任何自定义的插件之间能够相互调起与传递参数

    • 跨平台目前已支持AndroidiOS以及html5插件。并且三者之间可以通过同一套Javascript接口进行通信。

    工程build.gradle中引入small,目前已发布gradle插件1.0.0-beta7版本,small组件1.1.0-beta4.

    buildscript {    
        ...
        dependencies {        
              classpath 'com.android.tools.build:gradle:2.1.2'        
              classpath 'net.wequick.tools.build:gradle-small:1.0.0-beta7'      
              .... 
        }
    }
    ...
    apply plugin: 'net.wequick.small'
    
    small {    
          aarVersion = '1.1.0-beta4'
    }
    

    工程结构包括宿主工程app,业务模块插件app.*,以及lib.*公共库插件工程。如:

    工程目录结构
    • 1.app 宿主工程
    宿主工程结构

    宿主工程中仅仅应用入口HostApp,启动首屏展示LoadingActivity(不包含任何网络加载逻辑,广告图片加载逻辑放在业务插件app.launch中)。build.gradle中包含signingConfigs、buildTypes等,插件公共依赖可放到dependencies中,不会打包到插件中。

    bundle.json

    记得在assets中bundle.json文件配置插件包名和路由rules,否则small将找不到对应插件。

    • 2.app.业务模块*

    业务模块之间互相独立,通过small来管理跳转和fragment的获取。业务模块包含自己的APIService(网络请求使用lib.net,底层是retroifit+okhttp)、UI(Activity、Fragment、View、Adapter)、Model、Application。

    Small Activity跳转

    Small.openUri("main", LaunchActivity.this);
    

    Small获取Fragment

    BaseFragment fragment = (BaseFragment)Small.createObject("fragment-v4", "community/community", MainActivity.this);
    
    • 3.lib.模块*

    lib模块的引用最好在宿主工程中也保留一份,这样不会打包到插件中,可以使最后只保留一份引用。Account也可以做成lib,供其他app插件调用。

    lib.*模块

    lib.style中包含通用的动画、颜色、规格、尺寸、主题。

    lib.utils放置一些通用help、utils,依赖style(dialog主题)。

    lib.config 应用的配置信息,版本号、包名、系统信息等。

    lib.constant 暂时放置一些常量、枚举、key、id等。

    lib.analytics统计API

    lib.net 网络请求框架,retroifit+okhttp,处理token错误等全局错误。

    lib.base放置Activity、Application、Fragment等的基类。

    lib.router Small的uri特殊处理

    • 4.其他第三方模块和aar

    其他依赖最好通过私有maven仓库管理。

    jni_plugin用来存放一些so文件,以及jni接口。

    jsbridge--webview和native交互的一个库,参考
    https://github.com/gzsll/WebViewJavascriptBridge

    相关文章

      网友评论

        本文标题:Android应用Small组件化实例

        本文链接:https://www.haomeiwen.com/subject/csbpsttx.html