现在为了推广产品,会在多个渠道应用市场发布应用,为了统计不同渠道的数据,需要在应用中表明渠道,如果一个一个去修改打包效率会很低。AS为我们提供了简便的方法,可以多渠道打包,一次打包所有的渠道包。

1. AS 2.x多渠道打包

(1) AndroidManifest中增加节点

   ...       ...

(2) 项目app module的build.gradle的android中

android {   ....    //多渠道打包    productFlavors {      yingyongbao {}      huawei {}      baidu {}           xiaomi {}      qh360 {}         }    productFlavors.all {      flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]    }   ....}

2. AS 2.x自定义打包APK名称

android {   ....   //自定义打包时apk名称   applicationVariants.all { variant ->     variant.outputs.each { output ->     def fileName = "${variant.versionName}_${variant.productFlavors[0].name}_release.apk"     def outFile = output.outputFile     if (outFile != null && outFile.name.endsWith('.apk')) {       output.outputFile = newFile(outFile.parent, fileName)     }     }   ....}

最后打包之后apk放在项目 app/build/outputs/apk 文件夹下,apk名称:版本名_渠道名.apk

3. AS 3.x多渠道打包

(1) AndroidManifest中增加节点(和2.x一样,没有变化)

   ...       ...

(2) 项目app module的build.gradle的android中

多版本打包

android {   ....    //多渠道打包    flavorDimensions "tier","minApi"    productFlavors {      yingyongbao {        dimension "tier"      }      huawei {        dimension "tier"      }      baidu {        dimension "tier"      }           xiaomi {        dimension "minApi"      }      qh360 {        dimension "minApi"      }         }    productFlavors.all {      flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]    }   ....}

单版本打包

android {  ...  defaultConfig {    ...   flavorDimensions "code"  }  productFlavors {     yingyongbao {}     huawei {}     baidu {}          xiaomi {}     qh360 {}       }  productFlavors.all {     flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]  }  ...}

AS 3.0后grade添加了flavorDimensions属性,用来控制多个版本的代码和资源,缺失会报错

4. AS 3.x自定义打包APK名称

android {   ....   //自定义打包时apk名称   applicationVariants.all { variant ->     variant.outputs.all { output ->// each 改为 all     def fileName = "${variant.versionName}_${variant.productFlavors[0].name}_release.apk"     def outFile = output.outputFile     if (outFile != null && outFile.name.endsWith('.apk')) {       outputFileName = fileName // output.outputFile 改为 outputFileName      }     }   ....}

APK名称:版本名_渠道名.apk

以上就是AS 2.x和AS 3.x多渠道打包、自定义打包APK名称对比区别,大家可根据自己的AS版本来选用相应的方法,希望对大家有所帮助!如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多相关文章

  1. Android中设置theme无效
  2. android attr 属性 类型
  3. Android中java.lang.ClassNotFoundException: ***.**** in loade
  4. Android常用的多渠道打包方式整理(不断更新...)
  5. Android自定义属性时format选项( )
  6. Android(安卓)高仿QQ 好友分组列表
  7. ionic android app 签名处理
  8. 在Android(安卓)Studio中使用androidannotations(安卓注解)的方法(
  9. android-项目结构详解

随机推荐

  1. Android(安卓)Jetpack Compose 之 Text
  2. Android(安卓)Stagefright MPEG4Extracto
  3. Android(安卓)简单的网络变化监听器
  4. Android(安卓)Studio多个Module依赖同一
  5. android通过号码查询联系人姓名
  6. Android(安卓)Fastboot源码分析
  7. Android(安卓)手机相机自动对焦
  8. textview之url
  9. Android中从服务器端向客户端传数据
  10. android 实现一直震动和间歇震动