日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/15 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android开发 Gradle多渠道打包以及集成360加固 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先上圖


先說實現的目的 主要是 用腳本做渠道打包 然后在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加固的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。