From 07b43d687c93bf95445f6c957fd9333e8abce747 Mon Sep 17 00:00:00 2001 From: thuxnder Date: Fri, 27 Feb 2015 06:29:44 +0100 Subject: [PATCH] use BufferedInputStream for APK faster xml escape function --- .../src/main/java/brut/androlib/res/AndrolibResources.java | 4 ++-- .../src/main/java/brut/androlib/res/xml/ResXmlEncoders.java | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/AndrolibResources.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/AndrolibResources.java index a3c66b88..1f68d172 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/AndrolibResources.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/AndrolibResources.java @@ -619,8 +619,8 @@ final public class AndrolibResources { private ResPackage[] getResPackagesFromApk(ExtFile apkFile,ResTable resTable, boolean keepBroken) throws AndrolibException { try { - return ARSCDecoder.decode(apkFile.getDirectory().getFileInput("resources.arsc"),false, - keepBroken, resTable).getPackages(); + BufferedInputStream bfi = new BufferedInputStream(apkFile.getDirectory().getFileInput("resources.arsc")); + return ARSCDecoder.decode(bfi, false, keepBroken, resTable).getPackages(); } catch (DirectoryException ex) { throw new AndrolibException("Could not load resources.arsc from file: " + apkFile, ex); } diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java index 997f581d..8cf7bdb4 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlEncoders.java @@ -22,13 +22,15 @@ import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.StringUtils; + /** * @author Ryszard Wiśniewski */ public final class ResXmlEncoders { public static String escapeXmlChars(String str) { - return str.replace("&", "&").replace("<", "<"); + return StringUtils.replace(StringUtils.replace(str, "&", "&"), "<", "<"); } public static String encodeAsResXmlAttr(String str) {