Gradle-使用脚本修改包名(package)
https://blog.csdn.net/oheg2010/article/details/103333509
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| ext { //复制代码的目录 fromPath = 'app/src/com/ccdd/xx' //复制要放到的新目录 intoPath = 'app/src/com/aabb/xx' //删除以前的目录 deletePath = 'app/src/com/ccdd' //修改前的package packageName = 'package com.ccdd.xx' //修改后的package toPackageName = 'package com.aabb.xx' //修改前的applicationId applicationIds = 'com.ccdd.xx' //修改后的applicationId toApplicationIds = 'com.aabb.xx' } //替换每一个java文件中的引用路径 task replaceImportPath { //生成一个文件树,替换import后面的路径 FileTree tree = fileTree(dir: 'app') tree.include '**/*.java' tree.include '**/*.xml' //遍历文件树 tree.each { File mfile -> fileReader(mfile.path, toApplicationIds) } //单独替换混淆文件 fileReader("app/proguard-rules.pro", toApplicationIds) fileReader("app/build.gradle", toApplicationIds) } def fileReader(path, target_package) { println("path:" + path) def readerString = ""; def hasReplace = false file(path).withReader('UTF-8') { reader -> reader.eachLine { if (it.find(applicationIds)) { it = it.replace(applicationIds, target_package) hasReplace = true } readerString <<= it readerString << '\n' } if (hasReplace) { //打印替换过的文件名字 println(path + " has replace package.") file(path).withWriter('UTF-8') { within -> within.append(readerString) } } return readerString } }
task copyFile(type: Copy) { //首先调用replacePackageName println("replaceImportPath:" + replaceImportPath) dependsOn replaceImportPath copy { //进行文件替换 from fromPath into intoPath //替换文件 package后面路径 filter { String line -> if (line.find(packageName)) { //替换字符串 line = line.replace(packageName, toPackageName) } "$line" } } println("fromPath:" + fromPath) println("intoPath:" + intoPath)
//删除原目录 File file1 = new File(deletePath); file1.deleteDir(); }
|