Gradle for Android(三)多渠道打包、配置签名信息

2024-06-19 12:32

本文主要是介绍Gradle for Android(三)多渠道打包、配置签名信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.jianshu.com/p/83a99e26826c

http://www.jianshu.com/p/83a99e26826c

http://www.jianshu.com/p/83a99e26826c




Gradle for Android(三)多渠道打包、配置签名信息

144 
作者  吴小龙同學  关注
2016.04.15 11:13  字数 889  阅读 766 评论 12

多渠道打包

国内有太多Android App市场,每次发版几十个渠道包。还好Android Gradle给我们提供了productFlavors,我们可以对生成的APK包进行定制。

    productFlavors {//多渠道打包xiaomi {applicationId 'com.wuxiaolong.gradle4android1'}googlepaly {applicationId 'com.wuxiaolong.gradle4android2'}}

定制生成的apk文件名

   applicationVariants.all { variant ->if (variant.buildType.name.equals('release')) {variant.outputs.each { output ->def outputFile = output.outputFileif (outputFile != null && outputFile.name.endsWith('.apk')) {def fileName = "gradle4android_v${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk"output.outputFile = new File(outputFile.parent, fileName)}}}}

输出apk名字:gradle4android_v1.0_2016-03-23_xiaomi.apk

占位符

多渠道打包,还会遇到一个问题,比如友盟统计的渠道号,Gradle处理办法:manifestPlaceholders,它允许我们动态替换我们在AndroidManifest文件里定义的占位符。
AndroidManifest.xml:

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

如下,${UMENG_CHANNEL_VALUE}占位符会被dev替换。

 defaultConfig {manifestPlaceholders = [UMENG_CHANNEL_VALUE: 'dev']}

如果渠道太多,不用这样一个个去写,可以循环:

 productFlavors.all { flavor ->manifestPlaceholders.put("UMENG_CHANNEL_VALUE",name)}

渠道打包完整代码:

android {
//省略部分代码buildTypes {release {minifyEnabled false//是否启动混淆proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'applicationVariants.all { variant ->if (variant.buildType.name.equals('release')) {variant.outputs.each { output ->def outputFile = output.outputFileif (outputFile != null && outputFile.name.endsWith('.apk')) {def fileName = "gradleTest_v${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk"output.outputFile = new File(outputFile.parent, fileName)}}}}//针对很多渠道//productFlavors.all { flavor ->//   manifestPlaceholders.put("UMENG_CHANNEL_VALUE",name)// }}}productFlavors {//多渠道打包,命令行打包:gradlew assembleReleasexiaomi {applicationId 'com.wuxiaolong.gradle4android1'manifestPlaceholders.put("UMENG_CHANNEL_VALUE", 'xiaomi')}googlepaly {applicationId 'com.wuxiaolong.gradle4android2'manifestPlaceholders.put("UMENG_CHANNEL_VALUE", 'googlepaly')}}//省略部分代码def releaseTime() {return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

配置签名信息

Android Studio设置默认的签名文件

新浪微博SSO登录,微信分享这些都需要签名打包,才能看到效果,设置默认签名文件为自己的签名jks,这样就不需要打包了直接运行起来就是正式的签名。
在android.signingConfigs{}下定义一个或者多个签名信息,然后在buildTypes{}配置使用即可。
在app目录下添加你的.jks,然后app的build.gradle文件中的增加以下内容:
第一种:

android {  signingConfigs {  debug {  storeFile file("WuXiaolong.jks")storePassword 'android'keyAlias 'android'keyPassword 'android'}          }      
}

buildTypes没有配置,也是直接取得debug,是不是不配置默认取得是debug呢?
第二种:

android {  signingConfigs {  release {  storeFile file("WuXiaolong.jks")storePassword 'android'keyAlias 'android'keyPassword 'android'}          }  buildTypes {debug {signingConfig signingConfigs.release}        }
}

签名打包

通过Android Studio签名

这里不细说了。

通过命令行签名

如上那样配置签名信息

android {  signingConfigs {  release {  storeFile file("WuXiaolong.jks")storePassword 'android'keyAlias 'android'keyPassword 'android'}          }  buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.release}      }
}

先"build-clean Project",然后Terminal输入命名行:

gradlew assembleRelease

打印信息如下:

E:\AndroidStudioProjects\Gradle4Android>gradlew assembleRelease
:app:preBuild UP-TO-DATE                                                             
:app:preReleaseBuild UP-TO-DATE     
:app:checkReleaseManifest                  
//省略部分               
:app:packageRelease                 
:app:zipalignRelease                 
:app:assembleRelease                 BUILD SUCCESSFUL

OK,打包成功的apk路径如:E:\AndroidStudioProjects\Gradle4Android\app\build\outputs\apk\app-release.apk


微信公众号

欢迎微信扫一扫关注:不止于技术分享,每天进步一点点。


关于作者

点击查看

完整配置

https://github.com/WuXiaolong/Gradle4Android

系列博客

Gradle for Android(一)基本配置、依赖管理
Gradle for Android(二)全局设置、自定义BuildConfig、混淆

附录

Gradle for Android 第一篇( 从 Gradle 和 AS 开始 )
使用Gradle管理你的Android Studio工程


这篇关于Gradle for Android(三)多渠道打包、配置签名信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075038

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码