simplify reference check

This commit is contained in:
REAndroid 2023-02-17 08:41:47 -05:00
parent 2f75149bae
commit 67585ca19c
10 changed files with 19 additions and 27 deletions

View File

@ -180,7 +180,7 @@ public class ApkModule {
continue;
}
for(TableString tableString:groupTableString.listItems()){
List<Entry> entryList = tableString.listReferencedEntries();
List<Entry> entryList = tableString.listReferencedResValueEntries();
if(entryList.size()==0){
continue;
}

View File

@ -58,7 +58,7 @@ public abstract class StringArray<T extends StringItem> extends OffsetBlockArray
public List<T> listUnusedStrings(){
List<T> results=new ArrayList<>();
for(T item:listItems()){
if(item.getReferencedList().size()==0){
if(!item.hasReference()){
results.add(item);
}
}

View File

@ -38,14 +38,14 @@ public class ResIdBuilder implements Comparator<Integer> {
xmlIDArray.ensureSize(size);
for(int i=0;i<size;i++){
ResXmlString xmlString = xmlStringsArray.get(i);
if(xmlString.getReferencedList().size()>0){
if(xmlString.hasReference()){
ResXmlString replaceXmlString=new ResXmlString(xmlString.isUtf8(), xmlString.get());
xmlStringsArray.setItem(i, replaceXmlString);
xmlStringsArray.add(xmlString);
xmlString=replaceXmlString;
}
ResXmlID xmlID = xmlIDArray.get(i);
if(xmlID.getReferencedList().size()>0){
if(xmlID.hasReference()){
ResXmlID replaceXmlId = new ResXmlID(xmlID.get());
xmlIDArray.setItem(i, replaceXmlId);
xmlIDArray.add(xmlID);

View File

@ -197,7 +197,7 @@
}
@Override
protected void onUnlinkDataString(StringItem stringItem){
if(stringItem.getReferencedList().size()==0){
if(!stringItem.hasReference()){
stringItem.set("");
}
}
@ -277,7 +277,7 @@
return;
}
stringItem.removeReference(reference);
if(stringItem.getReferencedList().size()==0){
if(!stringItem.hasReference()){
stringItem.set("");
}
}

View File

@ -42,6 +42,9 @@ public class ResXmlID extends IntegerItem {
mReferencedList.add(ref);
}
}
public boolean hasReference(){
return mReferencedList.size()>0;
}
public int getReferenceCount(){
return mReferencedList.size();
}

View File

@ -15,7 +15,6 @@
*/
package com.reandroid.arsc.item;
import java.util.List;
public class ResXmlString extends StringItem {
public ResXmlString(boolean utf8) {
@ -25,9 +24,4 @@ public class ResXmlString extends StringItem {
this(utf8);
set(value);
}
@Override
public String toString(){
List<ReferenceItem> refList = getReferencedList();
return "USED BY="+refList.size()+"{"+super.toString()+"}";
}
}

View File

@ -15,8 +15,6 @@
*/
package com.reandroid.arsc.item;
import java.util.List;
public class SpecString extends StringItem {
public SpecString(boolean utf8) {
super(utf8);
@ -26,9 +24,4 @@ package com.reandroid.arsc.item;
// Spec (resource name) don't have style unless to obfuscate/confuse other decompilers
return null;
}
@Override
public String toString(){
List<ReferenceItem> refList = getReferencedList();
return "USED BY="+refList.size()+"{"+super.toString()+"}";
}
}

View File

@ -50,6 +50,9 @@ public class StringItem extends BlockItem implements JSONConvert<JSONObject> {
public void removeAllReference(){
mReferencedList.clear();
}
public boolean hasReference(){
return mReferencedList.size()>0;
}
public List<ReferenceItem> getReferencedList(){
return mReferencedList;
}
@ -250,11 +253,11 @@ public class StringItem extends BlockItem implements JSONConvert<JSONObject> {
}
@Override
public String toString(){
String str=get();
String str=getHtml();
if(str==null){
return "NULL";
}
return str;
return "USED BY="+getReferencedList().size()+"{"+str+"}";
}
private static int[] decodeUtf8StringByteLength(byte[] lengthBytes) {

View File

@ -28,7 +28,7 @@ public class TableString extends StringItem {
public TableString(boolean utf8) {
super(utf8);
}
public List<Entry> listReferencedEntries(){
public List<Entry> listReferencedResValueEntries(){
List<Entry> results=new ArrayList<>();
for(ReferenceItem ref:getReferencedList()){
if(!(ref instanceof ReferenceBlock)){
@ -46,9 +46,4 @@ public class TableString extends StringItem {
}
return results;
}
@Override
public String toString(){
List<ReferenceItem> refList = getReferencedList();
return "USED BY="+refList.size()+"{"+super.toString()+"}";
}
}

View File

@ -35,4 +35,8 @@ package com.reandroid.arsc.item;
// Type don't have style unless to obfuscate/confuse other decompilers
return null;
}
@Override
public String toString(){
return String.format("0x%02x", getId())+':'+get();
}
}