fixed install|if frameworks with commons-compress

This commit is contained in:
Connor Tumbleson 2013-04-30 07:53:17 -05:00
parent 9e50300ec2
commit 47a5eac0b0
2 changed files with 13 additions and 6 deletions

View File

@ -553,6 +553,7 @@ public class Androlib {
// might need to use Zip4j // might need to use Zip4j
} }
} }
apkZipFile.close();
} catch (IOException ex) { } catch (IOException ex) {
throw new AndrolibException(ex); throw new AndrolibException(ex);
} }

View File

@ -44,6 +44,8 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@ -687,10 +689,10 @@ final public class AndrolibResources {
public void installFramework(File frameFile, String tag) public void installFramework(File frameFile, String tag)
throws AndrolibException { throws AndrolibException {
InputStream in = null; InputStream in = null;
ZipOutputStream out = null; ZipArchiveOutputStream out = null;
try { try {
ZipFile zip = new ZipFile(frameFile); ZipExtFile zip = new ZipExtFile(frameFile);
ZipEntry entry = zip.getEntry("resources.arsc"); ZipArchiveEntry entry = zip.getEntry("resources.arsc");
if (entry == null) { if (entry == null) {
throw new AndrolibException("Can't find resources.arsc file"); throw new AndrolibException("Can't find resources.arsc file");
@ -708,15 +710,19 @@ final public class AndrolibResources {
+ (tag == null ? "" : '-' + tag) + (tag == null ? "" : '-' + tag)
+ ".apk"); + ".apk");
out = new ZipOutputStream(new FileOutputStream(outFile)); out = new ZipArchiveOutputStream(new FileOutputStream(outFile));
out.setMethod(ZipOutputStream.STORED); out.setMethod(ZipOutputStream.STORED);
CRC32 crc = new CRC32(); CRC32 crc = new CRC32();
crc.update(data); crc.update(data);
entry = new ZipEntry("resources.arsc"); entry = new ZipArchiveEntry("resources.arsc");
entry.setSize(data.length); entry.setSize(data.length);
entry.setCrc(crc.getValue()); entry.setCrc(crc.getValue());
out.putNextEntry(entry); out.putArchiveEntry(entry);
out.write(data); out.write(data);
out.closeArchiveEntry();
zip.close();
LOGGER.info("Framework installed to: " + outFile); LOGGER.info("Framework installed to: " + outFile);
} catch (ZipException ex) { } catch (ZipException ex) {
throw new AndrolibException(ex); throw new AndrolibException(ex);