美文网首页Studio
android不同项目依赖不同UI

android不同项目依赖不同UI

作者: 游侠_6fb7 | 来源:发表于2020-07-07 16:25 被阅读0次

    一个aar包多个项目依赖,每个项目ui资源不一样,代码逻辑一样,需要编译不通的项目依赖不同的UI资源

    实现方案

    1. 采用sourceSets方式
    2. 采用module方式

    sourceSets具体使用方式

    1. 目录结构
      ###########目录结构描述
      ├── app
      │ ├── libs
      │ └── src
      │ ├── main
      │ │ ├── assets
      │ │ ├── java
      │ │ ├── res-xxx
      │ │ ├── res-yyy
      │ │ └── res
      │ └── test
    2. 如上图目录结构,新建文件夹如:
      res-xxx 目录和res同级
    3. 定义pname,从外层打包时传入,如:gradle assembleDebug -Ppname=xxx
    //定义 适配不通项目UI需要引用的资源id,从命令中获取项目名称,获取不到采用默认res
    def resDir = project.hasProperty('pname') ? "res-" + pname : "res"
    
    1. 设置编译时,所使用的res
    //适配不通项目UI
        sourceSets {
            main {
                res.srcDirs = ['src/main/' + resDir]
            }
        }
    

    采用module依赖方式

    1. 目录结构
      ###########目录结构描述
      ├── app
      │ ├── libs
      │ └── src
      │ ├── main
      │ │ ├── assets
      │ │ ├── java
      │ │ └── res
      │ └── test
      └── resource
      │ ├── xxxresource
      │ │ ├── libs
      │ │ └── src
      │ │ └── main
      │ └── yyyresource
      │ ├── libs
      │ └── src
      │ └── main
    2. 如上图目录结构,resource文件夹如:
      创建 library module,两个module packagename相同如:都设置为:com.test.resource
      xxxresource
      yyyresource
    3. 定义pname,从外层打包时传入,如:gradle assembleDebug -Ppname=xxx
    //定义 适配不通项目UI需要引用的资源id,从命令中获取项目名称,获取不到采用默认res
    def resDir = project.hasProperty('pname') ? "res-" + pname : "res"
    
    1. app项目中依赖
    println('-----------resDir----000--->' + resDir)
    api project(":resource:" + resDir + "resource")
    

    两种依赖方式优缺点

    1. sourceSets方式
      优点:
      在同一个目录里面避免创建过多module
      缺点:
      res-xxx目录中无法预览layout.xml,无法看到效果,只能编译后看效果
      如果有自定义view,自定义view依赖不同的aar怎么办?继续修改build,编译时动态拉依赖aar?耦合度过高
    2. 采用module依赖方式
      module方式 一套UI创建一个resource lib
      耦合度低,自定义view,或aar放入自己的module中
      可扩展性强,后期需求,java类的实现不通,也可在此module中扩展

    相关文章

      网友评论

        本文标题:android不同项目依赖不同UI

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