最新android studio升级到 2.2 了,随着gradle也升级到 2.2.0
但是更新后DefaultManifestParser 可能会出现如下问题,导致编译不过
Error:A problem occurred evaluating project ':app'.
Error:(16, 1) A problem occurred evaluating project ':app'. java.lang.NullPointerException (no error message)
那么之前我们可能是这么获取版本号的
int getVersionCode(manifestFile) {
def manifestParser = new DefaultManifestParser()
//def manifestParser = new DefaultManifestParser(manifestFile)
return manifestParser.getVersionCode(manifestFile)
}
改成这样就ok了
int getVersionCode(manifestFile) {
def manifestParser = new DefaultManifestParser((File) manifestFile)
return manifestParser.getVersionCode()
}
解决原理是DefaultManifestParser有这么个构造函数
public DefaultManifestParser(File manifestFile) {
if(!manifestFile.exists()) {
this.attributeValues = Maps.newHashMap();
} else {
HashSet xPaths = Sets.newHashSet(new String[]{AndroidManifest.getPackageXPath(), AndroidManifest.getVersionNameXPath(), AndroidManifest.getVersionCodeXPath(), AndroidManifest.getMinSdkVersionXPath(), AndroidManifest.getTargetSdkVersionXPath(), AndroidManifest.getInstrumentationRunnerXPath(), AndroidManifest.getTestTargetPackageXPath(), AndroidManifest.getTestFunctionalTestXPath(), AndroidManifest.getTestHandleProfilingXPath(), AndroidManifest.getTestLabelXPath(), AndroidManifest.getExtractNativeLibsXPath()});
this.attributeValues = getStringValues(manifestFile, xPaths);
}
}