1. 环境:Android Studio 3.5.3
  2. 项目简介:app依赖lib1,lib1依赖lib2
  3. 效果

  4. 关键配置
    1. 工程 build.gradle
      ext.dimensions = [
              'app' : "app",
              'lib1': "lib1",
              'lib2': "lib2",
      ]
    2. lib2:
      android {
          ......
      
          defaultConfig {
              ......
              flavorDimensions dimensions.lib2
          }
          productFlavors {
              lib2_pro {
                  dimension dimensions.lib2
              }
      
              lib2_dev {
                  dimension dimensions.lib2
              }
      
              lib2_online {
                  dimension dimensions.lib2
              }
          }
      }
    3. lib1:
      android {
          ......
          defaultConfig {
              ......
              flavorDimensions dimensions.lib1
          }
          ......
          productFlavors {
              lib1_pro {
                  dimension dimensions.lib1
                  // 第一个参数为依赖库的flavorDimensions, 
                  // 第二个参数为选中这个flavor后,依赖库的默认flavor
                  // 后面的参数也需要,不要的话,修改为非默认的flavor会出现问题
                  missingDimensionStrategy dimensions.lib2, "lib2_pro", "lib2_dev", "lib2_online"
              }
              lib1_dev {
                  dimension dimensions.lib1
                  missingDimensionStrategy dimensions.lib2, "lib2_dev", "lib2_pro", "lib2_online"
              }
              lib1_online {
                  dimension dimensions.lib1
                  missingDimensionStrategy dimensions.lib2, "lib2_online", "lib2_pro", "lib2_dev"
              }
      
          }
      }
      
      dependencies {
          ......
          implementation project(path: ':lib2')
      }
    4. app :
      android {
          ......
          defaultConfig {
              ......
              flavorDimensions dimensions.app
          }
      
          productFlavors {
              pro {
                  // 第一个参数为依赖库的flavorDimensions, 
                  // 第二个参数为选中这个flavor后,依赖库的默认flavor
                  // 后面的参数也需要,不要的话,修改为非默认的flavor会出现问题
                  missingDimensionStrategy dimensions.lib1, "lib1_pro", "lib1_dev", "lib1_online"
              }
              dev {
                  missingDimensionStrategy dimensions.lib1, "lib1_dev", "lib1_pro", "lib1_online"
              }
              online {
                  missingDimensionStrategy dimensions.lib1, "lib1_online", "lib1_pro", "lib1_dev"
              }
      
          }
      }
      
      dependencies {
          ......
          implementation project(path: ':lib1')
      }

    项目地址

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐