文章目录

  • 序言
    • 说明
    • 效果
  • 使用
    • 下载demo
    • 导入文件
      • 文件内容说明
    • 配置gradle
      • 配置gradle.properties
        • 文件位置
        • 内容
      • 项目中配置
      • 补充说明
        • 1.360加固配置
        • 2.curl乱码
        • 3.邮箱配置
        • 4.Fir Token 获取
        • 5.蒲公英 uKey,api key获取
  • 功能拓展
    • GUI扩展
    • gradle扩展
      • 下载Android gradle 插件

序言

由于公司的项目具有多个环境。每次打包都要手动选择编译类型,打包还得上传fir,和蒲公英。最后截二维码给测试。为了偷懒写了一个gradle 脚本。实现以下功能

  1. 自定义打包类型,可以指定buildType和flavor
  2. 支持定义多种,多个服务器,fir和蒲公英都支持,每种服务都可以配置多个。
  3. 支持自动打包上传,上传使用curl具有上传进度
  4. 支持360加固。只需要简单配置即可实现360自动加固
  5. 支持自动获取git日志作为更新日志
  6. 支持配置邮箱,实现打包完成自动提醒。

说明

目前支持的Android gradle插件版本有 3.4.1 ,4.0.1 ,4.1.0

在项目根目录的build.gradle文件中可以查看插件版本。4.1.0以上是否支持还没测试,可自行测试。

     buildscript {repositories {google()jcenter()}dependencies {//gradle Android插件版本classpath "com.android.tools.build:gradle:4.1.0"}
}

效果

口说无凭直接看效果。

功能 截图
自定义打包类型,可以指定buildType和flavor
通过简单配置,自动生成相关任务双击即可执行。
发布到相关服务器显示进度信息
上传成功自动生成二维码弹出提示框
支持360加固
配置邮箱,发布成功自动提醒

使用

下载demo

相关的脚本和使用的demo已经上传至github。需要先下载demo。

Publish-GitHub地址

导入文件

将其中的publish文件夹引入到你的app module中

文件内容说明

文件 功能
icon/app_logo.png 存放应用的图标,使用的时候,直接覆盖即可。建议尺寸150px*150px 太大的话还得压缩没必要。也可以不使用这个图片,自行配置logo路径既可
lib/AppPublish-1.0-SNAPSHOT.jar 提供了弹窗功能,二维码生成功能,发送邮件功能
log 主要是存放curl访问接口时产生的临时文件,访问结束后会自动删除。这个文件夹不要动它
publish.gradle 所有功能的脚本,生成打包,发布,加固任务

配置gradle

配置gradle.properties

为了能在多个项目共享配置,建议在gradle的安装目录,配置一个gradle.properties文件。也便于一个部门内统一使用这个打包插件。更多内容可以参考【Gradle深入浅出】——Gradle配置(一)

文件位置

内容

#-------------------------App发布助手需要的变量---start---------------------------#注意配置的路径的时候需要使用转义符,:要加转义符,\也要。#比如地址是E:\abc 需要写成 E\:\\abc#360加固配置#360jar包地址,不能包含中文
TRSJiaGuJirPath=E\:\\WORK\\JiaGu\\360jiagubao_windows_64\\jiagu\\jiagu.jar
#360用户名
TRSJiaGuUserName=xxx
#360密码
TRSJiaGuPassword=yyy
#打包输出路径,不能包含中文
TRSJiaGuOutPath=C\:\\Users\\Administrator\\Desktop\\360JiaGuOut\\#Email配置#Email的Smtp服务器地址
TRSPublishEmailServer=smtp.qq.com
#Email地址
TRSPublishEmailAddress=123123123@qq.com
#Email的密码,或者token
TRSPublishEmailPassword=abcdabcd
#Email功能是否启用,true或fasle
TRSPublishEmailEnable=true#公司的FIR#api_tokenTRSFirApiToken=abc123456789#公司的蒲公英配置#ukey
TRSPgyUKey=abc123456789
#api_key
TRSPgyApiKey=abc123456789
#安装的时候使用密码 true 或false
TRSPgyUsePasswordOnInstall=false
#安装密码
TRSPgyInstallPassword=123456
#-------------------------App发布助手需要的变量---end---------------------------

补充: 这个properties文件最后解析成一个Map<String,String> 所以如果是路径包含了斜杠等符号,需要使用转义。注释中有说明。

定义在该文件中的变量可以在build.gradle中直接使用。但是如果要让其转换成其他值,比如String转Boolean需要这样写。

 email {smtpServer TRSPublishEmailServeremailAddress TRSPublishEmailAddressemailPassWord TRSPublishEmailPassword//string转boolenable TRSPublishEmailEnable.toBoolean()}

因为360加固包不支持中文,所以生成的apk的名字和存放的路径都不能含有中文

项目中配置

这是demo中的完整build.gradle文件。方便大家查看 。相关的说明我都写在注释里了。

plugins {id 'com.android.application'
}
//引用打包插件
apply from: "publish/publish.gradle"//配置打包插件
ApkPublish {//配置加固信息    jiaGu{jarPath TRSJiaGuJirPathuserName TRSJiaGuUserNamepassword  TRSJiaGuPassword//outPutPath路径中不能包含中文outPutPath TRSJiaGuOutPath}//配置应用信息,在弹窗和而成二维码的时候需要使用apkInfo {appName "昨日头条"appLogo file("/publish/icon/app_logo.png")}//配置Email,如果不需使用,可以将enable设置为falseemail {smtpServer TRSPublishEmailServeremailAddress TRSPublishEmailAddressemailPassWord TRSPublishEmailPasswordenable TRSPublishEmailEnable.toBoolean()}//fir服务器,下面可以配置多个fir {//一个fir服务器,"公司fir"是他的名字,只有一个属性apiToken//可以配置多个,只有名字唯一就行。该名字只需要配置为apk中的serverName属性//即可实现自动选择该服务器作为上传服务器公司fir {apiToken TRSFirApiToken}}//蒲公英服务器,下面可以配置多个pgy{//一个蒲公英服务器,"公司pgy"是他的名字,需要两个属性//uKey和apiKey//usePasswordOnInstall 表示安装的时候是否需要密码 值是bool//password  安装需要的密码,值是String//可以配置多个,只有名字唯一就行。该名字只需要配置为apk中的serverName属性//即可实现自动选择该服务器作为上传服务器公司pgy{uKey TRSPgyUKeyapiKey TRSPgyApiKeyusePasswordOnInstall TRSPgyUsePasswordOnInstall.toBoolean()password TRSPgyInstallPassword}}//配置需要生成的apk文件apk {//配置一个apk文件//“正式版”是它的名字,根据这个名字会生成3个任务//打包正式版,发布正式版,加固正式版//buildType 值是String类型,必须是Android配置下的的buildType中的某给值//flavor  值是flavor ,必须是Android配置下的productFlavors中的某个值,没有的话可以自己建一个//serverName 上传的服务器名称,必须是fir配置下,或pgy配置下 某项的名字//useGitLog 是否使用git日志作为更新日志。true的话会提取最近的五条日志作为更新日志//否则更新日志会显示upload by 打包助手正式版 {buildType "release"flavor "official"serverName "公司fir"useGitLog true}测试版 {buildType "release"flavor "BJTest"serverName "公司pgy"useGitLog true}}}android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "com.zgh.apkpublish"minSdkVersion 16targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}//需要配置签名,这样才可以实现全过程的自动化signingConfigs {release {storeFile file('../key/apk_publish.jks')storePassword 'admin123'keyPassword 'admin123'keyAlias = 'publish'}}buildTypes{release{minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'//设置需要使用的签名配置signingConfig signingConfigs.release}debug{//设置需要使用的签名配置signingConfig signingConfigs.release}}//不同的产品风味productFlavors {flavorDimensions "api"official {buildConfigField "String", "BASE_URL", "\"正式环境\""}BJTest{buildConfigField "String", "BASE_URL", "\"测试环境\""}}
}dependencies {implementation 'androidx.appcompat:appcompat:1.3.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

补充说明

1.360加固配置

360加固下载地址
安装成功以后它的安装地址是
jar包就在这个位置

2.curl乱码

win10 自带了curl。但是上传的时候如果包含了中文会出现乱码。比较简单的解决办法就是修改系统的编码。

小编教你把win10系统默认编码为utf8

3.邮箱配置

建议使用QQ邮箱,手机上安装QQ邮箱可以实时收到提醒。
进入QQ邮箱->设置->账户


往下翻

4.Fir Token 获取

fir官网

5.蒲公英 uKey,api key获取

蒲公英首页
点击API信息

功能拓展

GUI扩展

我的GUI是自己编写的库也上传到github了,需要修改的可以自行fork。
GUI

gradle扩展

所有功能实现都在publish.gradle中。可以自行阅读,扩展功能。

也可以参考以下内容实现扩展

Android Gradle学习(五):Extension详解 这是一个系列,值得学习

【Gradle Task】FIR上传脚本(cURL方式、关联git提交次数、更新日志)

curl 的用法指南
Android Gradle 插件版本说明

下载Android gradle 插件

分享一个下载gradle插件源码的小技巧,只需要将你需要的gradle插件作为依赖配置在你的项目中
然后gradle就会下载代码,可以通过反编译查看一些Android gradle不同版本间实现的差异。这样可以提高脚本的兼容性。

最强打包插件,支持fir,蒲公英上传, 360加固 ,自动生成二维码相关推荐

  1. 通过web系统实现淘宝营销引流,小说或者视频上传之后自动生成二维码,通过二维码分享之后引入微信或者扣扣加群,群满自动切换到下一个,以及数据统计分析和若干个小工具集成

    通过web系统实现淘宝营销引流,小说或者视频上传之后自动生成二维码,通过二维码分享之后引入微信或者扣扣加群,群满自动切换到下一个,以及数据统计分析和若干个小工具集成. 主要实现技术: 1.大文件视频分 ...

  2. PHP资格证书查询系统源码 自动生成二维码 支持导入导出功能

    PHP资格证书查询系统源码 自动生成二维码 支持导入导出功能 程序说明: PHP资格证书查询系统源码 证书管理? 自动生成二维码 支持导入和导出功能 采用fastadmin框架开发而成 PHP资格证书 ...

  3. jquery二维码生成插件jquery.qrcode.js在线生成二维码

    一代巨匠金庸先生驾鹤西去,谢谢您的作品,陪我度过儿时的时光 –2018.10.31 一.场景再现 由于业务需求,经常会将访问链接分享给别人,方便其他客户访问我们的业务.在本周的需求中,我们需要根据地址 ...

  4. Vue+element-ui上传logo图片到后端生成二维码展示到页面

    Vue+element-ui上传logo图片生成二维码展示到页面 该文章将介绍如何通过前端上传二维码logo图片在后台生成二维码,并将生成的二维码转换成Base64编码返回给前端在页面展示,用户扫码二 ...

  5. jenkins 下自动构建 生成二维码(不使用蒲公英 fir)

    最近蒲公英每个版本只能下载10次了. 我感觉未来免费的东西会越来越不好,所以准备利用Tengine或者tomcat搭建自己 的下载平台. 先说下如何实现吧: 首先jenkins自动打包apk后, 把a ...

  6. JB的测试之旅-jenkins打包产物生成二维码

    前言 无风不起浪,为什么会做这个事情,就要由前几天讲起了.. 悲剧了 小公司没有资源,因为很多内测都是用第三方的,这边用的是蒲公英: 在某日早上,开发提测,打包,上传pgy,准备给业务方体验的时候,结 ...

  7. Jenkins自动化打包生成二维码下载链接

    在自动化打包流程中,Jenkins是一个不错的工具,可以帮助我们省去很多的打包和部署问题,解放了双手.通常,使用Jenkins 打包好的 apk 文件,我们可以上传到tomcat或者httpd所在服务 ...

  8. jquery.qrcode.js生成二维码插件转成图片格式

    1.qrcode其实是通过使用jQuery实现图形渲染,画图,支持canvas(HTML5)和table两种方式, github源码地址: https://github.com/jeromeetien ...

  9. vue批量生成二维码并压缩打包下载(图片带标题)

    借鉴:原文~~~(但是有问题,在基础上改良) 效果图(生成的二维码带下面标题的): 代码如下: 先安装依赖(或者用命令:npm i jszip): yarn add jszip yarn add fi ...

最新文章

  1. G41显卡Linux驱动,Intel最新G41/G43/G45集成显卡驱动下载
  2. 20172322 《程序设计与数据结构》第八周学习总结
  3. flask(一)之路由和视图
  4. ASP.NET传统的三层架构
  5. 系统背景描述_【计算机论文】管件加工管理系统和数据库的结构探析
  6. 《解析几何》吕林根,徐子道第四版 习题 1.4.7,1.4.8,1.4.9
  7. Oracle控制文件日志文件数据文件迁移
  8. HttpUrlConnection的简单使用--get和post的简单使用
  9. python——numpy——roll()函数
  10. Spark 计算人员三度关系
  11. 亚马逊 kindle 刷机 过程记录
  12. 台式计算机无线网卡,台式机无线网卡怎么选 台式机无线网卡选购指南
  13. 「AR裸眼插画」零基础入门级教程来啦
  14. 最漂亮HTML5高端个人简历自适应模板
  15. android 获取手机号码 权限,Android跳转到通讯录获取用户名称和手机号码
  16. 从零开始学前端 - 1. HTML基础知识
  17. Polygon Soup
  18. macOS Xcode C语言使用延时函数
  19. Word处理控件Aspose.Words功能演示:在 Java 中将 HTML 文件转换为 Word 文档
  20. 开源网安亮相粤港澳大湾区CIO高峰论坛,保障企业数字化安全转型

热门文章

  1. Excel如何批量将文本型数值转为数值
  2. 启动Spring项目详细过程
  3. Odoo丨如何在Odoo中修改HTML编辑工具栏?
  4. node.js把前台传来的base64码转成图片存放
  5. spark on yarn启用动态分配
  6. matlab的series函数怎么用,series函数
  7. PyQt5 如何改变各控件的叠置顺序(有遮盖情况)
  8. PostgreSQL数据库触发器实验
  9. 如何在AE中快速预览?
  10. PHP在大型网站开发