看图,在 random.gradle里面写了个方法,想在 build.gradle中去调用它,但是报错了,有些搞不懂这个是什么错误,


如图二,在任务中运行的话,是成功的,但是在方法中调用却失败了,已经 Sync 或者删除过 build文件重新进行编译了
报错信息如下:
Build file 'E:\AndroidProject\Web\XXX\app\build.gradle' line: 30
Execution failed for task ':app:generateDebugJunkCode'.
> No signature of method: static build_1xgs86xud93y4xkqtvhepha9k.generateName3() is applicable for argument types:
(Integer) values: [7]
Possible solutions: generateName(int)
顺便再问一下:gradle有工具可以检测语法错误吗?
修改一下:
generateName0(int index) { def random = new Random() def abc = "abcdefghijklmnopqrstuvwxyz".toCharArray() def sb = new StringBuilder() for (i in 0..4) { sb.append(abc[random.nextInt(abc.size())]) } int temp = index while (temp >= 0) { sb.append(abc[temp % abc.size()]) temp = temp / abc.size() if (temp == 0) { temp = -1 } } sb.append(index.toString()) return sb.toString() }然后调用
加一些日志输出。
结贴
build.gradle中的代码如下:
apply from: 'random.gradle' //def randomFile = rootProject.file('app/random.gradle') //apply from: randomFile task getName1{ doLast{ def name = generateName3(5) println "Romdd------------- $name" } } static String generateName(int index) { return generateName3(index)}
random.gradle中代码如下:
import java.security.SecureRandom SecureRandom random = new SecureRandom() ext.generateName3 = { length -> println "阿猫阿狗------------- $name" StringBuilder sb = new StringBuilder() String alphabets = "abcdefghijklmnopqrstuvwxyz" for (int i=0; i<length; i++) { int index = random.nextInt(alphabets.length()) sb.append(alphabets.charAt(index)) } return sb.toString() }//// 随机生成一个名称 static String generateName0(int index) { def random = new Random() def abc = "abcdefghijklmnopqrstuvwxyz".toCharArray() def sb = new StringBuilder() for (i in 0..4) { sb.append(abc[random.nextInt(abc.size())]) } int temp = index while (temp >= 0) { sb.append(abc[temp % abc.size()]) temp = temp / abc.size() if (temp == 0) { temp = -1 } } sb.append(index.toString()) return sb.toString() }加日志,看看走到哪步,然后你静态的调用非静态的吗?