错误描述
Error:(159, 0) Cannot invoke method toInteger() on null object
"openFile:E:\software\zjjRepository\svn\sdxd\build.gradle">Open File
产生原因
- 先来看一段build.gradle 中获取版本号的的代码
def getVersionCode() {
def versionFile = file('local.properties')
if (versionFile.exists()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionFile))
def versionCode = versionProps['build.number'].toInteger()
println('Current version code is ' + versionCode.toString())
return versionCode
} else {
throw new GradleException("Could not find version.properties!")
}
错误说的是build.number 是空的,也就是说没有取到,这个是从哪取的呢,代码中显示的是local.properties 这个文件中,显然不对。首先我要承认,我对gradle并不熟悉,纯属瞎推理,之后从网上搜了下,大致说的是版本号单独放到一个文件里,里面只有一个build.number ,所以 local.properties一般只放一个sdk的路径的sdk.dir
,so,之后发现project中有一个sys.properties的文件,里面正好写的是build.number=3
很显然,build.gradle 里面写错了 改正之后就不载报那个错了。
之后又报了个别的错,就提个醒,项目中有很多的额复制粘贴,但是gradle在编译的时候是非常严格的,最好确认下,该改的都改了 例如 applicationId ,这个保持个Androidmanifest 中的package 是相同的。注意下哦。