首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AndroidStudio多渠道打包

AndroidStudio多渠道打包

作者头像
Javen
发布于 2018-08-21 03:13:15
发布于 2018-08-21 03:13:15
97200
代码可运行
举报
文章被收录于专栏:酷玩时刻酷玩时刻
运行总次数:0
代码可运行

参考资料 博客: http://blog.csdn.net/mynameishuangshuai/article/details/51783303 http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ 视频: http://www.imooc.com/learn/752

假如AndroidManifest.xmlmeta-data>CHANNEL 是渠道的标准

1、在AndroidManifest.xml里设置动态渠道变量
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<meta-data
            android:name="CHANNEL"
            android:value="${CHANNEL_VALUE}" />

上面的value值CHANNEL_VALUE就是渠道标识。我们的期望的就是在编译时候这个值能够自动变化以满足区分多渠道的需求。

2、在build.gradle设置productFlavors

这里假定我们需要打包的渠道为小米、百度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android {  
    productFlavors {
        xiaomi {
            manifestPlaceholders = [CHANNEL_VALUE: "xiaomi"]
        }
        baidu {
            manifestPlaceholders = [CHANNEL_VALUE: "baidu"]
        }
    }  
}

如果打包的渠道比较多我们还可以批量修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //多渠道打包
    productFlavors {
        xiaomi {}
        baidu {}
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }

所谓ProductFlavors其实就是可定义的产品特性,配合 manifest 使用的时候就可以达成在一次编译过程中产生多个具有自己特性配置的版本。上面这个配置的作用就是,为每个渠道包产生不同的 CHANNEL_VALUE 的值。如果两者设置的值不一样就会出现以下的异常

动态渠道变量设置不一致导致的异常

3、在build.gradle文件中配置签名信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 signingConfigs {
        release {
            storeFile file("wxkey")
            storePassword '123456'
            keyAlias '1'
            keyPassword '123456'
        }
        debugConfig {
            storeFile file("wxkey")      
            storePassword "123456"
            keyAlias "1"
            keyPassword "123456"
        }
    }
4、执行打包命令 ./gradlew assembleRelease

在AndroidStudio窗口左下角打开Terminal面板,widnow输入gradlew assembleRelease Mac或者Linux输入./gradlew assembleRelease命令可以一次性打包出所有的签名渠道包

执行打包命令

打包成功后会提示BUILD SUCCESSRUL并在app>build>outputs>apk目录生成签名的apk

5、单独分别打bug或者release渠道包

1、如果我们想打xiaomi渠道的release版本,执行如下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./gradlew assemblexiaomiRelease

2、如果我们想打xiaomi渠道的bug版本,执行如下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ./gradlew assemblexiaomiDebug

3、如果我们想打xiaomi渠道的release版以及bug版,则执行如下命名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ./gradlew assemblexiaomi

4、打全部Release版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ./gradlew assembleRelease

5、打全部Debug版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ./gradlew assembleDebug
6、自定义所打APK包名称

当我们的渠道包版本比较多时,可以自定义所打APK包名称,用以区分

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 自定义输出配置
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                // 输出apk名称为JPay_0.0.1_xiaomi.apk
                def fileName = "JPay_${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                output.outputFile = new File(outputFile.parent, fileName)
        }
    }
}

执行打包命令./gradlew assemblexiaomiRelease 我们发现输出的apk以及修改为了我们自定义的名称

自定义输入apk的名称

7、完整示例的配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"
    defaultConfig {
        applicationId "mayihuijia.com"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "0.0.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    signingConfigs {
        release {
            storeFile file("wxkey")
            storePassword '123456'
            keyAlias '1'
            keyPassword '123456'
        }
        debugConfig {
            storeFile file("wxkey")
            storePassword "123456"
            keyAlias "1"
            keyPassword "123456"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            // 自定义输出配置
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为JPay_0.0.1_xiaomi.apk
                        def fileName = "JPay_${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
        debug {
            signingConfig signingConfigs.debugConfig
        }
    }
    lintOptions {
        abortOnError false
    }
    //多渠道打包
    productFlavors {
        xiaomi {}
        baidu {}
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'com.javen205.jpay:jpaysdk:0.0.1'
}
 

安利时间: JPay是对微信App支付、支付宝App支付的二次封装,对外提供一个相对简单的接口以及支付结果的回调

极速开发微信公众号是对微信公众平台接口的二次封装。包括开发者模式、事件回调监听、微信模板消息、微信客服消息、自定义菜单、微信支付、素材管理等

如遇到问题欢迎留言交流

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.03.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
“万物+”是 “互联网+”的深入和超越,人工智能与大数据的城市应用愈加密切 | 大咖周语录
“万物+”是 “互联网+”的深入和超越,人工智能与大数据的城市应用愈加密切 | 大咖周语录
数据猿
2018/04/19
7450
“万物+”是 “互联网+”的深入和超越,人工智能与大数据的城市应用愈加密切 | 大咖周语录
大咖周语录 | 黄明明全力押宝的投资对象是什么;富士康开始“关灯生产”?
数据猿导读 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续,数据猿也会邀请更多行业大牛通过线上线下
数据猿
2018/04/20
5870
大咖周语录 | 黄明明全力押宝的投资对象是什么;富士康开始“关灯生产”?
物联网的本质是智能化 ,不能太夸大人工智能 ,数据将成为最重要生产资料 | 大咖周语录
物联网的本质是智能化 ,不能太夸大人工智能 ,数据将成为最重要生产资料 | 大咖周语录
数据猿
2018/04/19
7950
物联网的本质是智能化 ,不能太夸大人工智能 ,数据将成为最重要生产资料 | 大咖周语录
互联网不应成为实体经济替罪羊,要思考如何用好互联网 | 大咖周语录
数据猿导读 马云表示,未来社会的变革会越来越大,每一次技术变革都是就业的变革。互联网以后不再是高科技,而是必须的基础设施,所有行业都必须要用的。未来30年,这个世界不属于互联网公司,而属于那些用好互联
数据猿
2018/04/23
5440
互联网不应成为实体经济替罪羊,要思考如何用好互联网 | 大咖周语录
周鸿祎“呛声”李彦宏,互联网下半场的风口不是人工智能,而是物联网 | 大咖周语录
数据猿导读 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续,数据猿也会邀请更多行业大牛通过线上线下
数据猿
2018/04/20
7120
周鸿祎“呛声”李彦宏,互联网下半场的风口不是人工智能,而是物联网 | 大咖周语录
我们正在进入一个软件定义的时代 要学会创造性地运用大数据和人工智能 | 大咖周语录
从云计算到大数据,人工智能已经具备了相对坚实的基础。不过,从当下人工智能的发展现状看,大部分的人工智能还停留在大数据分析阶段,距离真正的人工智能还有一定的距离。未来,我们正在进入一个软件定义的时代,其基本的特征表现在万物皆可互联,一切均可编程。 编辑 | 张宏 梅宏院士:大数据蓬勃发展,我们正在进入一个软件定义的时代 2017软博会,梅宏院士讲到,目前我们正在进入一个新的时代,不同的人,对这个时代赋予了不同的标签。 从基础设施角度,可以称之为互联网+时代; 从计算模式的角度,可以叫做云计算时代; 从
数据猿
2018/04/24
6890
我们正在进入一个软件定义的时代 要学会创造性地运用大数据和人工智能 | 大咖周语录
让ICO服务实体经济促进融合发展,掘金大数据,“三农”产业大有可为 | 大咖周语录
让ICO服务实体经济促进融合发展,掘金大数据,“三农”产业大有可为 | 大咖周语录
数据猿
2018/04/24
4980
让ICO服务实体经济促进融合发展,掘金大数据,“三农”产业大有可为 | 大咖周语录
数据是企业和社会发展的重要动力,AI从边缘发展到主流,未来十年信息技术将带来巨大“红利” | 大咖周语录
数据是企业和社会发展的重要动力,AI从边缘发展到主流,未来十年信息技术将带来巨大“红利” | 大咖周语录
数据猿
2018/04/19
7120
数据是企业和社会发展的重要动力,AI从边缘发展到主流,未来十年信息技术将带来巨大“红利” | 大咖周语录
中国联通CTO范济安:中国联通大数据发展与规划
<数据猿导读> 中国联通CTO范济安在2016年中国通信大数据大会上发表了以“中国联通大数据发展与规划”为主题的演讲。范济安表示,中国联通的大数据发展大致可以分为三个阶段。目前所面临的挑战,主要是怎样
数据猿
2018/04/19
1K0
中国联通CTO范济安:中国联通大数据发展与规划
“数据高铁”的时代或将来临,要关注人工智能发展的多层次性,推进智能经济发展 | 大咖周语录
“数据高铁”的时代或将来临,要关注人工智能发展的多层次性,推进智能经济发展 | 大咖周语录
数据猿
2018/04/25
7330
“数据高铁”的时代或将来临,要关注人工智能发展的多层次性,推进智能经济发展 | 大咖周语录
【周语录】用“大战略”迎接“大安全”时代的挑战
【周语录】用“大战略”迎接“大安全”时代的挑战
数据猿
2018/04/19
6420
【周语录】用“大战略”迎接“大安全”时代的挑战
文本大数据促进传媒产业融合,数据智慧触手可及,中国区块链技术尚处幼年生长期 | 大咖周语录
文本大数据促进传媒产业融合,数据智慧触手可及,中国区块链技术尚处幼年生长期 | 大咖周语录
数据猿
2018/04/19
6530
文本大数据促进传媒产业融合,数据智慧触手可及,中国区块链技术尚处幼年生长期 | 大咖周语录
大咖周语录 | “移动”写给友商联通的忠告,“学术界”对企业的“控诉”,令人深思!
数据猿导读 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续,数据猿也会邀请更多行业大牛通过线上线下
数据猿
2018/04/20
6270
大咖周语录 | “移动”写给友商联通的忠告,“学术界”对企业的“控诉”,令人深思!
大咖周语录 | 沃森也是弱人工智能,强人工智能时代至少要等500年
数据猿导读 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续,数据猿也会邀请更多行业大牛通过线上线下
数据猿
2018/04/20
6130
大咖周语录 | 沃森也是弱人工智能,强人工智能时代至少要等500年
大咖周语录 | BAT已成“过去式” ,实体店不借助大数据肯定被淘汰
、<数据猿导读> 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续,数据猿也会邀请更多行业大牛通过线
数据猿
2018/04/20
7560
大咖周语录 | BAT已成“过去式” ,实体店不借助大数据肯定被淘汰
探秘|顺丰菜鸟互撕背后:大数据争夺战已进入前所未有高度
“关闭数据接口的背后,本质上是顺丰和菜鸟对物流大数据的话语权争夺。” 事实上,伴随此次事件的爆发,让围绕大数据的利益纠葛上升到了一个前所未有的高度,“大数据争夺战”已经开始进入了一个小高潮。 《每日经
灯塔大数据
2018/04/08
1.1K0
探秘|顺丰菜鸟互撕背后:大数据争夺战已进入前所未有高度
大咖周语录 | 资金不够就别“碰”能源大数据,发展大数据产业别“犯傻”
<数据猿导读> 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续,数据猿也会邀请更多行业大牛通过线上
数据猿
2018/04/20
6320
大咖周语录 | 资金不够就别“碰”能源大数据,发展大数据产业别“犯傻”
大咖周语录 | 李开复担忧大数据被巨头控制,鄂维南担忧企业过度“吞”人才
<数据猿导读> 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续,数据猿也会邀请更多行业大牛通过线上
数据猿
2018/04/20
7890
大咖周语录 | 李开复担忧大数据被巨头控制,鄂维南担忧企业过度“吞”人才
从生态角度认识大数据,做云计算公司要有想象力,通用人工智能将成为下一个攻坚点 | 大咖周语录
从生态角度认识大数据,做云计算公司要有想象力,通用人工智能将成为下一个攻坚点 | 大咖周语录
数据猿
2018/04/24
5590
从生态角度认识大数据,做云计算公司要有想象力,通用人工智能将成为下一个攻坚点 | 大咖周语录
未来的互联网发展,“场景”就是“战场”! | 大咖周语录
数据猿导读 马化腾在近日举行的贵阳数博会闭幕会上表示:未来互联网发展,更重要的一个要素是“场景“,我们称之为“战场”。 编辑 | abby 马化腾:未来的互联网发展,“场景”就是“战场”! 马化腾在近
数据猿
2018/04/24
6970
未来的互联网发展,“场景”就是“战场”! | 大咖周语录
推荐阅读
“万物+”是 “互联网+”的深入和超越,人工智能与大数据的城市应用愈加密切 | 大咖周语录
7450
大咖周语录 | 黄明明全力押宝的投资对象是什么;富士康开始“关灯生产”?
5870
物联网的本质是智能化 ,不能太夸大人工智能 ,数据将成为最重要生产资料 | 大咖周语录
7950
互联网不应成为实体经济替罪羊,要思考如何用好互联网 | 大咖周语录
5440
周鸿祎“呛声”李彦宏,互联网下半场的风口不是人工智能,而是物联网 | 大咖周语录
7120
我们正在进入一个软件定义的时代 要学会创造性地运用大数据和人工智能 | 大咖周语录
6890
让ICO服务实体经济促进融合发展,掘金大数据,“三农”产业大有可为 | 大咖周语录
4980
数据是企业和社会发展的重要动力,AI从边缘发展到主流,未来十年信息技术将带来巨大“红利” | 大咖周语录
7120
中国联通CTO范济安:中国联通大数据发展与规划
1K0
“数据高铁”的时代或将来临,要关注人工智能发展的多层次性,推进智能经济发展 | 大咖周语录
7330
【周语录】用“大战略”迎接“大安全”时代的挑战
6420
文本大数据促进传媒产业融合,数据智慧触手可及,中国区块链技术尚处幼年生长期 | 大咖周语录
6530
大咖周语录 | “移动”写给友商联通的忠告,“学术界”对企业的“控诉”,令人深思!
6270
大咖周语录 | 沃森也是弱人工智能,强人工智能时代至少要等500年
6130
大咖周语录 | BAT已成“过去式” ,实体店不借助大数据肯定被淘汰
7560
探秘|顺丰菜鸟互撕背后:大数据争夺战已进入前所未有高度
1.1K0
大咖周语录 | 资金不够就别“碰”能源大数据,发展大数据产业别“犯傻”
6320
大咖周语录 | 李开复担忧大数据被巨头控制,鄂维南担忧企业过度“吞”人才
7890
从生态角度认识大数据,做云计算公司要有想象力,通用人工智能将成为下一个攻坚点 | 大咖周语录
5590
未来的互联网发展,“场景”就是“战场”! | 大咖周语录
6970
相关推荐
“万物+”是 “互联网+”的深入和超越,人工智能与大数据的城市应用愈加密切 | 大咖周语录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档