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项目)

时间: 2024-10-09 02:01:28

Gradle 多渠道打包的使用和错误分析的相关文章

Gradle 多渠道打包的使用和错误分析(转)

刚接触到android的开发,对什么都陌生的,本文是自己在项目中使用的技术要点总结,大咖遇到可直接飘过..... 1.Gradle 打包(不废话了直接来脚本),将下列脚本放到build.gradle文件android{}内: 1 defaultConfig{ 2 //applicationId "" //应用包名 3 minSdkVersion 9 //sdk最小支持版本 4 targetSdkVersion 17 //sdk目标版本 5 versionCode 1 6 version

厦门之旅第一篇Gradle多渠道打包(动态设定App名称,应用图标,背景图片,状态栏颜色)

我不是诗人,写不出厦门的美:我不是歌手,唱不出厦门的情:我不是画家,画不出厦门的景. 我只是一名程序员,我只能用我的眼,我的心去看去感受,那久违的海风吹拂着脸颊,好似内心那一份烦躁与沉重也随着海风飘向了远方 . . . . . . 一.Gradle多渠道打包之缘由 时间要追溯到两年前,当时我还在使用 eclipse 开发工具.兄弟事业部有款产品需要封包(使用webview打包成app),并提出了相关的需求: 针对不同商家地址(webview加载url),App名称,应用图标,欢迎页背景,状态栏颜

Android Studio之Gradle多渠道打包

Android Studio之Gradle多渠道打包 由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这事就简单了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID&qu

使用gradle多渠道打包

以友盟的多渠道打包为例,如果我们须要打包出例如以下渠道:UMENG, WANDOUJIA, YINGYONGBAO. 第一种方法.是须要创建文件的. 我们在写完我们的代码之后,在app/src以下.分别创建和main同级目录的目录umeng, wandoujia, yingyongbao,这三个目录里面都各仅仅有一个AndroidManifest.xml文件,文件仅仅须要例如以下: [plain] view plaincopy <manifest xmlns:android="http:/

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

原文链接:http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ 由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_

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

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" /> 里面的Channel_ID就是渠

Android Studio + gradle多渠道打包

通过工具栏的Build->Build Apk 好像只能打包第一个Module(eclipse里面是Project的概念),怎么多渠道打包呢?目前好像只能一个一个的打 首先在清单文件里设置个变量: 这个变量可以在Application里这样获得,从而app内就知道是哪个渠道了, 然后在build.gradle里设置productFlavors 如yingyongbao就填充到清单文件里面的CHANEL_NAME变量了 找到Gradle任务单元,进入build单元,右键run,就能生产出该渠道的ap

Gradle多渠道打包

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这再也不是事了. 友盟多渠道打包 废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段: <meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" /> 里面的Channel_ID就是渠

Gradle多渠道打包[umeng]

前言 国内Android应用市场品种太多,血统不纯,每次上线App都打包打到手软,上传上到吐血!好在我们有了Android studio和gradle,一条命令打包各种渠道版本App! 正文 Umeng多渠道 我们在项目中会使用统计SDK,用的最流行的当属umeng了吧.这里我们就用友盟来说明.用了友盟的App的清单文件AndroidManifest.xml中都会写上meta-data,来区分不同的渠道: <meta-data android:name="UMENG_CHANNEL&quo