AS 3.6 组件化 1 - 工程配置 2020/06/09

应用场景 主APP包括module1 ,module2, base-library三个模块,对module1 ,module2,组件化开发。

1、在工程跟目录创建config.gradle,用于保存共有参数配置

    ext{
    //    false :组件模式 。true : 集成模式
    isModule =true;
    android = [
            compileSdkVersion :29,
            buildToolsVersion :"29.0.2",
            minSdkVersion :19,
            targetSdkVersion :29,
            versionCode :1,
            versionName :"1.0"
    ]
    appId = ["app" :"com.lily.lsn11_router",
        "module1" :"com.lily.module1",
        "module2" :"com.lily.module2"
        ]
}

2、在工程 build.gradle 引用config.gradle 在开头写上这句

 applyfrom:"config.gradle"

3、模块app build.gradle 使用config.gradle的参数

  applyplugin:'com.android.application'
  def cfg = rootProject.ext.android
  def appId = rootProject.ext.appId
  android{
        compileSdkVersion cfg.compileSdkVersion
        buildToolsVersion cfg.buildToolsVersion
        defaultConfig{
        applicationId appId["app"]
        minSdkVersion cfg.minSdkVersion
        targetSdkVersion cfg.targetSdkVersion
        versionCode cfg.versionCode
        versionName cfg.versionName
    ...    }
  }
  dependencies{
      if(isModule){
          implementation project(path:':module1')
           implementation project(path:':module2')
        }
    }

4、module1 的build.gradle 这么写

  if (isModule) {
       applyplugin:'com.android.library'
  }else{
      applyplugin:'com.android.application'
   }
  def cfg = rootProject.ext.android
  def appId = rootProject.ext.appId
  android{
      compileSdkVersion cfg.compileSdkVersion
      buildToolsVersion cfg.buildToolsVersion
      defaultConfig{
          minSdkVersion cfg.minSdkVersion
          targetSdkVersion cfg.targetSdkVersion
          versionCode cfg.versionCode
          versionName cfg.versionName
          testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner"
          buildConfigField("boolean","isModule",String.valueOf(isModule))
          if (!isModule){
              applicationId appId["module1"]
          }
  sourceSets{
        main{
            //组件模式下 使用不同的资源文件
            if (!isModule){
                manifest.srcFile'src/main/module/AndroidManifest.xml'
                java.srcDirs'src/main/module/java','src/main/java'
            }else{
                manifest.srcFile'src/main/AndroidManifest.xml'
            }
      }
  }

module2 类似module1写法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。