當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。