gradle升级到2.2.0 DefaultManifestParser 编译不过

来源:互联网 发布:java读取文件 编辑:程序博客网 时间:2024/04/30 13:44

最新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);        }    }
1 0
原创粉丝点击