studio多渠道打包

简介: <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; color:rgb(85,85,85); font-family:'microsoft yahei'; font-size:15px; line-height:35px"> <span style="font-size:14p

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这事就简单了。

友盟多渠道打包

废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段:
[html]  view plain copy print ?
  1. <meta-data  
  2.     android:name="UMENG_CHANNEL"  
  3.     android:value="Channel_ID" />  
里面的 Channel_ID 就是渠道标示。我们的目标就是在编译的时候这个值能够自动变化。

第一步 在 AndroidManifest.xml 里配置 PlaceHolder
[html]  view plain copy print ?
  1. <meta-data  
  2.     android:name="UMENG_CHANNEL"  
  3.     android:value="${UMENG_CHANNEL_VALUE}" />  

第二步 在 build.gradle 设置 ProductFlavors

[java]  view plain copy print ?
  1. android {    
  2.     productFlavors {  
  3.         xiaomi {  
  4.             manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]  
  5.         }  
  6.         _360 {  
  7.             manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_360"]  
  8.         }  
  9.         baidu {  
  10.             manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]  
  11.         }  
  12.         wandoujia {  
  13.             manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]  
  14.         }  
  15.     }    
  16. }  

或者批量修改

[java]  view plain copy print ?
  1. android {    
  2.     productFlavors {  
  3.         xiaomi {}  
  4.         _360 {}  
  5.         baidu {}  
  6.         wandoujia {}  
  7.     }    
  8.   
  9.   
  10.     productFlavors.all {   
  11.         flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]   
  12.     }  
  13. }  

很简单,直接执行 ./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文件配置:

[java]  view plain copy print ?
  1. apply plugin: 'com.android.application'  
  2.   
  3. def releaseTime() {  
  4.     return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))  
  5. }  
  6.   
  7.   
  8. android {  
  9.     compileSdkVersion 21  
  10.     buildToolsVersion '21.1.2'  
  11.   
  12.   
  13.     defaultConfig {  
  14.         applicationId "com.boohee.*"  
  15.         minSdkVersion 14  
  16.         targetSdkVersion 21  
  17.         versionCode 1  
  18.         versionName "1.0"  
  19.           
  20.         // dex突破65535的限制  
  21.         multiDexEnabled true  
  22.         // 默认是umeng的渠道  
  23.         manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]  
  24.     }  
  25.   
  26.   
  27.     lintOptions {  
  28.         abortOnError false  
  29.     }  
  30.   
  31.   
  32.     signingConfigs {  
  33.         debug {  
  34.             // No debug config  
  35.         }  
  36.   
  37.   
  38.         release {  
  39.             storeFile file("../yourapp.keystore")  
  40.             storePassword "your password"  
  41.             keyAlias "your alias"  
  42.             keyPassword "your password"  
  43.         }  
  44.     }  
  45.   
  46.   
  47.     buildTypes {  
  48.         debug {  
  49.             // 显示Log  
  50.             buildConfigField "boolean""LOG_DEBUG""true"  
  51.   
  52.   
  53.             versionNameSuffix "-debug"  
  54.             minifyEnabled false  
  55.             zipAlignEnabled false  
  56.             shrinkResources false  
  57.             signingConfig signingConfigs.debug  
  58.         }  
  59.   
  60.   
  61.         release {  
  62.             // 不显示Log  
  63.             buildConfigField "boolean""LOG_DEBUG""false"  
  64.   
  65.   
  66.             minifyEnabled true  
  67.             zipAlignEnabled true  
  68.             // 移除无用的resource文件  
  69.             shrinkResources true  
  70.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
  71.             signingConfig signingConfigs.release  
  72.   
  73.   
  74.             applicationVariants.all { variant ->  
  75.                 variant.outputs.each { output ->  
  76.                     def outputFile = output.outputFile  
  77.                     if (outputFile != null && outputFile.name.endsWith('.apk')) {  
  78.                         // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk  
  79.                         def fileName = "boohee_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"  
  80.                         output.outputFile = new File(outputFile.parent, fileName)  
  81.                     }  
  82.                 }  
  83.             }  
  84.         }  
  85.     }  
  86.   
  87.   
  88.     // 友盟多渠道打包  
  89.     productFlavors {  
  90.         wandoujia {}  
  91.         _360 {}  
  92.         baidu {}  
  93.         xiaomi {}  
  94.         tencent {}  
  95.         taobao {}  
  96.         ...  
  97.     }  
  98.   
  99.   
  100.     productFlavors.all { flavor ->  
  101.         flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]  
  102.     }  
  103. }  
  104.   
  105.   
  106. dependencies {  
  107.     compile fileTree(dir: 'libs', include: ['*.jar'])  
  108.     compile 'com.android.support:support-v4:21.0.3'  
  109.     compile 'com.jakewharton:butterknife:6.0.0'  
  110.     ...  
目录
相关文章
|
6月前
|
IDE 开发工具 Windows
DevEco Studio 生成HPK文件
DevEco Studio 生成HPK文件
67 0
|
27天前
|
API 开发者 容器
DevEco Studio:熟练使用华为提供的集成开发环境DevEco Studio
【10月更文挑战第22天】随着HarmonyOS的普及,华为推出了官方集成开发环境DevEco Studio,以提高开发效率。本文通过开发一款天气应用的案例,详细介绍了如何使用DevEco Studio进行环境搭建、界面设计、数据绑定与交互、调试与运行等步骤,帮助开发者高效完成HarmonyOS应用开发。
144 6
|
6月前
|
IDE JavaScript 开发工具
DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)
DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)
132 1
|
6月前
|
IDE 开发工具 Windows
DevEco Studio 报错only contain [a-zA-z0-9_].
DevEco Studio 报错only contain [a-zA-z0-9_].
128 0
|
6月前
|
IDE 开发工具 Windows
DevEco Studio IDE 创建项目时候配置环境
DevEco Studio IDE 创建项目时候配置环境
90 0
|
开发工具 Android开发
Android开发工具新接触
Android开发工具新接触
67 0
|
Java 开发工具
(0.2)HarmonyOS鸿蒙开发工具DevEco Studio工程文件目录结构
(0.2)HarmonyOS鸿蒙开发工具DevEco Studio工程文件目录结构
527 0
(0.2)HarmonyOS鸿蒙开发工具DevEco Studio工程文件目录结构
|
XML 测试技术 持续交付
Visual Studio Package 插件开发(Visual Studio SDK)(一)
Visual Studio Package 插件开发(Visual Studio SDK)(一)
305 0
Visual Studio Package 插件开发(Visual Studio SDK)(一)
|
XML 开发工具 C++
Visual Studio Package 插件开发(Visual Studio SDK)(二 )
Visual Studio Package 插件开发(Visual Studio SDK)(二 )
235 0
Visual Studio Package 插件开发(Visual Studio SDK)(二 )
|
IDE 开发工具 开发者
HarmonyOS初探01——下载安装DevEco Studio
HUAWEI DevEco Studio(简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造,面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的HarmonyOS应用开发服务。通过使用DevEco Studio,开发者可以更高效的开发具备HarmonyOS分布式能力的应用,进而提升创新效率。
187 0