美文网首页
android studio:多版本,多渠道编译

android studio:多版本,多渠道编译

作者: 花花是男神 | 来源:发表于2018-05-11 13:51 被阅读0次

    proguard混淆

    一般release发布版本是需要启用混淆的,这样别人反编译之后就很难分析你的代码,而我们自己开发调试的时候是不需要混淆的,所以debug不启用混淆。对release启用混淆的配置如下:

    android {

        buildTypes {

            release {

                minifyEnabled true//是否启动混淆

                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            }

      }

    }

    多版本,多渠道编译

    构建变量= 构建类型 + product flavor

    其中 构建类型一般是 debug与 release, 也可自定义构建类型

    Product flavor有产品的味道的意思。

    可为每个 product flavor 单独配置资源文件 layout 与 drawable.如果与main有冲突编译优先会取flavor.   value会与 main合并。 也可为 每个 falvor 单独创建目录java文件,在flavor下单独存在,各个flavor互不冲突,但不可与main有冲突,否则编译不过。

    资源优先级(覆盖原则:从左到右 优先级逐步降低):

    Buildtype -------->product falvor ------->main---->库中的资源

    可在每个 product flavor中 自定义

    versionCode

    versionName

    会覆盖 默认defaultConfig中的 versionCode与versionName

    另外,可以在product flavor中 自定义资源变量,根据构建变量,编译出apk后,运行后就可以取出该资源变量的值。根据该变量值,华数apk 做出相应的UI调整,以及业务规则修改。 product flavor的buildConfigField属性也可以解决该问题,编译出apk后,可以获得静态变量 BuildConfig.channel的值

    声明如下:

    buildConfigField "String", "channel", name

    例子如下:

    flavorDimensions("channel", "region")

    productFlavors {

    //渠道名

            hangzhou { dimension "region"

                resValue("string", "region", "China")}

            zhejiang { dimension "region"

                resValue("string", "region", "chongqing")}

    //版本名

            tcl {

                dimension "channel"

                versionCode 1234

                versionName "AAA-1234"

                resValue("string", "versionType", "TCL")

            } 

    对于jar包多版本区别打包,实例如下:

    tclCompile files('libs/***.jar')

    chuangweiHCompile files('libs/***.jar')

    chuangweiLCompile files('libs/***.jar')

    changhongCompile files('libs/***.jar')

    buildTypes

    buildTypes {

      release {

            debuggable true    minifyEnabled true //启用Proguard    

            shrinkResources true //是否清理无用资源,依赖于minifyEnabled    

            zipAlignEnabled true //是否启用zipAlign压缩    

            signingConfig signingConfigs.release

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'  }

      debug {

            debuggable true    

            minifyEnabled false  //不启用Proguard    

            shrinkResources false //是否清理无用资源,依赖于minifyEnabled    

            zipAlignEnabled false //是否启用zipAlign压缩    

            signingConfig signingConfigs.debug

      }

    }

    注意:

      1 .minifyEnabled 会对代码进行混淆和压缩,shrinkResources 会对比R文件对无用资源进行删除

      2.minifyEnabled 设置为true时shrinkResources 的设置才会生效

    相关文章

      网友评论

          本文标题:android studio:多版本,多渠道编译

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