360加固我想大家并不陌生,使用起来也比较简单。只要下载它的加固助手上传我们打包签名好的APK文件就可以完成加固。但我们是否可以让他更加的便捷呢?答案是肯定的。
首先我们下载360加固助手。这里我使用Windows版来说明。
解压后我们将jiagu文件夹放到我们项目的根目录中。
因为360加固支持命令行方式加固,并且提供了详细的命令操作。因此我们可以使用sh脚本来实现。执行sh脚本需要我们的电脑提前安装 Cygwin。
1.首先我们写执行的脚本(jiagu.sh):
#!/bin/bash BASE=../jiagu/jiagu.jar NAME=360加固账号 PASSWORD=360加固账号的密码 KEY_PATH=../app/keystore/test.jks #密钥路径 KEY_PASSWORD=111111 #密钥密码 ALIAS=test #别名 ALIAS_PASSWORD=111111 #别名密码 APK=$1 #需要加固的apk路径 DEST=$2 #输出加固包路径 echo "------ running! ------" java -jar ${BASE} -version java -jar ${BASE} -login ${NAME} ${PASSWORD} java -jar ${BASE} -importsign ${KEY_PATH} ${KEY_PASSWORD} ${ALIAS} ${ALIAS_PASSWORD} java -jar ${BASE} -showsign #java -jar ${BASE}/jiagu.jar -importmulpkg ${BASE}/多渠道模板.txt #根据自身情况使用 java -jar ${BASE} -showmulpkg java -jar ${BASE} -showconfig java -jar ${BASE} -jiagu ${APK} ${DEST} -autosign echo "------ finished! ------" #-login <username> 首次使用必须先登录 <360用户名> # <password> <登录密码> #-importsign <keystore_path> 导入签名信息 <密钥路径> # <keystore_password> <密钥密码> # <alias> <别名> # <alias_password> <别名密码> #-importmulpkg <mulpkg_filepath> 导入多渠道配置信息,txt格式 #-showsign 查看已配置的签名信息 #-showmulpkg 查看已配置的多渠道信息 #-help 显示帮助信息 #-config [-update] 配置加固可选项 【升级通知】 # [-crashlog] 【崩溃日志】 # [-x86] 【x86支持】 #-showconfig 显示已配置加固项 #-version 显示当前版本号 #-update 升级到最新版本 #-jiagu <inputAPKpath> 加固命令 <APK路径> # <outputPath> <输出路径> # [-autosign] 【自动签名】 # [-automulpkg] 【自动多渠道】 # [-pkgparam mulpkg_filepath] 【自定义文件生成多渠道】上面就是我们编写好的脚本代码,上面有详细的注释,大家只需要填写自己的信息即可。
最后我们将此脚本放入之前的jiagu文件夹。
2.gradle集成
上图是打包时Run build的最后Task,可以看到是assembleRelease。我们执行脚本的时间也就在assembleRelease之后。所以有如下代码:
afterEvaluate { android.applicationVariants.all { variant -> variant.assemble.doLast { if (variant.buildType.name.contains('release')) { def apkPath = variant.outputs.get(0).outputFile as File exec { ignoreExitValue true commandLine "sh", "../jiagu/jiagu.sh", apkPath, apkPath.getParent() } } } } }补充:Android Studio 3.0后Gradle插件版本默认为3.0,所以有些方法变化,上面代码中get(0)方法替换为first()方法。其余不变。
def apkPath = variant.outputs.first().outputFile as File我们将它加入我们项目的appbuild.gradle中。代码中的apkPath与apkPath.getParent()就是我们sh脚本中的APK与DEST。
Terminal中执行gradlew assembleRelease
输出:
注意:如果出现类似$’\r’: command not found的错误。可以使用Notepad++打开文件,编辑–>文档格式转换–>转换为UNIX格式–>保存进行处理即可。
51建设Android版一些技术整理
最后,请喜欢的点赞哦,你的鼓励是我的动力!