summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/com/tonicsystems/jarjar/ResourceProcessor.java2
-rw-r--r--src/main/com/tonicsystems/jarjar/ZapProcessor.java2
-rw-r--r--src/main/com/tonicsystems/jarjar/util/EntryStruct.java12
-rw-r--r--src/main/com/tonicsystems/jarjar/util/JarTransformer.java2
4 files changed, 15 insertions, 3 deletions
diff --git a/src/main/com/tonicsystems/jarjar/ResourceProcessor.java b/src/main/com/tonicsystems/jarjar/ResourceProcessor.java
index 40eb520..76f9189 100644
--- a/src/main/com/tonicsystems/jarjar/ResourceProcessor.java
+++ b/src/main/com/tonicsystems/jarjar/ResourceProcessor.java
@@ -28,7 +28,7 @@ class ResourceProcessor implements JarProcessor {
}
public boolean process(EntryStruct struct) throws IOException {
- if (!struct.name.endsWith(".class")) {
+ if (!struct.isClass()) {
struct.name = pr.mapPath(struct.name);
}
return true;
diff --git a/src/main/com/tonicsystems/jarjar/ZapProcessor.java b/src/main/com/tonicsystems/jarjar/ZapProcessor.java
index 76f8298..7431ec3 100644
--- a/src/main/com/tonicsystems/jarjar/ZapProcessor.java
+++ b/src/main/com/tonicsystems/jarjar/ZapProcessor.java
@@ -29,7 +29,7 @@ class ZapProcessor implements JarProcessor {
public boolean process(EntryStruct struct) throws IOException {
String name = struct.name;
- if (name.endsWith(".class")) {
+ if (struct.isClass()) {
return !zap(name.substring(0, name.length() - 6));
}
return true;
diff --git a/src/main/com/tonicsystems/jarjar/util/EntryStruct.java b/src/main/com/tonicsystems/jarjar/util/EntryStruct.java
index 2ebf512..bf72ab5 100644
--- a/src/main/com/tonicsystems/jarjar/util/EntryStruct.java
+++ b/src/main/com/tonicsystems/jarjar/util/EntryStruct.java
@@ -20,4 +20,16 @@ public class EntryStruct {
public byte[] data;
public String name;
public long time;
+
+ /** Returns true if the entry is a class file. */
+ public boolean isClass() {
+ if (!name.endsWith(".class")) {
+ return false;
+ }
+ if (name.startsWith("META-INF/version")) {
+ // TODO(b/69678527): handle multi-release jar files
+ return false;
+ }
+ return true;
+ }
}
diff --git a/src/main/com/tonicsystems/jarjar/util/JarTransformer.java b/src/main/com/tonicsystems/jarjar/util/JarTransformer.java
index a88bcf7..2b07a88 100644
--- a/src/main/com/tonicsystems/jarjar/util/JarTransformer.java
+++ b/src/main/com/tonicsystems/jarjar/util/JarTransformer.java
@@ -23,7 +23,7 @@ import org.objectweb.asm.ClassWriter;
public abstract class JarTransformer implements JarProcessor {
public boolean process(EntryStruct struct) throws IOException {
- if (struct.name.endsWith(".class")) {
+ if (struct.isClass()) {
ClassReader reader;
try {
reader = new ClassReader(struct.data);