先上图


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

实现步骤:
1、设置渠道包的信息
在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中得到值就行了

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


在Build.gradle里面添加参数:
ext和 buildscript,allprojects是同一级别的

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

3、添加加固代码

在build.gradle里面添加代码


android {、、、//加入360加固任务Tasktask 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.keyPasswordprintln "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.separatorprintln "delete outputsPath=" + outputsPathnew File(outputsPath).deleteDir()}
、、、
}def execute360JiaGuCmd(cmd) {def p = cmd.execute(null, new File(rootProject.ext.jiaGuPluginPath))println "execute360JiaGuCmd执行CMD命令:" + p.textp.waitFor()  // 用以等待外部进程调用结束println "execute360JiaGuCmd执行CMD 命令:" + p.exitValue()
}

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

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

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

  1. android studio gradle 多渠道打包配置

    2019独角兽企业重金招聘Python工程师标准>>> 在Gradle中配置输出不同的渠道包 项目中遇到做个笔记,废话没有直接上代码: buildTypes {release {// ...

  2. Android Gradle 多渠道打包、动态配置AppName

    目录 一.简介 二.Gradle多渠道打包 1.普通做法 2.Gradle多渠道打包 一.简介 因为国内Android应用分发市场的现状,我们在发布APP时,一般需要生成多个渠道包,上传到不同的应用市 ...

  3. [转]Android Studio系列教程六--Gradle多渠道打包

    转自:http://www.stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ Android Studio系列教程六--Grad ...

  4. 厦门之旅第一篇Gradle多渠道打包(动态设定App名称,应用图标,背景图片,状态栏颜色)

    我不是诗人,写不出厦门的美:我不是歌手,唱不出厦门的情:我不是画家,画不出厦门的景. 我只是一名程序员,我只能用我的眼,我的心去看去感受,那久违的海风吹拂着脸颊,好似内心那一份烦躁与沉重也随着海风飘向 ...

  5. android多渠道打包插件,Android几种多渠道打包的步骤详解

    1.什么是多渠道打包 在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包.在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的 ...

  6. 【Android开发VR实战】二.播放360°全景视频

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...

  7. walle多渠道打包+Tinker(bugly)热更新集成+360加固(乐固)

    这三个东东是干啥的相信大家都有所耳闻了,如果你没有听说过,请出门左拐,百度一下你就知道.这里不对这三个东东具体的集成方式做详细的介绍,因为官方文档已经写的很详细了,主要是对同时使用这三个东东时所需要注 ...

  8. Android开发之Gradle多渠道打包总结

    首先老套路看图:分别是小米的渠道和应用宝的渠道 这是渠道的渠道号的截图 先说下Gradle的多渠道打包,个人更喜欢这样写: 第一步:需要在清单文件添加标识: <meta-dataandroid: ...

  9. android的多渠道打包,Android美团多渠道打包Walle集成

    一.为什么使用美团多渠道打包的方式? 打包更加快速 传统的通过productFlavors渠道包的方式,渠道10个以内还可以接受,如果100个渠道包,每个包需要打5Min,就是将近10个小时的打包,而 ...

最新文章

  1. 搭建squid代理服务器
  2. 智慧树python程序设计基础山东联盟期末答案_智慧树Python程序设计基础(山东联盟)期末答案...
  3. php图书信息浏览器,使PHP即时输出结果到浏览器
  4. bzoj3140: [Hnoi2013]消毒(二分图)
  5. SAP CRM CRM_PARTNER_READ_MULTI_OB
  6. 第三章 数据的图形展示
  7. 作者:黎建辉(1973-),男,博士,中国科学院计算机网络信息中心研究员、博士生导师...
  8. Redis-与spring的集成(XML形式)
  9. C#基础回顾:正则表达式
  10. [bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业
  11. 基于感知哈希算法的图像相似匹配计算实战
  12. 百度硬盘和Google桌面的比较
  13. 打开要素类错误.几何形状数量与表的纪录数不匹配
  14. STM32_ADC模数转换的基本原理
  15. SCHMIDT SS 20.260 506690传感器ALRE JTF-1/12湿度检测器
  16. 蚂蚁金服提前批实习面经(2.26)
  17. html怎么设置内存当缓存,前端浏览器缓存怎么使用
  18. 免费的开源飞行规划软件Little Navmap
  19. 服务器负载过高的处理方式
  20. HihoCoder - 1847

热门文章

  1. 4.6 explain 之 rows
  2. 《微信企业号开发日志》之企业号接入
  3. [转]IE11下Forms身份认证无法保存Cookie的问题
  4. 在DataList控件中删除数据记录
  5. 用户注册模块详解(30)
  6. 程序员终身发展规划---应对中国软件发展的大环境要求
  7. 编程方法学17:多维数组
  8. 程序基础:数据结构(郝斌讲解)(一)
  9. Sublime Text
  10. Linux下autoconf和automake使用