美文网首页Android 开发技术分享
gradle自定义构建类型 BuildType

gradle自定义构建类型 BuildType

作者: waiwaaa | 来源:发表于2020-09-08 19:49 被阅读0次

    最近更新应用,由于应用商店审核各平台不一致,有些平台应用名必须与软著上的名称完全一致,因此要针对的多发布一个版本的包,由此接触到自定义构建类型 BuildType,发现这一块有些地方稍不注意的话会被绕进去浪费点时间。既然我这边已经花费时间了,也许接下来分享的 tips 可能会帮你节省些时间。

    BuildType的新建

    只需按正常的加在buildTypes里就可以了

    android {
      buildTypes {
          release {
           }
           debug{
           }
           midrelease{
           //这里添加一些buildType的一些属性。   
           }
     }
     }
    

    可以调用midrelease.initWith(release)来基于release来新建。
    initWith() 是 BuildType 的一项配置项,我们还可以看到上文中提到的buildConfigField其实也是一项配置项。该配置可以理解成initWith(release) 可以理解成拷贝了 release 这一构建类型的所有变量,因为我们知道,每一个构建类型都有一些默认的变量,例如debuggablezipAlignEnabled等,使用该配置就免去为新增的构建类型定义所有的变量。

    问题

    如果你的应用是单moudle,那么像上面那一步就可以了。但如果是多moudle的话,那就会提示在引用的moudle中找不到对应的buildType了。怎么办呢?当然是每在moudle里都加一遍就可以了。什么,moudle太多了,有没有简单点的方法呢?这个还真有。

    buildTypes 中定义 matchingFallbacks,可以指定在子模块中没找到对应的构建类型时要加载哪个类型

    //app 模块下的 build.gradle 中
    buildTypes {
        debug {       
        }
    
        release {        
        }
    
        midrelease.initWith(release) 
        midrelease {
            matchingFallbacks = [ 'debug', 'release']
        }
    }
    

    当执行gradle assemblePre 构建 midrelease 版本时,而某个子模块又没有定义 midrelease 版本,则会按照你指定的 matchingFallbacks 从前往后依次寻找,直到类型匹配。productFlavors也可以指定matchingFallbacks

    详细的BuildType属性可以参考Android Studio BuildType 构建类型

    相关文章

      网友评论

        本文标题:gradle自定义构建类型 BuildType

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