diff --git a/src/main/java/com/reandroid/lib/apk/ApkUtil.java b/src/main/java/com/reandroid/lib/apk/ApkUtil.java index 2964fae..ec84713 100644 --- a/src/main/java/com/reandroid/lib/apk/ApkUtil.java +++ b/src/main/java/com/reandroid/lib/apk/ApkUtil.java @@ -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"; diff --git a/src/main/java/com/reandroid/lib/apk/StringPoolBuilder.java b/src/main/java/com/reandroid/lib/apk/StringPoolBuilder.java index 713a542..457434a 100644 --- a/src/main/java/com/reandroid/lib/apk/StringPoolBuilder.java +++ b/src/main/java/com/reandroid/lib/apk/StringPoolBuilder.java @@ -60,7 +60,7 @@ public class StringPoolBuilder { mCurrentPackageId=0; List 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 jsonFileList=ApkUtil.recursiveFiles(dir, ".json"); for(File file:jsonFileList){ diff --git a/src/main/java/com/reandroid/lib/apk/TableBlockJson.java b/src/main/java/com/reandroid/lib/apk/TableBlockJson.java index 099db30..46598d5 100644 --- a/src/main/java/com/reandroid/lib/apk/TableBlockJson.java +++ b/src/main/java/com/reandroid/lib/apk/TableBlockJson.java @@ -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('-'); diff --git a/src/main/java/com/reandroid/lib/apk/TableBlockJsonBuilder.java b/src/main/java/com/reandroid/lib/apk/TableBlockJsonBuilder.java index 09c4f6f..2b76b90 100644 --- a/src/main/java/com/reandroid/lib/apk/TableBlockJsonBuilder.java +++ b/src/main/java/com/reandroid/lib/apk/TableBlockJsonBuilder.java @@ -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 typeFileList=ApkUtil.listFiles(pkgDir, ".json"); typeFileList.remove(pkgFile); for(File typeFile:typeFileList){ diff --git a/src/main/java/com/reandroid/lib/arsc/chunk/PackageBlock.java b/src/main/java/com/reandroid/lib/arsc/chunk/PackageBlock.java index 4b52a49..58e0d1a 100755 --- a/src/main/java/com/reandroid/lib/arsc/chunk/PackageBlock.java +++ b/src/main/java/com/reandroid/lib/arsc/chunk/PackageBlock.java @@ -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"; }