mirror of
https://github.com/revanced/Apktool.git
synced 2025-05-04 07:44:26 +02:00
Avoid abuse of getResTable calls and unneeded checks
This commit is contained in:
parent
1fd3f52b9d
commit
204b742cf0
@ -193,7 +193,7 @@ public class Androlib {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void decodeUnknownFiles(ExtFile apkFile, File outDir, ResTable resTable)
|
public void decodeUnknownFiles(ExtFile apkFile, File outDir)
|
||||||
throws AndrolibException {
|
throws AndrolibException {
|
||||||
LOGGER.info("Copying unknown files...");
|
LOGGER.info("Copying unknown files...");
|
||||||
File unknownOut = new File(outDir, UNK_DIRNAME);
|
File unknownOut = new File(outDir, UNK_DIRNAME);
|
||||||
|
@ -97,6 +97,9 @@ public class ApkDecoder {
|
|||||||
|
|
||||||
LOGGER.info("Using Apktool " + Androlib.getVersion() + " on " + mApkFile.getName());
|
LOGGER.info("Using Apktool " + Androlib.getVersion() + " on " + mApkFile.getName());
|
||||||
|
|
||||||
|
// recreate the resource table in case it was already created
|
||||||
|
mResTable = null;
|
||||||
|
|
||||||
if (hasResources()) {
|
if (hasResources()) {
|
||||||
switch (mDecodeResources) {
|
switch (mDecodeResources) {
|
||||||
case DECODE_RESOURCES_NONE:
|
case DECODE_RESOURCES_NONE:
|
||||||
@ -168,7 +171,7 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mAndrolib.decodeRawFiles(mApkFile, outDir, mDecodeAssets);
|
mAndrolib.decodeRawFiles(mApkFile, outDir, mDecodeAssets);
|
||||||
mAndrolib.decodeUnknownFiles(mApkFile, outDir, mResTable);
|
mAndrolib.decodeUnknownFiles(mApkFile, outDir);
|
||||||
mUncompressedFiles = new ArrayList<String>();
|
mUncompressedFiles = new ArrayList<String>();
|
||||||
mAndrolib.recordUncompressedFiles(mApkFile, mUncompressedFiles);
|
mAndrolib.recordUncompressedFiles(mApkFile, mUncompressedFiles);
|
||||||
mAndrolib.writeOriginalFiles(mApkFile, outDir);
|
mAndrolib.writeOriginalFiles(mApkFile, outDir);
|
||||||
@ -324,8 +327,8 @@ public class ApkDecoder {
|
|||||||
meta.version = Androlib.getVersion();
|
meta.version = Androlib.getVersion();
|
||||||
meta.apkFileName = mApkFile.getName();
|
meta.apkFileName = mApkFile.getName();
|
||||||
|
|
||||||
if (mDecodeResources != DECODE_RESOURCES_NONE && (hasManifest() || hasResources())) {
|
if (mResTable != null) {
|
||||||
meta.isFrameworkApk = mAndrolib.isFrameworkApk(getResTable());
|
meta.isFrameworkApk = mAndrolib.isFrameworkApk(mResTable);
|
||||||
putUsesFramework(meta);
|
putUsesFramework(meta);
|
||||||
putSdkInfo(meta);
|
putSdkInfo(meta);
|
||||||
putPackageInfo(meta);
|
putPackageInfo(meta);
|
||||||
@ -340,7 +343,7 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void putUsesFramework(MetaInfo meta) throws AndrolibException {
|
private void putUsesFramework(MetaInfo meta) throws AndrolibException {
|
||||||
Set<ResPackage> pkgs = getResTable().listFramePackages();
|
Set<ResPackage> pkgs = mResTable.listFramePackages();
|
||||||
if (pkgs.isEmpty()) {
|
if (pkgs.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -361,7 +364,7 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void putSdkInfo(MetaInfo meta) throws AndrolibException {
|
private void putSdkInfo(MetaInfo meta) throws AndrolibException {
|
||||||
Map<String, String> info = getResTable().getSdkInfo();
|
Map<String, String> info = mResTable.getSdkInfo();
|
||||||
if (info.size() > 0) {
|
if (info.size() > 0) {
|
||||||
String refValue;
|
String refValue;
|
||||||
if (info.get("minSdkVersion") != null) {
|
if (info.get("minSdkVersion") != null) {
|
||||||
@ -387,12 +390,12 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void putPackageInfo(MetaInfo meta) throws AndrolibException {
|
private void putPackageInfo(MetaInfo meta) throws AndrolibException {
|
||||||
String renamed = getResTable().getPackageRenamed();
|
String renamed = mResTable.getPackageRenamed();
|
||||||
String original = getResTable().getPackageOriginal();
|
String original = mResTable.getPackageOriginal();
|
||||||
|
|
||||||
int id = getResTable().getPackageId();
|
int id = mResTable.getPackageId();
|
||||||
try {
|
try {
|
||||||
id = getResTable().getPackage(renamed).getId();
|
id = mResTable.getPackage(renamed).getId();
|
||||||
} catch (UndefinedResObjectException ignored) {}
|
} catch (UndefinedResObjectException ignored) {}
|
||||||
|
|
||||||
if (Strings.isNullOrEmpty(original)) {
|
if (Strings.isNullOrEmpty(original)) {
|
||||||
@ -409,7 +412,7 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void putVersionInfo(MetaInfo meta) throws AndrolibException {
|
private void putVersionInfo(MetaInfo meta) throws AndrolibException {
|
||||||
VersionInfo info = getResTable().getVersionInfo();
|
VersionInfo info = mResTable.getVersionInfo();
|
||||||
String refValue = ResXmlPatcher.pullValueFromStrings(mOutDir, info.versionName);
|
String refValue = ResXmlPatcher.pullValueFromStrings(mOutDir, info.versionName);
|
||||||
if (refValue != null) {
|
if (refValue != null) {
|
||||||
info.versionName = refValue;
|
info.versionName = refValue;
|
||||||
@ -417,6 +420,14 @@ public class ApkDecoder {
|
|||||||
meta.versionInfo = info;
|
meta.versionInfo = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void putSharedLibraryInfo(MetaInfo meta) {
|
||||||
|
meta.sharedLibrary = mResTable.getSharedLibrary();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void putSparseResourcesInfo(MetaInfo meta) {
|
||||||
|
meta.sparseResources = mResTable.getSparseResources();
|
||||||
|
}
|
||||||
|
|
||||||
private void putUnknownInfo(MetaInfo meta) {
|
private void putUnknownInfo(MetaInfo meta) {
|
||||||
meta.unknownFiles = mAndrolib.mResUnknownFiles.getUnknownFiles();
|
meta.unknownFiles = mAndrolib.mResUnknownFiles.getUnknownFiles();
|
||||||
}
|
}
|
||||||
@ -427,14 +438,6 @@ public class ApkDecoder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void putSparseResourcesInfo(MetaInfo meta) {
|
|
||||||
meta.sparseResources = mResTable.getSparseResources();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void putSharedLibraryInfo(MetaInfo meta) {
|
|
||||||
meta.sharedLibrary = mResTable.getSharedLibrary();
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Androlib mAndrolib;
|
private final Androlib mAndrolib;
|
||||||
|
|
||||||
private final static Logger LOGGER = Logger.getLogger(Androlib.class.getName());
|
private final static Logger LOGGER = Logger.getLogger(Androlib.class.getName());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user