sort package directories

This commit is contained in:
REAndroid 2023-01-05 13:03:46 -05:00
parent caa721b90f
commit ee2bd9108e
3 changed files with 21 additions and 3 deletions

View File

@ -22,6 +22,17 @@ package com.reandroid.lib.apk.xmlencoder;
import java.util.regex.Pattern;
public class EncodeUtil {
public static void sortPublicXml(List<File> fileList){
Comparator<File> cmp=new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
String n1=f1.getAbsolutePath();
String n2=f2.getAbsolutePath();
return n1.compareTo(n2);
}
};
fileList.sort(cmp);
}
public static void sortValuesXml(List<File> fileList){
Comparator<File> cmp=new Comparator<File>() {
@Override

View File

@ -189,7 +189,7 @@
continue;
}
xmlFiles.addAll(
ApkUtil.recursiveFiles(mainDir, ApkUtil.FILE_NAME_PUBLIC_XML));
ApkUtil.recursiveFiles(dir, ApkUtil.FILE_NAME_PUBLIC_XML));
}
List<File> results = new ArrayList<>();
for(File file:xmlFiles){
@ -197,6 +197,7 @@
results.add(file);
}
}
EncodeUtil.sortPublicXml(results);
return results;
}

View File

@ -17,6 +17,7 @@ package com.reandroid.lib.apk.xmlencoder;
import com.reandroid.lib.arsc.chunk.PackageBlock;
import com.reandroid.lib.arsc.chunk.TypeBlock;
import com.reandroid.lib.arsc.container.SpecTypePair;
import com.reandroid.lib.arsc.decoder.ValueDecoder;
import com.reandroid.lib.arsc.item.SpecString;
import com.reandroid.lib.arsc.pool.TypeStringPool;
@ -92,8 +93,13 @@ class XMLValuesEncoder {
PackageBlock packageBlock = getMaterials().getCurrentPackage();
TypeStringPool typeStringPool = packageBlock.getTypeStringPool();
byte typeId = typeStringPool.idOf(type);
return packageBlock.getSpecTypePairArray()
.getOrCreateTypeBlock(typeId, qualifiers);
SpecTypePair specTypePair
= packageBlock.getSpecTypePairArray().getOrCreate(typeId);
int highest = specTypePair.getHighestEntryCount();
TypeBlock typeBlock = specTypePair
.getOrCreateTypeBlock(qualifiers);
typeBlock.getEntryBlockArray().ensureSize(highest);
return typeBlock;
}
EncodeMaterials getMaterials() {
return materials;