AndResGuard icon indicating copy to clipboard operation
AndResGuard copied to clipboard

一个疑问

Open NiLuogege opened this issue 5 years ago • 0 comments

在阅读源码的过程中发现 RawARSCDecoder 类中的 readLibraryType()方法中 最后会判断 mHeader.type == Header.TYPE_TYPE 时 调用 readTableTypeSpec()方法。但是在 readTableTypeSpec()方法的第一行中 调用了 readSingleTableTypeSpec()方法。在这个方法中对 headerType 做了判断,如果不是 Header.TYPE_SPEC_TYPE 就会报错(而且ResourceType.h中 也没有发现有提到 RES_TABLE_LIBRARY_TYPE 后面会跟 RES_TABLE_TYPE_SPEC_TYPE )。 所以说 是不是这段逻辑是无用逻辑?求解

 private void readLibraryType() throws AndrolibException, IOException {
        checkChunkType(Header.TYPE_LIBRARY);
        int libraryCount = mIn.readInt();
       ....
        while (mHeader.type == Header.TYPE_TYPE) {
            readTableTypeSpec();
        }
    }

 private void readTableTypeSpec() throws AndrolibException, IOException {
        readSingleTableTypeSpec();

      .....
    }

    private void readSingleTableTypeSpec() throws AndrolibException, IOException {
        checkChunkType(Header.TYPE_SPEC_TYPE);
       .....
    }

NiLuogege avatar Jan 07 '20 06:01 NiLuogege