Android Studio分渠道打包

今天一个小伙伴问我如何分渠道打包,我翻了翻之前的工程,找了一个Demo给他。基本步骤还是比较简单的。

环境: 使用Android studio 或者直接用Gradle

  1. 在AndroidManifest.xml中增加一个 placeholder, placeholder的名称由你使用的统计服务而定,如果你用的是友盟,那么需要添加一个 meta-data 如下所示:

    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="${CHANNEL_VALUE}" />

    友盟用的名字是 UMENG_CHANNEL

  2. 修改项目的 gradle文件, 在gradle里面添加下面的代码

android {

......

productFlavors {

shb {}

qq {}

wandoujia {}

baidu {}

c360 {}

huawei {}

xiaomi {}

lenovo {}

meizhu {}

}

productFlavors.all { flavor ->

flavor.manifestPlaceholders = [CHANNEL_VALUE: name]

}

......

}

productFlavors  里面是不同分支包的配置情况

flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]  是把AndroidManifest.xml 里面的"${CHANNEL_VALUE}"

替换成自己定义的名字。

  1. 不同渠道的APK文件自动用不同的名称

    不同的包用不同的名称也是为了方便自己管理包文件。我们希望APK生成的名称格式是:  软件名称-VersionCode-VersionNumber-渠道名称.apk

我们需要在gradle里添加下面的代码

buildTypes {

release {

applicationVariants.all { variant ->

variant.outputs.each { output ->

def flavor = "default";

if (variant.productFlavors.size() > 0)

flavor = variant.productFlavors.get(0);

def date = new Date();

def formattedDate = date.format(‘yyyyMMdd‘)

def versionCode = variant.versionCode

def versionName = defaultConfig.versionName

def file = output.outputFile

println variant

println versionName

def finalName = "Release-" + versionCode + "-v" + versionName + "-" + flavor.name + ".apk"

output.outputFile = new File(file.parent, finalName)

}

}

}

别忘了在 Gradle 里面定义版本号,如下:

defaultConfig {

versionCode 50

versionName "1.1.04.23"

}

到这里,该添加的代码都添加了。

运行一下看看,在菜单: build->Generate Signed APK

在菜单里面选择需要的渠道。

哈哈,这就可以把生成的打包文件提供给运营使用了。

时间: 2024-12-28 16:24:56

Android Studio分渠道打包的相关文章

Android Studio分模块自动化构建实战

Android Studio分模块自动化构建实战 @author ASCE1885的 Github 简书 微博 CSDN 最近在使用Android Studio+Gradle做一个基础框架SDK项目,该框架主要实现每个app都需要的基础能力,例如网络请求,图片缓存,json解析,日志记录等等. 众所周知,AndroidStudio中应该尽量使用Module来进行模块的划分,既能达到模块解耦的目的,也能在必要的时候轻松实现分模块打包,特别是在SDK项目中.那么什么是分模块打包呢?就是我们可以根据第

android分渠道打包,监测日活量统计(基于友盟SDK)

客服说要看App日活,让我们加个统计功能. (我们技术部已经混到客服部都能直接提需求的地步) 首先接入友盟统计的SDK,在项目外层的build.gradle中添加依赖'https://dl.bintray.com/umsdk/release' buildscript { repositories { google() jcenter() maven { url 'https://dl.bintray.com/umsdk/release' } } dependencies { classpath

Android Studio多渠道批量打包及代码混淆

一.批量打包 1.集成了友盟统计,并在AndroidManifest.xml中添加了如下代码 <meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL_VALUE}"/> 2.在app的build.gradle的android标签下添加如下代码: productFlavors { myapp {} _360 {} appchina {} hiapk {} } productFlavo

Android 项目利用 Android Studio 和 Gradle 打包多版本APK

在项目开发过程中,经常会有需要打包不同版本的 APK 的需求. 比如 debug版,release版,dev版等等. 有时候不同的版本中使用到的不同的服务端api域名也不相同. 比如 debug_api.com,release_api.com,dev_api.com等等. 不同的版本对应了不同的 api 域名,还可能对应不同的 icon 等. 如果每次都在打包前修改我们都手动来修改,这样实在是不够方便. 但如果我们使用了 Android Studio 和 Gradle,这个麻烦就可以轻松省去.

Android studio Gradle 多渠道打包

为了统计各个渠道的数据,例如下载量等统计,就要针对不同渠道打包.现在是用ant 打包的,觉得是时候换掉了. 开始打包: 1.在AndroidManifest.xml 中写上下面这段PlaceHolder <meta-data android:name="ChannelName" android:value="${ChannelName}" /> 2.在app的 build.gradle 设置productFlavors productFlavors {

Android Studio 使用 Gradle 打包 Jar-IT蓝豹

Android Studio 打 Jar 包一直是一个麻烦的事,按照网上现有的教程,打包一个混淆的 jar 需要完成下列步骤: 将 plugin 修改为library后 build 出 aar,再提取 aar 里面的 classes.jar 使用 jarjar 等工具剔除多余的 class 对第二步得到的 jar 进行混淆 无论哪一步,所做的工作量都不少.于我个人而言,相当麻烦,于是花了些时间研究了下 Gradle 打 Jar 包. 代码 废话不多说,先上代码( 注 :只在 Gradle And

Android Studio系列-签名打包

本篇博客纪录使用Android Studio对项目进行签名打包,跟Eclipse大同小异,读者朋友注意其中到差别. 第一步 创建签名文件 第二步 填写签名参数 第三步 选择构建类型 第四步 查看生成第apk文件

【Android Studio探索之路系列】之十:Gradle项目构建系统(四):Android Studio项目多渠道打包:

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 由于国内Android市场渠道众多,为了统计每个渠道的下载以及数据统计,需要我们针对每个渠道进行单独打包,而Gradle可以帮助我们完成自动多渠道打包. 一多渠道打包流程 (1) 在AndroidManifest.xml中配置PlaceHolder <meta-data and

Android studio 自己定义打包APK名称

Android Studio打包应用默认生成的apk名称是:app-release.apk .假设我们要让生成的apk名跟我们版本号包名有联系的话.那我们就要自己定义生成的apk名了,要怎么做呢. 我们仅仅须要再build.gradle文件下android{ }下加入: android.applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File(output