Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Android component architecture

NotificationsYou must be signed in to change notification settings

android-component/AndroidComponent

Repository files navigation

Android组件化的过程和文档记录

组件化需解决的问题

  • 单独开发,单独调试,动态修改gradle配置【done】
  • 页面跳转,使用第三方ARouter【done】
  • 组件的AndroidManifest.xml,单独调试和发布阶段使用同一个配置,动态删除单独调试的主入口和应用图标。增加应用层调试模块,组件不再单独提供调试功能【done】
  • 代码隔离,项目架构向下依赖【done】
    • 应用层,依赖复合组件或基础组件,尽量不依赖基础库
    • 组件层,基础组件尽量不相互依赖,需要有依赖时,沉淀到基础层;复合组件依赖基础组件,不要依赖同层的复合组件
    • 基础层,provider依赖代理库和基础库,代理库依赖基础库
  • 资源冲突问题,开发过程中规避此问题,手动添加模块前缀【done】
  • 打包AAR,要将依赖都打入包中【todo】

Gradle资源依赖方式

  • implementation 模块内使用,其他模块无法访问
  • api 参与编译和打包,都可以访问
  • compileOnly 只在编译时有效,不会参与打包
  • runtimeOnly 只参与打包,编译时不会参与,适合做代码隔离

打包AAR方案选择

目标:将多个module的aar或者jar,打包到一个aar。

  • android-fat-aar,二三年前更新过,作者不再维护,脚本无法正常运行。
  • merge-module,基于fat-aar修改,作者最近半年有更新,项目需求也是对外输出sdk。
    • 优点,可以打包依赖AAR中所有资源,满足业务需求。
    • 缺点,只支持android gradle 2.2.3,gradle wrap 3.5,不满足高版本gradle需求。
    • 测试代码在develop_fat分支
  • fat-aar,作者半年前更新过
    • 优点,支持android gradle 3.0.1的版本,gradle wrap 4.4
    • 缺点,子AAR的资源ID打进去了,但是打包到apk后,子AAR的资源ID变了,运行时找不到
  • fataar-gradle-plugin,作者一个月前更新过,Mobbeel公司开源的
    • 优点,支持3.1和3.2的gradle版本,可以打包aar和资源id,满足业务需求
    • 缺点,无法打包Manifest文件,需要增加patch修复问题
    • 测试代码在develop_fataar_plugin分支
  • all-in-one
    • 简单粗暴办法,将所有子aar拷贝到一个项目中,使用默认的aar打包方式,还是只能生成当前module的aar,不会包含子aar。
    • 不能解决将所有aar打包到一个aar的问题
  • 综述,建议使用fataar-gradle-plugin进行修改,毕竟是支持高版本的gradle,满足编译速度和业务需求。

解决合并Manifest问题

Issue

问题列表

About

Android component architecture

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp