ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

友盟多渠道打包,2021Android大厂面试真题

2021-12-28 18:02:18  阅读:172  来源: 互联网

标签:outputFile 2021Android 真题 gradlew wandoujia Build 版本 assemble 友盟


android {

productFlavors {

xiaomi {}

_360 {}

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

baidu {}

wandoujia {}

}

productFlavors.all {

flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]

}

}

很简单清晰有没有?直接执行 ./gradlew assembleRelease , 然后就可以静静的喝杯咖啡等待打包完成吧。

assemble结合Build Variants来创建task


上一篇博客介绍了 assemble 这个命令,会结合 Build Type 创建自己的task,如:

  • ./gradlew assembleDebug

  • ./gradlew assembleRelease

除此之外 assemble 还能和 Product Flavor 结合创建新的任务,其实 assemble 是和 Build Variants 一起结合使用的,而 Build Variants = Build Type + Product Flavor , 举个例子大家就明白了:

如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:

  • ./gradlew assembleWandoujiaRelease

如果我们只打wandoujia渠道版本,则:

  • ./gradlew assembleWandoujia

此命令会生成wandoujia渠道的Release和Debug版本

同理我想打全部Release版本:

  • ./gradlew assembleRelease

这条命令会把Product Flavor下的所有渠道的Release版本都打出来。

总之,assemble 命令创建task有如下用法:

  • **assemble**: 允许直接构建一个Variant版本,例如assembleFlavor1Debug。

  • **assemble**: 允许构建指定Build Type的所有APK,例如assembleDebug将会构建Flavor1Debug和Flavor2Debug两个Variant版本。

  • **assemble**: 允许构建指定flavor的所有APK,例如assembleFlavor1将会构建Flavor1Debug和Flavor1Release两个Variant版本。

完整的gradle脚本


最后福利大放送,来一份我在项目中使用的完整的gradle文件配置:

apply plugin: ‘com.android.application’

def releaseTime() {

return new Date().format(“yyyy-MM-dd”, TimeZone.getTimeZone(“UTC”))

}

android {

compileSdkVersion 21

buildToolsVersion ‘21.1.2’

defaultConfig {

applicationId “com.boohee.*”

minSdkVersion 14

targetSdkVersion 21

versionCode 1

versionName “1.0”

// dex突破65535的限制

multiDexEnabled true

// 默认是umeng的渠道

manifestPlaceholders = [UMENG_CHANNEL_VALUE: “umeng”]

}

lintOptions {

abortOnError false

}

signingConfigs {

debug {

// No debug config

}

release {

storeFile file("…/yourapp.keystore")

storePassword “your password”

keyAlias “your alias”

keyPassword “your password”

}

}

buildTypes {

debug {

// 显示Log

buildConfigField “boolean”, “LOG_DEBUG”, “true”

versionNameSuffix “-debug”

minifyEnabled false

zipAlignEnabled false

shrinkResources false

signingConfig signingConfigs.debug

}

release {

// 不显示Log

buildConfigField “boolean”, “LOG_DEBUG”, “false”

minifyEnabled true

zipAlignEnabled true

// 移除无用的resource文件

shrinkResources true

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

signingConfig signingConfigs.release

applicationVariants.all { variant ->

variant.outputs.each { output ->

def outputFile = output.outputFile

if (outputFile != null && outputFile.name.endsWith(’.apk’)) {

// 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk

def fileName = “boohee_vKaTeX parse error: Expected group after '_' at position 28: …ig.versionName}_̲{releaseTime()}_${variant.productFlavors[0].name}.apk”

output.outputFile = new File(outputFile.parent, fileName)

}

}

}

}

}

// 友盟多渠道打包

productFlavors {

wandoujia {}

_360 {}

baidu {}

xiaomi {}

tencent {}

taobao {}

}

productFlavors.all { flavor ->

flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]

}

}

dependencies {

compile fileTree(dir: ‘libs’, include: [’*.jar’])

compile ‘com.android.support:support-v4:21.0.3’

compile ‘com.jakewharton:butterknife:6.0.0’

}

标签:outputFile,2021Android,真题,gradlew,wandoujia,Build,版本,assemble,友盟
来源: https://blog.csdn.net/k186____5189/article/details/122199241

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有