6

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

 3 years ago
source link: http://www.androidchina.net/11893.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
最强打包插件,支持fir,蒲公英上传, 360加固 ,自动生成二维码 – Android开发中文站
你的位置:Android开发中文站 > Android开发 > 开发进阶 > 最强打包插件,支持fir,蒲公英上传, 360加固 ,自动生成二维码

由于公司的项目具有多个环境。每次打包都要手动选择编译类型,打包还得上传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地址
[email protected]
#Email的密码,或者token
TRSPublishEmailPassword=abcdabcd
#Email功能是否启用,true或fasle
TRSPublishEmailEnable=true

#公司的FIR

#api_token

TRSFirApiToken=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 TRSPublishEmailServer
        emailAddress TRSPublishEmailAddress
        emailPassWord TRSPublishEmailPassword
  		//string转bool
        enable TRSPublishEmailEnable.toBoolean()
    }

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

项目中配置

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

plugins {
    id 'com.android.application'
}
//引用打包插件
apply from: "publish/publish.gradle"

//配置打包插件
ApkPublish {
	//配置加固信息	
    jiaGu{
        jarPath TRSJiaGuJirPath
        userName TRSJiaGuUserName
        password  TRSJiaGuPassword
        //outPutPath路径中不能包含中文
        outPutPath TRSJiaGuOutPath
    }
	//配置应用信息,在弹窗和而成二维码的时候需要使用
    apkInfo {
        appName "昨日头条"
        appLogo file("/publish/icon/app_logo.png")
    }

	//配置Email,如果不需使用,可以将enable设置为false
    email {
        smtpServer TRSPublishEmailServer
        emailAddress TRSPublishEmailAddress
        emailPassWord TRSPublishEmailPassword
        enable TRSPublishEmailEnable.toBoolean()
    }

	//fir服务器,下面可以配置多个
    fir {
    	//一个fir服务器,"公司fir"是他的名字,只有一个属性apiToken
    	//可以配置多个,只有名字唯一就行。该名字只需要配置为apk中的serverName属性
    	//即可实现自动选择该服务器作为上传服务器
        公司fir {
            apiToken TRSFirApiToken
        }
    }
    //蒲公英服务器,下面可以配置多个
    pgy{
    	//一个蒲公英服务器,"公司pgy"是他的名字,需要两个属性
    	//uKey和apiKey
    	//usePasswordOnInstall 表示安装的时候是否需要密码 值是bool
    	//password  安装需要的密码,值是String
    	//可以配置多个,只有名字唯一就行。该名字只需要配置为apk中的serverName属性
    	//即可实现自动选择该服务器作为上传服务器
        公司pgy{
            uKey TRSPgyUKey
            apiKey TRSPgyApiKey
            usePasswordOnInstall 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 30
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "com.zgh.apkpublish"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    //需要配置签名,这样才可以实现全过程的自动化
    signingConfigs {
        release {
            storeFile file('../key/apk_publish.jks')
            storePassword 'admin123'
            keyPassword 'admin123'
            keyAlias = 'publish'
        }
    }

    buildTypes{
        release{
            minifyEnabled false
            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'
}

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提交次数、更新日志)

](www.jianshu.com/p/12b53f8dd…)

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

下载Android gradle 插件

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

在这里插入图片描述


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK