Android Studio基于360加固的一键加固gradle脚本配置

1.新建plug_360_jiagu.gradle文件

代码如下

def userName360 = ''
def password360 = ''
def package360Path = ''
def mulpkgChannel360Path = ''

def keystoreFilepath = ''
def keystorePSW = ''
def keystoreAlias = ''
def keystoreAliasPSW = ''
def keyfile = file('temp')

//签名相关key
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
keystoreFilepath = properties.getProperty("keystorePath")
if (keystoreFilepath) {
    keystorePSW = properties.getProperty("keystorePassword")
    keystoreAlias = properties.getProperty("keystoreAlias")
    keystoreAliasPSW = properties.getProperty("keystoreAliasPassword")
    keyfile = file(keystoreFilepath)
}

//360加固相关key
userName360 = properties.getProperty("360.userName")
password360 = properties.getProperty("360.password")
package360Path = properties.getProperty("360.packagePath")
mulpkgChannel360Path = project.rootDir.getPath() + File.separator + properties.getProperty("360.mulpkgChannelPath")

def getReleaseApkPath() {

    def apkDir = project.rootDir.getPath() + File.separator + project.getProject().name + File.separator + "build" + File.separator +
            "outputs" + File.separator + "apk"  + File.separator + "release"
    def apkDirFile = new File(apkDir)
    if (!apkDirFile.exists()) {
        throw new RuntimeException("apk output path not exists:" + apkDir)
    }

    def apkPath = null
    for (int i = apkDirFile.listFiles().length - 1; i >= 0; i--) {
        File file = apkDirFile.listFiles()[i]
        if (file.isFile() && file.name.endsWith(".apk")) {
            apkPath = file.getPath()
            break
        }
    }
    return apkPath
}

def getReleaseApkJiaguPath() {
    def apkJiaguDir = project.rootDir.getPath() + File.separator + project.getProject().name + File.separator + "build" + File.separator +
            "outputs" + File.separator + "apk" + File.separator + "release" + File.separator + "jiagu"
    return apkJiaguDir
}

task assemble360jiagu(dependsOn: 'assembleRelease') {
    group = "@构建任务"
    //360加固
    //        https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
    doLast {
        logInfo "################################################360jiagu begin################################################"
        def appFilePath = getReleaseApkPath()
        def appFileJiaguPath = getReleaseApkJiaguPath()

        println "appFilePath=" + appFilePath

        if (!new File(appFilePath).exists()) {
            println "apk not exist"
            return
        }

        def appFileJiagu = new File(appFileJiaguPath)
        if (appFileJiagu.exists()) {
            appFileJiagu.deleteDir()
        }
        new File(appFileJiaguPath).mkdirs()

        logInfo appFilePath
        if (!new File(appFilePath).exists()) {
            logError "apk not exist" + appFilePath
            return
        }
        def cmdBase = 'java.exe -jar ' + package360Path + '\\jiagu\\jiagu.jar'

        def cmdLogin = cmdBase + ' -login ' + userName360 + ' ' + password360
        def cmdImportsign = cmdBase + ' -importsign ' +
                keyfile.getCanonicalPath() + ' ' + keystorePSW + ' ' + keystoreAlias + ' ' + keystoreAliasPSW
        def cmdConfig = cmdBase + ' -config -x86'
        def cmdJiagu = cmdBase + ' -jiagu ' + appFilePath + ' ' + appFileJiaguPath + ' -autosign'


        logInfo '360加固登录中 cmdLogin'
        execute360JiaguCmd(package360Path, cmdLogin)
        logInfo '360加固导入签名 cmdImportsign'
        execute360JiaguCmd(package360Path, cmdImportsign)
        logInfo '360加固配置 cmdConfig'
        execute360JiaguCmd(package360Path, cmdConfig)
        logInfo '360加固开始加固 cmdJiagu'
        execute360JiaguCmd(package360Path, cmdJiagu)
        logInfo "################################################360jiagu end################################################"
    }

}

def execute360JiaguCmd(String package360Path, String cmd) {
    def binPackagePath = package360Path + "\\jiagu\\java\\bin"
    def file = new File(binPackagePath)
    if (!file.exists()) {
        logError "360 binPackagePath not exist " + binPackagePath
    }
    logInfo(cmd)
    def p = cmd.execute(null, file)
    logInfo p.text
    p.waitFor()  // 用以等待外部进程调用结束
    logInfo p.exitValue()
}

def logInfo(text) {
    println '【Info】' + text
}

def logError(text) {
    println '【错误】' + text
}

2.将上述脚本引入app

apply plugin: 'com.android.application'
apply from: 'plug_360_jiagu.gradle'

3.在local.properties文件汇总配置秘钥和360加固包目录

sdk.dir=F\:\\soft\\asCache\\android-sdk-windows
ndk.dir=D\:\\Android\\android-ndk-r16b

360.userName=xxx
360.password=xxxx
360.packagePath=D\:\\soft\\360jiagubao_windows_64
360.mulpkgChannelPath=plug_360_jiagu_channels.txt

plug_360_jiagu_channels.txt

UMENG_CHANNEL 360应用平台 360
UMENG_CHANNEL 小米 xiaomi
UMENG_CHANNEL 华为 huawei
UMENG_CHANNEL 腾讯应用宝 yingyongbao
UMENG_CHANNEL vivo应用商店 vivo

4.在Gradle面板中的目录中使用

在这里插入图片描述

点击assemble360jiagu一键加固按钮,在Build控制台会输出过程信息,等待数十秒后在app/build/outputs/apk/release/jiagu即可查看到加固安装包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值