android开发 Gradle多渠道打包以及集成360加固

先上图
android开发  Gradle多渠道打包以及集成360加固
android开发  Gradle多渠道打包以及集成360加固
android开发  Gradle多渠道打包以及集成360加固

先说实现的目的 主要是 用脚本做渠道打包 然后在APP里面添加数据  在启动时读取数据上传服务器做统计
然后为啥要这么做:
第一个是因为APP里面在做渠道包的时候 需要加特定的东西,区别这些APP,
第二个是因为360加固 包名一样,只能加固一个 不能同时加固多个,用工具打包多个,很麻烦

实现步骤:
1、设置渠道包的信息android开发  Gradle多渠道打包以及集成360加固
在build.gradle里面添加代码


android {
、、、

//设置渠道包信息: A1 你自己设置的标识,在每个渠道包里面的dimension 字段 都要是这个
flavorDimensions "A1"
productFlavors {
earthHouse0 {
versionName "aaa0" //自己自定义名称
dimension "A1 "
//设置独立的参数,在activity取出,根据自己的需要设置自己想要的类型,我这里设置的是int
buildConfigField("int", "CURRENTENVIRONMENT", "0")
}
earthHouse1 {
versionName "aaa1"
dimension "A1 "
buildConfigField("int", "CURRENTENVIRONMENT", "1")
}
}

productFlavors.all { flavor ->
manifestPlaceholders.put("UMENG_CHANNEL_VALUE", name)
}

//Gradle升级了3.0后,output.outputFile变成了只读属性,不能再往里面写东西了,以下是3.0之前的配置:
// applicationVariants.all { variant -> //批量修改Apk名字
// variant.outputs.each { output ->
// def outputFile = output.outputFile
// if (outputFile != null && outputFile.name.endsWith('.apk') && 'release'.equals(variant.buildType.name)) {
// def fileName = outputFile.name.replace("${variant.flavorName}", "V${defaultConfig.versionName}-${variant.flavorName}")
// fileName = fileName.replace('.apk', "-${buildTime()}.apk")
// output.outputFile = new File(outputFile.parent, fileName)
// }
// }
// }
//下面是经过修改之后3.0里面批量修改APK名字的配置:
applicationVariants.all { variant -> //批量修改Apk名字
variant.outputs.all { output ->
if (!variant.buildType.isDebuggable()) {
//获取签名的名字 variant.signingConfig.name
//要被替换的源字符串
def sourceFile = "-${variant.flavorName}-${variant.buildType.name}"
//替换的字符串
def replaceFile = "_${variant.versionName}_${buildTime()}"
outputFileName = output.outputFile.name.replace(sourceFile, replaceFile);
//设置输出渠道包的路径
variant.getPackageApplication().outputDirectory = new File("F:\\apk")
}
}
}
、、、
}

渠道包的代码就完了,读取自定义的参数,在Activity中得到值就行了
android开发  Gradle多渠道打包以及集成360加固

2、配置加固信息,记得下载360加固保的程序

android开发  Gradle多渠道打包以及集成360加固
在Build.gradle里面添加参数:
ext和 buildscript,allprojects是同一级别的
android开发  Gradle多渠道打包以及集成360加固

ext {
jiaGuPluginPath = 'xxxxxxx' // 加固保安装的路径
storeFile = file('xxxxxx') // 签名文件位置
storePassword = 'xxxx' // 密码
keyAlias = 'xxx' // 别名
keyPassword = 'xxx' // 密码
jiaGuUserName = 'xxx' // 360加固保用户名
jiaGuPwd = 'xxxx' // 360加固保登录密码
}

3、添加加固代码
android开发  Gradle多渠道打包以及集成360加固

在build.gradle里面添加代码


android {
、、、
//加入360加固任务Task
task reinforceAppTask(dependsOn: 'assembleRelease') {
group "jiaGuApk"
doLast {

def currFile = new File(".")
//生成的apk的路径
def appFilePath = "F:\\apk"

File apkDir = new File(appFilePath)
File[] channelDirs = apkDir.listFiles()
for (int i = 0; i < channelDirs.length; i++) {

File lastFile = channelDirs[i]
println "channelDir 的值:" + lastFile.toString()
if (!lastFile.name.endsWith(".apk")) {
continue
}

println "360加固 begin"
def cmdBase = 'java -jar jiagu.jar'

def cmdLogin = cmdBase + " -login ${rootProject.ext.jiaGuUserName} ${rootProject.ext.jiaGuPwd}"
println "360加固 登录命令::" + cmdLogin.toString()

// println "360加固 rootProject.ext.storeFile.getCanonicalPath():" + rootProject.ext.storeFile.toString()
// println "360加固 rootProject.ext.storeFile.storePassword:" + rootProject.ext.storePassword.toString()
// println "360加固 rootProject.ext.storeFile.keyAlias:" + rootProject.ext.keyAlias.toString()
// println "360加固 rootProject.ext.storeFile.keyPassword:" + rootProject.ext.keyPassword.toString()

//导入签名keystore信息
def cmdImportSign = cmdBase + ' -importsign ' + rootProject.ext.storeFile.toString() + ' ' + rootProject.ext.storePassword + ' ' + rootProject.ext.keyAlias + ' ' + rootProject.ext.keyPassword

println "360加固 导入签名keystore信息: " + cmdImportSign.toString()

// //查看当前签名keystore信息
// def cmdShowSign = cmdBase + ' -showsign'
//
// def cmdConfig = cmdBase + ' -config -x86'
// //查看当前加固增强服务配置
// def cmdShowConfig = cmdBase + ' -showconfig'
// //版本查询
// def cmdVersion = cmdBase + ' -version'

//输出目录这里设置为当前目录
def outPath = new File("F:\\apk\\outputs")
//应用加固
def cmdJiaGu = cmdBase + ' -jiagu ' + lastFile.getPath() + ' ' + outPath.getCanonicalPath() + ' -autosign' + ' -automulpkg'

println "360加固 应用加固命令: " + cmdImportSign.toString()

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()
}
、、、
}

def execute360JiaGuCmd(cmd) {
def p = cmd.execute(null, new File(rootProject.ext.jiaGuPluginPath))
println "execute360JiaGuCmd执行CMD命令:" + p.text
p.waitFor() // 用以等待外部进程调用结束

println "execute360JiaGuCmd执行CMD 命令:" + p.exitValue()
}

上面就是所有的代码了, 注意execute360JiaGuCmd方法 和android是同级的,在代码编写完成之后
点击 Sync Now 重新编译一次,就可以在android studio看到执行的程序了

android开发  Gradle多渠道打包以及集成360加固

双击运行 就可以看到最上面的效果图了

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

android开发  Gradle多渠道打包以及集成360加固

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » android开发 Gradle多渠道打包以及集成360加固
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏