写点什么

Android- 多渠道打包配置;你了解吗?,移动互联网 app 开发入门

用户头像
Android架构
关注
发布于: 刚刚

那么问题来了,我当前的构建类型怎么对应到其他的 module 去呢?比如你的 app 要依赖 sdk module 的 debug 环境,那么你可以这么做:


configuration:目标 module 的<buildType>,比如你 sdk 中<buildType>的 debug 构建类型


debugCompile project(path: ':sdk', configuration: 'debug')


综合示例

1、先看 app 这边的 build.gradle 配置:


apply plugin: 'com.android.application'


android {buildTypes {release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}debug {applicationIdSuffix '.debug'minifyEnabled false}


// 自定义的构建类型,名字随便取,一定要有意义 raedebug {initWith debugapplicationIdSuffix '.raedebug'}}}


dependencies {// 生成环境依赖 releaseCompile project(path: ':sdk', configuration: 'release')// 测试环境依赖 debugCompile project(path: ':sdk', configuration: 'debug')// 自定义构建类型依赖 raedebugCompile project(path: ':sdk', configuration: 'uutest')}


2、sdk module 的 build.gradle 配置:


apply plugin: 'com.android.library'


android {buildTypes {debug {debuggable trueminifyEnabled false}release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}


// 注意这里,跟第一点的 raedebugCompile project 的 configuration 要匹配。uutest {initWith debug}}}

多渠道打包 productFlavors

先看看 build.gradle 配置你就懂了


android{


// 渠道包定义,默认定义的名称就是渠道名称 productFlavors {


dev {} // 测试 baidu {} // 百度手机助手 yinyongbao {} // 应用宝 m360 {} // 360 手机助手 pp {} // PP 助手 anzhi{} // 安智市场 xiaomi {} // 小米商店 letv {} // 乐视商店 huawei {} // 华为商店 lenovomm {} // 联想乐商店 other {} // 其他市场 official{} // 官方版本


}


// 批量渠道包值替换 productFlavors.all { flavor ->// 友盟、极光推送渠道包, UMENG_CHANNEL 是根据你 AndroidManifest.xml 来配置的,请看下面。flavor.manifestPlaceholders = [UMENG_CHANNEL: name, JPUSH_CHANNEL: name]}}


AndroidManifest.xml 配置:


<?xml version="1.0" encoding="utf-8"?><manifest x


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


mlns:android="http://schemas.android.com/apk/res/android"package="com.rae.demo">


<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">


<!--变量采用{UMENG_APPKEY}"/>


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


<activityandroid:name=".DemoActivity"android:label="${变量随变换}"/>


</application>


</manifest>


sync gradle 之后看看 gradle projects 面板列表就多出了好到渠道的任务了,Build Variants 面板也相对应多了这些构建类型。

APK 输出配置

在结合到多渠道打包后,运营的那边希望我们给的渠道包是这种格式的 app-{版本号}-{渠道名称}.apk,那我们来看看怎么来满足这个多渠道打包输出 apk 文件名修改的。


android{


// 输出文件配置 applicationVariants.all { variant ->variant.outputs.each { output ->def outputFile = output.outputFileif (outputFile != null && outputFile.name.endsWith('.apk')) {def dirName = outputFile.parent // 输出文件夹所在的位置


// 文件名修改 def fileName = "app-{defaultConfig.versionName}-${variant.flavorName}.apk"


// 比如不想这么麻烦,直接在后面加上版本号也行:// def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")


output.outputFile = new File(dirName, fileName)

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android-多渠道打包配置;你了解吗?,移动互联网app开发入门