mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-30 22:34:24 +02:00
Handle duplicate PackageBlock & StagedAlias json conversion
This commit is contained in:
parent
12f4d4f9d6
commit
c2a9ebd7e9
@ -140,7 +140,6 @@ public class ApkUtil {
|
||||
public static final String JSON_FILE_EXTENSION=".json";
|
||||
public static final String RES_JSON_NAME="res-json";
|
||||
public static final String ROOT_NAME="root";
|
||||
public static final String PACKAGE_JSON_FILE="package.json";
|
||||
public static final String SPLIT_JSON_DIRECTORY="resources";
|
||||
public static final String DEF_MODULE_NAME="base";
|
||||
public static final String NAME_value_type="value_type";
|
||||
|
@ -60,7 +60,7 @@ public class StringPoolBuilder {
|
||||
mCurrentPackageId=0;
|
||||
List<File> pkgDirList=ApkUtil.listDirectories(resourcesDir);
|
||||
for(File dir:pkgDirList){
|
||||
File pkgFile=new File(dir, ApkUtil.PACKAGE_JSON_FILE);
|
||||
File pkgFile=new File(dir, PackageBlock.JSON_FILE_NAME);
|
||||
scanFile(pkgFile);
|
||||
List<File> jsonFileList=ApkUtil.recursiveFiles(dir, ".json");
|
||||
for(File file:jsonFileList){
|
||||
|
@ -16,6 +16,7 @@
|
||||
package com.reandroid.lib.apk;
|
||||
|
||||
import com.reandroid.lib.arsc.chunk.PackageBlock;
|
||||
import com.reandroid.lib.arsc.chunk.StagedAlias;
|
||||
import com.reandroid.lib.arsc.chunk.TableBlock;
|
||||
import com.reandroid.lib.arsc.chunk.TypeBlock;
|
||||
import com.reandroid.lib.arsc.container.SpecTypePair;
|
||||
@ -43,6 +44,10 @@ public class TableBlockJson {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
jsonObject.put(PackageBlock.NAME_package_id, packageBlock.getId());
|
||||
jsonObject.put(PackageBlock.NAME_package_name, packageBlock.getName());
|
||||
StagedAlias stagedAlias=StagedAlias.mergeAll(packageBlock.getStagedAliasList().getChildes());
|
||||
if(stagedAlias!=null){
|
||||
jsonObject.put(PackageBlock.NAME_staged_aliases, stagedAlias.getStagedAliasEntryArray().toJson());
|
||||
}
|
||||
jsonObject.write(infoFile);
|
||||
for(SpecTypePair specTypePair: packageBlock.listAllSpecTypePair()){
|
||||
for(TypeBlock typeBlock:specTypePair.getTypeBlockArray().listItems()){
|
||||
@ -67,6 +72,8 @@ public class TableBlockJson {
|
||||
private String getDirName(PackageBlock packageBlock){
|
||||
StringBuilder builder=new StringBuilder();
|
||||
builder.append(String.format("0x%02x", packageBlock.getId()));
|
||||
builder.append("-");
|
||||
builder.append(packageBlock.getIndex());
|
||||
String name= packageBlock.getName();
|
||||
if(name!=null){
|
||||
builder.append('-');
|
||||
|
@ -16,9 +16,11 @@
|
||||
package com.reandroid.lib.apk;
|
||||
|
||||
import com.reandroid.lib.arsc.chunk.PackageBlock;
|
||||
import com.reandroid.lib.arsc.chunk.StagedAlias;
|
||||
import com.reandroid.lib.arsc.chunk.TableBlock;
|
||||
import com.reandroid.lib.arsc.chunk.TypeBlock;
|
||||
import com.reandroid.lib.arsc.value.ResConfig;
|
||||
import com.reandroid.lib.json.JSONArray;
|
||||
import com.reandroid.lib.json.JSONObject;
|
||||
|
||||
import java.io.File;
|
||||
@ -50,7 +52,7 @@ public class TableBlockJsonBuilder {
|
||||
return tableBlock;
|
||||
}
|
||||
private void scanPackageDirectory(TableBlock tableBlock, File pkgDir) throws IOException{
|
||||
File pkgFile=new File(pkgDir, "package.json");
|
||||
File pkgFile=new File(pkgDir, PackageBlock.JSON_FILE_NAME);
|
||||
if(!pkgFile.isFile()){
|
||||
throw new IOException("Invalid package directory! Package file missing: "+pkgFile);
|
||||
}
|
||||
@ -60,6 +62,12 @@ public class TableBlockJsonBuilder {
|
||||
String name=jsonObject.optString(PackageBlock.NAME_package_name);
|
||||
PackageBlock pkg=tableBlock.getPackageArray().getOrCreate((byte) id);
|
||||
pkg.setName(name);
|
||||
if(jsonObject.has(PackageBlock.NAME_staged_aliases)){
|
||||
JSONArray stagedJson = jsonObject.getJSONArray(PackageBlock.NAME_staged_aliases);
|
||||
StagedAlias stagedAlias = new StagedAlias();
|
||||
stagedAlias.getStagedAliasEntryArray().fromJson(stagedJson);
|
||||
pkg.getStagedAliasList().add(stagedAlias);
|
||||
}
|
||||
List<File> typeFileList=ApkUtil.listFiles(pkgDir, ".json");
|
||||
typeFileList.remove(pkgFile);
|
||||
for(File typeFile:typeFileList){
|
||||
|
@ -400,5 +400,5 @@ package com.reandroid.lib.arsc.chunk;
|
||||
public static final String JSON_FILE_NAME = "package.json";
|
||||
private static final String NAME_specs="specs";
|
||||
private static final String NAME_libraries="libraries";
|
||||
private static final String NAME_staged_aliases="staged_aliases";
|
||||
public static final String NAME_staged_aliases="staged_aliases";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user