mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-30 22:34:24 +02:00
simplify reference check
This commit is contained in:
parent
2f75149bae
commit
67585ca19c
@ -180,7 +180,7 @@ public class ApkModule {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for(TableString tableString:groupTableString.listItems()){
|
for(TableString tableString:groupTableString.listItems()){
|
||||||
List<Entry> entryList = tableString.listReferencedEntries();
|
List<Entry> entryList = tableString.listReferencedResValueEntries();
|
||||||
if(entryList.size()==0){
|
if(entryList.size()==0){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ public abstract class StringArray<T extends StringItem> extends OffsetBlockArray
|
|||||||
public List<T> listUnusedStrings(){
|
public List<T> listUnusedStrings(){
|
||||||
List<T> results=new ArrayList<>();
|
List<T> results=new ArrayList<>();
|
||||||
for(T item:listItems()){
|
for(T item:listItems()){
|
||||||
if(item.getReferencedList().size()==0){
|
if(!item.hasReference()){
|
||||||
results.add(item);
|
results.add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,14 +38,14 @@ public class ResIdBuilder implements Comparator<Integer> {
|
|||||||
xmlIDArray.ensureSize(size);
|
xmlIDArray.ensureSize(size);
|
||||||
for(int i=0;i<size;i++){
|
for(int i=0;i<size;i++){
|
||||||
ResXmlString xmlString = xmlStringsArray.get(i);
|
ResXmlString xmlString = xmlStringsArray.get(i);
|
||||||
if(xmlString.getReferencedList().size()>0){
|
if(xmlString.hasReference()){
|
||||||
ResXmlString replaceXmlString=new ResXmlString(xmlString.isUtf8(), xmlString.get());
|
ResXmlString replaceXmlString=new ResXmlString(xmlString.isUtf8(), xmlString.get());
|
||||||
xmlStringsArray.setItem(i, replaceXmlString);
|
xmlStringsArray.setItem(i, replaceXmlString);
|
||||||
xmlStringsArray.add(xmlString);
|
xmlStringsArray.add(xmlString);
|
||||||
xmlString=replaceXmlString;
|
xmlString=replaceXmlString;
|
||||||
}
|
}
|
||||||
ResXmlID xmlID = xmlIDArray.get(i);
|
ResXmlID xmlID = xmlIDArray.get(i);
|
||||||
if(xmlID.getReferencedList().size()>0){
|
if(xmlID.hasReference()){
|
||||||
ResXmlID replaceXmlId = new ResXmlID(xmlID.get());
|
ResXmlID replaceXmlId = new ResXmlID(xmlID.get());
|
||||||
xmlIDArray.setItem(i, replaceXmlId);
|
xmlIDArray.setItem(i, replaceXmlId);
|
||||||
xmlIDArray.add(xmlID);
|
xmlIDArray.add(xmlID);
|
||||||
|
@ -197,7 +197,7 @@
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void onUnlinkDataString(StringItem stringItem){
|
protected void onUnlinkDataString(StringItem stringItem){
|
||||||
if(stringItem.getReferencedList().size()==0){
|
if(!stringItem.hasReference()){
|
||||||
stringItem.set("");
|
stringItem.set("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -277,7 +277,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
stringItem.removeReference(reference);
|
stringItem.removeReference(reference);
|
||||||
if(stringItem.getReferencedList().size()==0){
|
if(!stringItem.hasReference()){
|
||||||
stringItem.set("");
|
stringItem.set("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,9 @@ public class ResXmlID extends IntegerItem {
|
|||||||
mReferencedList.add(ref);
|
mReferencedList.add(ref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public boolean hasReference(){
|
||||||
|
return mReferencedList.size()>0;
|
||||||
|
}
|
||||||
public int getReferenceCount(){
|
public int getReferenceCount(){
|
||||||
return mReferencedList.size();
|
return mReferencedList.size();
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.reandroid.arsc.item;
|
package com.reandroid.arsc.item;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class ResXmlString extends StringItem {
|
public class ResXmlString extends StringItem {
|
||||||
public ResXmlString(boolean utf8) {
|
public ResXmlString(boolean utf8) {
|
||||||
@ -25,9 +24,4 @@ public class ResXmlString extends StringItem {
|
|||||||
this(utf8);
|
this(utf8);
|
||||||
set(value);
|
set(value);
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
public String toString(){
|
|
||||||
List<ReferenceItem> refList = getReferencedList();
|
|
||||||
return "USED BY="+refList.size()+"{"+super.toString()+"}";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.reandroid.arsc.item;
|
package com.reandroid.arsc.item;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class SpecString extends StringItem {
|
public class SpecString extends StringItem {
|
||||||
public SpecString(boolean utf8) {
|
public SpecString(boolean utf8) {
|
||||||
super(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
|
// Spec (resource name) don't have style unless to obfuscate/confuse other decompilers
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
public String toString(){
|
|
||||||
List<ReferenceItem> refList = getReferencedList();
|
|
||||||
return "USED BY="+refList.size()+"{"+super.toString()+"}";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,9 @@ public class StringItem extends BlockItem implements JSONConvert<JSONObject> {
|
|||||||
public void removeAllReference(){
|
public void removeAllReference(){
|
||||||
mReferencedList.clear();
|
mReferencedList.clear();
|
||||||
}
|
}
|
||||||
|
public boolean hasReference(){
|
||||||
|
return mReferencedList.size()>0;
|
||||||
|
}
|
||||||
public List<ReferenceItem> getReferencedList(){
|
public List<ReferenceItem> getReferencedList(){
|
||||||
return mReferencedList;
|
return mReferencedList;
|
||||||
}
|
}
|
||||||
@ -250,11 +253,11 @@ public class StringItem extends BlockItem implements JSONConvert<JSONObject> {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
String str=get();
|
String str=getHtml();
|
||||||
if(str==null){
|
if(str==null){
|
||||||
return "NULL";
|
return "NULL";
|
||||||
}
|
}
|
||||||
return str;
|
return "USED BY="+getReferencedList().size()+"{"+str+"}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int[] decodeUtf8StringByteLength(byte[] lengthBytes) {
|
private static int[] decodeUtf8StringByteLength(byte[] lengthBytes) {
|
||||||
|
@ -28,7 +28,7 @@ public class TableString extends StringItem {
|
|||||||
public TableString(boolean utf8) {
|
public TableString(boolean utf8) {
|
||||||
super(utf8);
|
super(utf8);
|
||||||
}
|
}
|
||||||
public List<Entry> listReferencedEntries(){
|
public List<Entry> listReferencedResValueEntries(){
|
||||||
List<Entry> results=new ArrayList<>();
|
List<Entry> results=new ArrayList<>();
|
||||||
for(ReferenceItem ref:getReferencedList()){
|
for(ReferenceItem ref:getReferencedList()){
|
||||||
if(!(ref instanceof ReferenceBlock)){
|
if(!(ref instanceof ReferenceBlock)){
|
||||||
@ -46,9 +46,4 @@ public class TableString extends StringItem {
|
|||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
public String toString(){
|
|
||||||
List<ReferenceItem> refList = getReferencedList();
|
|
||||||
return "USED BY="+refList.size()+"{"+super.toString()+"}";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -35,4 +35,8 @@ package com.reandroid.arsc.item;
|
|||||||
// Type don't have style unless to obfuscate/confuse other decompilers
|
// Type don't have style unless to obfuscate/confuse other decompilers
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public String toString(){
|
||||||
|
return String.format("0x%02x", getId())+':'+get();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user