当前位置: 首页>>代码示例>>Java>>正文


Java ARSCData类代码示例

本文整理汇总了Java中brut.androlib.res.decoder.ARSCDecoder.ARSCData的典型用法代码示例。如果您正苦于以下问题:Java ARSCData类的具体用法?Java ARSCData怎么用?Java ARSCData使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


ARSCData类属于brut.androlib.res.decoder.ARSCDecoder包,在下文中一共展示了ARSCData类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: installFramework

import brut.androlib.res.decoder.ARSCDecoder.ARSCData; //导入依赖的package包/类
public void installFramework(File frameFile, String tag)
        throws AndrolibException {
    InputStream in = null;
    ZipOutputStream out = null;
    try {
        ZipFile zip = new ZipFile(frameFile);
        ZipEntry entry = zip.getEntry("resources.arsc");

        if (entry == null) {
            throw new AndrolibException("Can't find resources.arsc file");
        }

        in = zip.getInputStream(entry);
        byte[] data = IOUtils.toByteArray(in);

        ARSCData arsc = ARSCDecoder.decode(new ByteArrayInputStream(data), true, true);
        publicizeResources(data, arsc.getFlagsOffsets());

        File outFile = new File(getFrameworkDir(), String.valueOf(arsc
                .getOnePackage().getId())
                + (tag == null ? "" : '-' + tag)
                + ".apk");

        out = new ZipOutputStream(new FileOutputStream(outFile));
        out.setMethod(ZipOutputStream.STORED);
        CRC32 crc = new CRC32();
        crc.update(data);
        entry = new ZipEntry("resources.arsc");
        entry.setSize(data.length);
        entry.setCrc(crc.getValue());
        out.putNextEntry(entry);
        out.write(data);
        out.closeEntry();
        
        //Write fake AndroidManifest.xml file to support original aapt
        entry = zip.getEntry("AndroidManifest.xml");
        if (entry != null) {
            in = zip.getInputStream(entry);
            byte[] manifest = IOUtils.toByteArray(in);
            CRC32 manifestCrc = new CRC32();
            manifestCrc.update(manifest);
            entry.setSize(manifest.length);
            entry.setCompressedSize(-1);
            entry.setCrc(manifestCrc.getValue());
            out.putNextEntry(entry);
            out.write(manifest);
            out.closeEntry();
        }

        zip.close();
        LOGGER.info("Framework installed to: " + outFile);
    } catch (IOException ex) {
        throw new AndrolibException(ex);
    } finally {
        IOUtils.closeQuietly(in);
        IOUtils.closeQuietly(out);
    }
}
 
开发者ID:4455jkjh,项目名称:apktool-android,代码行数:59,代码来源:AndrolibResources.java


注:本文中的brut.androlib.res.decoder.ARSCDecoder.ARSCData类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。