- Notifications
You must be signed in to change notification settings - Fork16
zhuguohui/ApkPublishDemo
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
由于公司的项目具有多个环境。每次打包都要手动选择编译类型,打包还得上传fir,和蒲公英。最后截二维码给测试。为了偷懒写了一个gradle 脚本。实现以下功能
- 自定义打包类型,可以指定buildType和flavor
- 支持定义多种,多个服务器,fir和蒲公英都支持,每种服务都可以配置多个。
- 支持自动打包上传,上传使用curl具有上传进度
- 支持360加固。只需要简单配置即可实现360自动加固
- 支持自动获取git日志作为更新日志
- 支持配置邮箱,实现打包完成自动提醒。
目前支持的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已经上传至github。需要先下载demo。
将其中的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配置(一)
#-------------------------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的密码,或者tokenTRSPublishEmailPassword=abcdabcd#Email功能是否启用,true或fasleTRSPublishEmailEnable=true#公司的FIR#api_tokenTRSFirApiToken=abc123456789#公司的蒲公英配置#ukeyTRSPgyUKey=abc123456789#api_keyTRSPgyApiKey=abc123456789#安装的时候使用密码 true 或falseTRSPgyUsePasswordOnInstall=false#安装密码TRSPgyInstallPassword=123456#-------------------------App发布助手需要的变量---end---------------------------
补充: 这个properties文件最后解析成一个Map<String,String> 所以如果是路径包含了斜杠等符号,需要使用转义。注释中有说明。
定义在该文件中的变量可以在build.gradle中直接使用。但是如果要让其转换成其他值,比如String转Boolean需要这样写。
email { smtpServerTRSPublishEmailServer emailAddressTRSPublishEmailAddress emailPassWordTRSPublishEmailPassword//string转bool enableTRSPublishEmailEnable.toBoolean() }
因为360加固包不支持中文,所以生成的apk的名字和存放的路径都不能含有中文
这是demo中的完整build.gradle文件。方便大家查看 。相关的说明我都写在注释里了。
plugins { id'com.android.application'}//引用打包插件applyfrom:"publish/publish.gradle"//配置打包插件ApkPublish {//配置加固信息 jiaGu{ jarPathTRSJiaGuJirPath userNameTRSJiaGuUserName passwordTRSJiaGuPassword//outPutPath路径中不能包含中文 outPutPathTRSJiaGuOutPath }//配置应用信息,在弹窗和而成二维码的时候需要使用 apkInfo { appName"昨日头条" appLogo file("/publish/icon/app_logo.png") }//配置Email,如果不需使用,可以将enable设置为false email { smtpServerTRSPublishEmailServer emailAddressTRSPublishEmailAddress emailPassWordTRSPublishEmailPassword enableTRSPublishEmailEnable.toBoolean() }//fir服务器,下面可以配置多个 fir {//一个fir服务器,"公司fir"是他的名字,只有一个属性apiToken//可以配置多个,只有名字唯一就行。该名字只需要配置为apk中的serverName属性//即可实现自动选择该服务器作为上传服务器 公司fir { apiTokenTRSFirApiToken } }//蒲公英服务器,下面可以配置多个 pgy{//一个蒲公英服务器,"公司pgy"是他的名字,需要两个属性//uKey和apiKey//usePasswordOnInstall 表示安装的时候是否需要密码 值是bool//password 安装需要的密码,值是String//可以配置多个,只有名字唯一就行。该名字只需要配置为apk中的serverName属性//即可实现自动选择该服务器作为上传服务器 公司pgy{ uKeyTRSPgyUKey apiKeyTRSPgyApiKey usePasswordOnInstallTRSPgyUsePasswordOnInstall.toBoolean() passwordTRSPgyInstallPassword } }//配置需要生成的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" useGitLogtrue } 测试版 { buildType"release" flavor"BJTest" serverName"公司pgy" useGitLogtrue } }}android { compileSdkVersion30 buildToolsVersion"30.0.3" defaultConfig { applicationId"com.zgh.apkpublish" minSdkVersion16 targetSdkVersion30 versionCode1 versionName"1.0" testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner" }//需要配置签名,这样才可以实现全过程的自动化 signingConfigs { release { storeFile file('../key/apk_publish.jks') storePassword'admin123' keyPassword'admin123' keyAlias='publish' } } buildTypes{ release{ minifyEnabledfalse proguardFiles 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'}
360加固下载地址安装成功以后它的安装地址是jar包就在这个位置
win10 自带了curl。但是上传的时候如果包含了中文会出现乱码。比较简单的解决办法就是修改系统的编码。
建议使用QQ邮箱,手机上安装QQ邮箱可以实时收到提醒。进入QQ邮箱->设置->账户
蒲公英首页点击API信息
我的GUI是自己编写的库也上传到github了,需要修改的可以自行fork。GUI
所有功能实现都在publish.gradle中。可以自行阅读,扩展功能。
也可以参考以下内容实现扩展
Android Gradle学习(五):Extension详解 这是一个系列,值得学习
分享一个下载gradle插件源码的小技巧,只需要将你需要的gradle插件作为依赖配置在你的项目中然后gradle就会下载代码,可以通过反编译查看一些Android gradle不同版本间实现的差异。这样可以提高脚本的兼容性。
About
最强Android 打包插件,支持fir,蒲公英上传, 360加固 ,自动生成二维码
Resources
Uh oh!
There was an error while loading.Please reload this page.