Android studio gradle实现360加固保自动化打包

Android studio gradle实现360加固保自动化打包

随着目前行业竞争越来越激烈,apk加固防逆向应该是标配,而360加固保应该是这方面比较成熟可靠的加固工具了,一次性完成了签名混淆加固分渠道等等功能,虽然360加固保的客户端操作起来也是十分方便,但是作为程序员应该追求自动化解放生产力的原则嘛,幸好360加固保官方提供了命令行加固模式,然后让它和Gradle脚本进行结合就完美了,下面就开始集成

实现方案

360加固保必须加固一个已经签名的apk,我们可以在执行 assembleRelease 之后马上启动一个加固任务就可以了

具体步骤

下载并安装360加固保

project bulid.gradle 中声名我们需要的一些常量,签名文件位置以及密码别名,和安装的路劲位置等等

```
ext{
      jiaGuPluginPath = 'G:\\program\\360jiagubao_windows_64\\jiagu' //  加固保安装的路劲

     storeFile = file('../xxx/xx.keystore')                                                  // 签名文件位置

     storePassword = 'xxxx'                                                                  //  密码 

     keyAlias = 'xx'                                                                               // 别名

     keyPassword = 'xxxx'                                                                    //  密码

     jiaGuUserName = 'xxxx'                                                              //  360加固保用户名

     jiaGuPwd = 'xxxx'                                                                       //  360加固保登录密码
}

```

app bulid.gradle 执行cmd 命令的方法

```
def execute360JiaGuCmd(cmd){
def p = cmd.execute(null, new File("$rootProject.jiaGuPluginPath"))
println p.text
p.waitFor()  // 用以等待外部进程调用结束
println p.exitValue()
}
```

app bulid.gradle 加入加固任务Task

   android{
    ......
     task reinforceAppTask(dependsOn: 'assembleRelease') {
     group "jiaGuApk"
     doLast {
         println "360加固 begin"
         def currFile = new File(".")
         // 生成的apk的路劲
         def appFilePath = currFile.getCanonicalPath() +
                 File.separator + "build" + File.separator + "outputs"+ File.separator + "apk" + File.separator +
                 "xxxxx.apk";  

         println "appFilePath=" + appFilePath

         if(!new File(appFilePath).exists()){
             println "apk not exist"
             return
         }
         def cmdBase = 'java -jar jiagu.jar'
         def cmdLogin = cmdBase + " -login  ${rootProject.jiaGuUserName}   ${rootProject.jiaGuPwd}"
         def cmdImportSign = cmdBase + ' -importsign ' +
                 rootProject.storeFile.getCanonicalPath() + ' ' + rootProject.storePassword + ' ' + rootProject.keyAlias + ' ' + rootProject.keyPassword
         def cmdShowSign = cmdBase + ' -showsign'
         def cmdConfig = cmdBase + ' -config -x86'
         def cmdShowConfig = cmdBase + ' -showconfig'
         def cmdVersion = cmdBase + ' -version'
         def outPath = new File('..')
         def cmdJiaGu = cmdBase + ' -jiagu ' + appFilePath + ' ' + outPath.getCanonicalPath() + ' -autosign' +' -automulpkg'
         execute360JiaGuCmd(cmdLogin)
         execute360JiaGuCmd(cmdImportSign)
         execute360JiaGuCmd(cmdJiaGu)
         println "360加固 end"
     }
 }

 tasks.whenTaskAdded { theTask ->
     if (theTask.name == "assembleRelease") {
         theTask.dependsOn "cleanOutputsDir"
     }
 }

 task cleanOutputsDir {
     def outputsPath = getBuildDir().getAbsolutePath() + File.separator + "outputs" + File.separator
     println "delete outputsPath=" + outputsPath
     new File(outputsPath).deleteDir()
 }

   }

同步完成之后 工程效果图Android studio gradle实现360加固保自动化打包_第1张图片

点击打包任务完成之后apk 就会出现在工程的根目录中

你可能感兴趣的:(Android)