Android Studio-强大的gradle用5招教你多渠道打包

来源:互联网 发布:52单片机stc 编辑:程序博客网 时间:2024/04/20 11:42

第一招:使用buildTypes

buildTypes {        release {            minifyEnabled false            debuggable false            jniDebuggable false            'proguard-rules.pro'        }        debug {            debuggable true            jniDebuggable true            versionNameSuffix '.2016041601'        }    }
  • 1.在buildType中可以默认有两种模式,debug和release模式,当然你自己还可以再添加其他模式。
  • 2.下面是buildType中的常用属性

    minifyEnabled 混淆处理shrinkResources 去除无用资源signingConfig 签名proguardFiles 混淆配置applicationIdSuffix 增加APP ID的后缀versionNameSuffix 增加versionName的后缀debuggable 是否保留调试信息jniDebuggable 是否保留JNI调试信息
  • 3.还有的属性可以在属性栏里的Build–>Edit Build Types中查看

    这里写图片描述

第二招:使用productFlavors

productFlavors {        first {            applicationIdSuffix ".first"//            applicationId 'com.busterace.multichannel.first'            buildConfigField "boolean", "AUTO_UPDATES", "false"            manifestPlaceholders = [META_DATA_1 :"first_app",                                    META_DATA_2 :"first_app"]        }        second {            applicationId 'com.busterace.multichannel.second'            buildConfigField "boolean", "AUTO_UPDATES", "false"            manifestPlaceholders = [META_DATA_1 :"second_app",                                    META_DATA_2 :"second_app"]        }        third {            applicationId 'com.busterace.multichannel'            buildConfigField "boolean", "AUTO_UPDATES", "true"            manifestPlaceholders = [META_DATA_1 :"third_app",                                    META_DATA_2 :"third_app"]            signingConfig signingConfigs.release        }    }
  • 1.在属性栏Build中–>Edit Product Flavor 可以添加多种打包渠道,里面也可以配置一些属性。
    这里写图片描述
  • 2.从上图可以看出来defaultConfig也是Flavor中的一个,打包时会优先使用你选择的Flavor配置,如果没有再使用defaultConfig中的配置。
  • 3.注意:build type与product flavor 是多对多的关系,也就是说能够打六个不同类型的包,分别是
    • first_debug.apk
    • second_debug.apk
    • third_debug.apk
    • first_release.apk
    • second_release.apk
    • third_release.apk
  • 4.在java代码中使用设置的属性:当我们进行build工程的时候,android studio会自动生成BuildConfig.java文件,这样当我们需要使用时就非常方便,下面是使用代码
    • applicationId.setText("application_id:" + BuildConfig.APPLICATION_ID);

第三招:使用manifest资源占位符

  • 在AndroidManifest中有些属性需要修改,比如友盟的value,测试的与正式的是不一样的,这时候就可以使用资源占位符来替换,注意manifestPlaceholders的写法,尤其是多个的写法

    • AndroidManifest文件中

      • <meta-data android:name="meta_data_1" android:value="${META_DATA_1}"/>
        <meta-data android:name="meta_data_2" android:value="${META_DATA_2}"/>
    • app.gradle文件中的product flavor中来替换资源

      • first {
        manifestPlaceholders = [META_DATA_1 :"first_app",
        META_DATA_2 :"first_app"]
        }

第四招:使用buildConfigField

  • 在第二招里面我们已经可以配置一些属性了,但是有时候还是不能满足我们,不过还是有办法的,我们可以在flavor中使用buildConfigField自己创建想要的属性,注意:里面的三个值缺一不可
    • first {
      buildConfigField "boolean", "AUTO_UPDATES", "false"
      }
  • 使用的方法和第二招中一样,都是在BuildConfig.java中会自动生成字段,去调用就好

第五招(大招):使用资源覆盖

  • 有些资源图片我们也想做到替换怎么办,使用资源覆盖,在src文件夹下面建立对应flavor的资源文件就能实现该效果。
    • 这里写图片描述
      这里面我替换了图片和部分字符串资源

经过上面5个招数大部分要替换的都可以做到了,合理使用上面5个招数,让打包更加方便~

附录:

1.Build Variants

  • 当我们使用点击Run App时这里写图片描述
  • 我们可能不知道下载到手机上的是哪个渠道打出来的包,或者要选择自己想要的渠道去调试,可以在属性栏中Build–>Select Build Variants 这里写图片描述
  • 在这里就可以选择想要的渠道了这里写图片描述

2.flavor的那些事

  • 1.如果在Build Flavors的界面中对某个flavor进行重命名,那么在app.gradle中之前写的一些属性就会因为studio自动生成flavor而覆盖掉丢失,所以想改名字最好在gradle中修改!
  • 2.当选择了build variant,对应的flavor的图标也会有相应的变化。看下图
  • 这里写图片描述

3.签名

  • 如果想要将release版本的apk通过Run app的方式直接下载到手机上需要配置下签名文件

代码方式

    signingConfigs {       release {            storeFile file('E:/AndroidStudioProjects/MultiChannel/releaseKey.jks')            keyAlias 'release'            keyPassword '123456'            storePassword '123456'        }    }

下面是flavor的代码

    third {                signingConfig signingConfigs.release            }

也可以直接在Project Structure中设置
这里写图片描述
这里写图片描述

附上demo链接:http://download.csdn.net/detail/busterace/9493237

1 0