Gradle 多渠道打包的使用和错误分析(转)
刚接触到android的开发,对什么都陌生的,本文是自己在项目中使用的技术要点总结,大咖遇到可直接飘过。。。。。
1.Gradle 打包(不废话了直接来脚本),将下列脚本放到build.gradle文件android{}内;

1 defaultConfig{
2 //applicationId "" //应用包名
3 minSdkVersion 9 //sdk最小支持版本
4 targetSdkVersion 17 //sdk目标版本
5 versionCode 1
6 versionName "1.0"
7
8 //dex突破65535限制
9 multiDexEnabled true
10
11 // AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE}
12 //manifestPlaceholders = [UMENG_CHANNEL_VALUE:""]
13 }
14
15 //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。
16 lintOptions{
17 abortOnError false
18 }
19
20 //签名
21 signingConfigs{
22 myConfig{
23 storeFile file("123456") //签名文件路径
24 storePassword "123456"
25 keyAlias "123456"
26 keyPassword "123456"
27 }
28 }
29
30
31 buildTypes {
32 release {
33 // 不显示Log
34 buildConfigField "boolean", "LOG_DEBUG", "false"
35 //混淆
36 minifyEnabled true
37 //Zipalign优化
38 zipAlignEnabled true
39 // 移除无用的resource文件
40 shrinkResources true
41 //加载默认混淆配置文件 progudard-android.txt在sdk目录里面,不用管,proguard.cfg是我们自己配<span></span>的混淆文件
42 proguardFiles getDefaultProguardFile('proguard-android.txt')
43 proguardFile 'proguard.cfg'
44 //签名
45 signingConfig signingConfigs.myConfig
46 }
47 }
48
49 //flavorDimensions "abi"
50
51 //渠道Flavors,我这里写了一些常用的
52 productFlavors {
53 _360 {
54 }
55 xiaomi {
56 }
57 }
58
59
60 productFlavors.all { flavor ->
61 flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
62 }
63
64
65 applicationVariants.all { variant ->
66 variant.outputs.each { output ->
67 def outputFile = output.outputFile
68 if (outputFile != null && outputFile.name.endsWith('.apk')) {
69
70 // 输出apk名称为appName_v1.0.apk
71 def fileName = "${variant.productFlavors[0].name}_v${defaultConfig.versionName}.apk"
72 output.outputFile = new File(outputFile.parent, fileName)
73 }
74 }
75 }

然后 使用 gradle clean assembleRelease -d(输出debug信息) 一般就会成功打出360和小米的渠道包。
Notes:
1.混淆文件问题
proguard.ParseException: Unknown option '锘?--dump.txt
先查看混淆配置文件的编码和然后最将文件修改为proguard.cfg,并打开查看文件中命令行被识别为止;
2.引用第三方jar问题
Execution failed for task java.io.IOException: Can't write ‘ ’ Can't read
查看引用第三方jar包是否被多次引用(删除被多次引用jar),引用依赖maven的写法
dependencies { compile 'com.android.support:support-v4:13.0.0' }
并且Can't read后面跟着的jar在libs中删除。
(使用Gradle2.2.1 eclipse转android studio项目)
http://www.cnblogs.com/aland/p/4482825.html
Gradle 多渠道打包的使用和错误分析(转)的更多相关文章
- [转]Android Studio系列教程六--Gradle多渠道打包
转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...
- Android Studio系列教程六--Gradle多渠道打包
Android Studio系列教程六--Gradle多渠道打包 2015 年 01 月 15 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzh ...
- gradle多渠道打包及友盟统计-eclipse版本
在进行渠道打包的之前,先看看准备篇,知道打包为了什么. 参见1.0android批量打包认知. eclipse中使用gradle多渠道打包全部流程 一.生成gradle文件,配置本地的gradle环境 ...
- 【转】Android Studio系列教程六--Gradle多渠道打包
原文链接:http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ 由于国内Android市场众多渠道,为了统计每个渠道的 ...
- Gradle多渠道打包
国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包 以友盟多渠道打包为例 在AndroidManifest.xml里面 <meta-data a ...
- Android Studio + gradle多渠道打包
通过工具栏的Build->Build Apk 好像只能打包第一个Module(eclipse里面是Project的概念),怎么多渠道打包呢?目前好像只能一个一个的打 首先在清单文件里设置个变量: ...
- Gradle多渠道打包[umeng]
前言 国内Android应用市场品种太多,血统不纯,每次上线App都打包打到手软,上传上到吐血!好在我们有了Android studio和gradle,一条命令打包各种渠道版本App! 正文 Umen ...
- 使用gradle多渠道打包
以友盟的多渠道打包为例,如果我们须要打包出例如以下渠道:UMENG, WANDOUJIA, YINGYONGBAO. 第一种方法.是须要创建文件的. 我们在写完我们的代码之后,在app/src以下.分 ...
- Android Studio 使用Gradle多渠道打包
第一步:配置AndroidManifest.xml 以友盟渠道为例,渠道信息一般都是写在 AndroidManifest.xml文件中,大约如下: <meta-data android:name ...
随机推荐
- hao947 : Mybatis resultMap配置插入和主键自增返回 : 好947
映射配置文件 好947 <!-- type:映射实体类的数据类型 id:resultMap的唯一标识 --> <resultMap type="person" ...
- HOJ 2245 浮游三角胞(数学啊 )
题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2245 Time Limi ...
- 在Delphi中使用C++对象(两种方法,但都要改造C++提供的DLL)
Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难找到Delphi或Pascal的解决方案.可是却可能找到了一个相关的C++类.本文描述几种在Delphi代码中使 ...
- VB.NET<机房收费系统个人重构版>你都学会了什么(之五)
接着上篇我们说的配置文件,今天我们来说一下接口. 1.UML图 2.三层架构 3.Sqlhelper 4.配置文件 5.接口 6.设计模式 什么是接口呢?我们可以将接口理解为用于沟通的中介的抽象化.可 ...
- Python性能分析指南 - 技术翻译 - 开源中国社区
http://www.oschina.net/translate/python-performance-analysis
- 使用ROW_NUMBER()查询:列名 'RowNumber' 无效。
原文:使用ROW_NUMBER()查询:列名 'RowNumber' 无效. 使用ROW_NUMBER()方法查询结果集:语句如下: select ROW_NUMBER() OVER(ORDER ...
- 探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB
探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB 前言: 从Oracle 12c開始,引入了容器数据库的概念,能够实现数据库插拔操作,例如以下图: 如今我们 ...
- 【ALearning】第二章 Androidproject知识介绍
本章介绍了主要的初步Androidproject成立了一个开发环境.为了Android意识的整体项目和理解.本章包含Android开发环境的搭建.第一Android工程Hello World与Andr ...
- Wix打包系列 (六)制作升级和补丁包
原文:Wix打包系列 (六)制作升级和补丁包 前面我们已经知道怎么制作一个完整安装包了,但我们的软件往往不能一次性就满足客户的需要,当客户需要我们给软件进行升级的时候,我们应该怎么做呢? 在这之前,我 ...
- premake 使用clang替换gcc
接着前文:premake在Ubuntu和GCC环境下创建简单的C++工程 由于clang支持gcc所有参数,所以使得在premake中替换gcc变得很简单.基本上就是通过传递参数或者设置环境变量的方式 ...