在进行渠道打包的之前,先看看准备篇,知道打包为了什么。

参见1.0android批量打包认知。

eclipse中使用gradle多渠道打包全部流程

一.生成gradle文件,配置本地的gradle环境
1.选中需要打包的项目右键选择expert->生成gradle文件,如下图所示

2.完成第一步后,刷新项目可以得到如下图所示的文件

显然项目中多出了gradle.build文件,gradle文件夹。如果没有出现,点击项目右键-refresh
刷新过后看到已经生成的gradle文件夹,如下图:

3.打开上述gradle-wrapper.properties文件

红色表示部分:使用gradle打包的时候,所需要使用的文件。

4.复制上述的url,或者直接到官网下载相应的gradle-1.12-all.zip.
为什么要下载对应的,可能是由于版本之间的差异,导致打包失败。应该也可以尝试升级adt或者eclipse中的gradle插件的版本。

以上是官网下载的截图,在红色标志部分,可以选择想要下载的对应版本。在初期我下载最高版本,最终打包没有成功。下载了匹配版本打包成功。
可是测试高版本,如果不行,就使用匹配的对应版本。这里面选择了匹配的对应版本。
5.配置gradle的本地环境。
gradle-1.12-all的解压路径
 
  GRADLE_HOME      
  D:\Gradle\gradle-1.12-all\gradle-1.12

配置一下path(GRADLE_HOME只是作为一个根路径而已)

新建一个 gradle-repo文件夹配置环境变量

GRADLE_USER_HOME

D:\Gradle\gradle-repo

测试gradle环境是否配置成功。

在命令提示符中输入:gradle -version

出现如上图结果,表示gradle配置成功。

二.使用gradle进行打包

1.查看需要打包的项目中的gradle.build文件(默认生成的文件)并添加相关脚本代码

buildscript {
//buildscript中的声明是gradle脚本自身需要使用的资源。
//可以声明的资源包括依赖项、第三方插件、maven仓库地址等
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
apply plugin: 'android'
//在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
} lintOptions {
abortOnError false
} ////////////////////以上代码打出了最简单的包,一般情况下生成了两个包////////////////////
//*-debug-unaligned.apk:未进行zipAlign优化的apk包
//*-release-unsigned.apk:未签名的apk包
//以上两种包都不是正式所需要的包,添加下面代码打出签名包 signingConfigs {
myConfig {
//绝对路径和相对路径都可以
storeFile file("E:\\sjjywork\\key\\key4VipOneToOne\\JyVipKey.keystore")
storePassword "sjjy,vip"
keyAlias "jiayuan_vip_key"
keyPassword "sjjy,vip"
}
}
buildTypes{
release {
//1.添加签名
signingConfig signingConfigs.myConfig
//2.runProguard 执行混淆代码
runProguard true
//混淆规则文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
} //添加了上述代码之后,打出了已经签名的apk:其中xxx-release-unaligned.apk是签名为进行zipAligned优化的包
//xxx-release.apk是签名和zipAlign优化过的包
//添加混淆代码的执行代码如上第二步,就可以实现打出混淆包 //下面的代码开始打批量包 productFlavors {
GooglePlay{
//替换manifest文件中的占位符(placeHolder)
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"GooglePlay"]
}
Store360{
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"Store360" ]
}
//在下面继续添加不同渠道的渠道代码
}
//通过以下方式是批量的设置
// productFlavors.all { flavor ->
// flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
//}
}
tasks.withType(Compile) { options.encoding = "UTF-8" }

在这个文件中手动添加的代码都已经做了详细的注释。

 
2.manifest中添加友盟统计的key和渠道代码(关于友盟统计的key的获取和添加,直接参考友盟统计的文档,不多做解释)
打渠道包的目的是什么?为什么要打渠道包?这个可以见<<1.0apk批量打包认知>>
得到的结论,是要做统计。上面的文件中,使用了友盟统计。
此时需要在manifest.xml添加如下代码:
<!-- 渠道id,key直接使用umeng的,方便接入umeng sdk -->
<meta-data android:name="UMENG_APPKEY" android:value="YOUR_APP_KEY" ></meta-data>
<!--配置placeHolder(占位符),用于多渠道打包的时候替换-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
打批量包的时候,主要使用到的placeHolder:${UMENG_CHANNEL_VALUE} 清单文件中的一个占位符。
在批量打包的过程批量替换这个UMENG_CHANNEL_VALUE这个字段生成不同的apk包。
 
3.正式执行批量打包
在控制台中,进入项目所在的目录,执行gradle clean,gradle  build。如果没有报错,将打包成功
如下图:gradle clean
报错的原因:注释和代码之间添加空行。因为对这个脚本语言不太熟悉,所以不明具体原因。
执行gradle build
到此整个批量打包的过程就完美结束。
刷新项目文件夹看看打出的包:

其中-项目名称-渠道-release.apk就是最终我们所需的渠道apk。
整个批量打包的过程大概十几分钟就搞定了。但是如果对这里面的打包过程是不是还存在很多疑惑。
推荐看如下几篇文章.
 
①自动生成的gradle.build文件 直接进行打包会生成那些包?各种不同的包,有什么区别?
参见2.1 gradle打包blog
②zipAlign优化是什么意思?
参见2.4
③lint工具是做什么用的?
参见2.5
④配置和打包的全过程大概十多分钟。但是如果出现报错,可就要耗费时间了。
常见的报错参考以下文章:
参见2.3gradle打包遇到的错误

至此算是打包的所有流程真正的结束了。加入统计功能的代码,直接根据友盟统计的文档添加相应位置的代码就可以了。

以上参见部分,未完待续....

gradle多渠道打包及友盟统计-eclipse版本的更多相关文章

  1. UmengAppDemo【友盟统计SDK集成以及多渠道打包配置,基于V7.5.3版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里只是记录下集成友盟统计SDK以及简单配置多渠道打包的步骤.所以1.该Demo不能运行:2.配置多渠道打包只是一种简单的写法,具体 ...

  2. Android 友盟统计的集成与使用(包含多渠道打包配置)

    前言 app上线后,一般公司都希望跟踪app在市场上的使用情况.包括新增用户.活跃用户.渠道信息.错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品.这些都可以通过集成友盟 ...

  3. 【转】Android Studio系列教程六--Gradle多渠道打包

    原文链接:http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ 由于国内Android市场众多渠道,为了统计每个渠道的 ...

  4. Gradle多渠道打包

    国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包 以友盟多渠道打包为例 在AndroidManifest.xml里面 <meta-data a ...

  5. [转]Android Studio系列教程六--Gradle多渠道打包

    转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...

  6. Android Studio系列教程六--Gradle多渠道打包

    Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...

  7. android studio学习----gradle多渠道打包

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

  8. 线上应用bug跟踪查找-友盟统计

    线上的应用只要用心点点都能发现些bug,连微信,QQ也不列外.但是bug中最严重的算是闪退了,这导致了用户直接不能使用我们的app. 我们公司是特别注重用户反馈和体验的,我们会定期打电话咨询用户的使用 ...

  9. android开发系列之友盟统计集成

    相比大家都遇到这种情况,当我们的app上线之后,我们想要实时的跟踪了解到app里面的bug情况.新增用户情况.用户相关的行为属性情况等.但是如果自己在app里面去开发集成这些功能,一方面开发工作量还挺 ...

随机推荐

  1. 洛谷——P2556 [AHOI2002]黑白图像压缩

    P2556 [AHOI2002]黑白图像压缩 题目描述 选修基础生物基因学的时候, 小可可在家里做了一次图像学试验. 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 ...

  2. RabbitMQ (四) 工作队列之公平分发

    上篇文章讲的轮询分发 : 1个队列,无论多少个消费者,无论消费者处理消息的耗时长短,大家消费的数量都一样. 而公平分发,又叫 : 能者多劳,顾名思义,处理得越快,消费得越多. 生产者 public c ...

  3. 【动态规划】【记忆化搜索】CODEVS 1011 数的计算 2001年NOIP全国联赛普及组

    设答案为f(n),我们显然可以暴力地递归求解: f(n)=f(1)+f(2)+……+f(n/2). 但是n=1000,显然会超时. 考虑状态最多可能会有n种,经过大量的重复计算,所以可以记忆下来,减少 ...

  4. 【2-SAT(两次DFS版)】BZOJ1823-[JSOI2010]满汉全席

    [题目大意] 有n个材料,m个评委.每种材料可以被用来做满族菜或汉族菜,m个评委有两种可以让他满意的猜中.问是否可以满足所有评委要求? [思路] 每天只能做三道题,我已经是一个废人了……(葛优躺.jp ...

  5. STL之全排列

    描述 使用STL中的next_permutation函数输出一个序列的全排列. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { vector<int> ...

  6. 编译boost到各个系统平台 mac,iOS,linux,android,wind

    编译boost到各个系统平台 mac,iOS,linux,android,wind git地址:https://github.com/czjone/boost git仓库:https://github ...

  7. 《VC++就业培训宝典之MFC视频教程》学习笔记

    开发环境:Win7 64位 + VS2013 第三章第二节视频 在Win32工程中学习MFC开发,编译问题: Building MFC application with /MD[d] (CRT dll ...

  8. solr6.6 导入 pdf/doc/txt/json/csv/xml文件

    文本主要介绍通过solr界面dataimport工具导入文件,包括pdf.doc.txt .json.csv.xml等文件,看索引结果有什么不同.其实关键是managed-schema.solrcon ...

  9. Java笔记1:IntelliJ IDEA详细安装步骤

    安装IntelliJ IDEA 一.安装JDK 1 下载最新的jdk,这里下的是jdk-8u66 2 将jdk安装到默认的路径C:\Program Files\Java目录下 二.安装IntelliJ ...

  10. vue拦截器Vue.http.interceptors.push

    刚开始学vue,github上down了一个开源项目,看源代码的时候看到了这个地方: /** * @export * @param {any} request * @param {any} next ...