Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

**Changed**
- Replace `com.jakewharton.diffuse.io.Size` with `me.saket.bytesize.ByteSize` in the APIs.
- Eliminate `data class` from public APIs.

**Fixed**
- Significantly improve `.jar` diff performance.
Expand Down
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ buildscript {
classpath libs.mavenPublishPlugin
classpath libs.spotlessPlugin
classpath libs.buildConfigPlugin
classpath libs.pokoPlugin
}
repositories {
mavenCentral()
Expand Down
22 changes: 0 additions & 22 deletions formats/api/formats.api
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,6 @@ public final class com/jakewharton/diffuse/format/Apk$Companion {

public final class com/jakewharton/diffuse/format/ArchiveFile {
public fun <init> (Ljava/lang/String;Lcom/jakewharton/diffuse/format/ArchiveFile$Type;Lme/saket/bytesize/ByteSize;Lme/saket/bytesize/ByteSize;Z)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/jakewharton/diffuse/format/ArchiveFile$Type;
public final fun component3 ()Lme/saket/bytesize/ByteSize;
public final fun component4 ()Lme/saket/bytesize/ByteSize;
public final fun component5 ()Z
public final fun copy (Ljava/lang/String;Lcom/jakewharton/diffuse/format/ArchiveFile$Type;Lme/saket/bytesize/ByteSize;Lme/saket/bytesize/ByteSize;Z)Lcom/jakewharton/diffuse/format/ArchiveFile;
public static synthetic fun copy$default (Lcom/jakewharton/diffuse/format/ArchiveFile;Ljava/lang/String;Lcom/jakewharton/diffuse/format/ArchiveFile$Type;Lme/saket/bytesize/ByteSize;Lme/saket/bytesize/ByteSize;ZILjava/lang/Object;)Lcom/jakewharton/diffuse/format/ArchiveFile;
public fun equals (Ljava/lang/Object;)Z
Expand Down Expand Up @@ -217,10 +212,6 @@ public final class com/jakewharton/diffuse/format/Arsc$Entry : java/lang/Compara
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public fun compareTo (Lcom/jakewharton/diffuse/format/Arsc$Entry;)I
public synthetic fun compareTo (Ljava/lang/Object;)I
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/jakewharton/diffuse/format/Arsc$Entry;
public static synthetic fun copy$default (Lcom/jakewharton/diffuse/format/Arsc$Entry;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/jakewharton/diffuse/format/Arsc$Entry;
public fun equals (Ljava/lang/Object;)Z
public final fun getName ()Ljava/lang/String;
public final fun getType ()Ljava/lang/String;
Expand Down Expand Up @@ -276,9 +267,6 @@ public final class com/jakewharton/diffuse/format/Field : com/jakewharton/diffus
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun compareTo (Lcom/jakewharton/diffuse/format/Member;)I
public synthetic fun compareTo (Ljava/lang/Object;)I
public final fun component1-BeHrSHk ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3-BeHrSHk ()Ljava/lang/String;
public final fun copy-sziKtKI (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/jakewharton/diffuse/format/Field;
public static synthetic fun copy-sziKtKI$default (Lcom/jakewharton/diffuse/format/Field;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/jakewharton/diffuse/format/Field;
public fun equals (Ljava/lang/Object;)Z
Expand Down Expand Up @@ -316,10 +304,6 @@ public final class com/jakewharton/diffuse/format/Method : com/jakewharton/diffu
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun compareTo (Lcom/jakewharton/diffuse/format/Member;)I
public synthetic fun compareTo (Ljava/lang/Object;)I
public final fun component1-BeHrSHk ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/util/List;
public final fun component4-BeHrSHk ()Ljava/lang/String;
public final fun copy-UgLDmOQ (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;)Lcom/jakewharton/diffuse/format/Method;
public static synthetic fun copy-UgLDmOQ$default (Lcom/jakewharton/diffuse/format/Method;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;ILjava/lang/Object;)Lcom/jakewharton/diffuse/format/Method;
public fun equals (Ljava/lang/Object;)Z
Expand All @@ -334,12 +318,6 @@ public final class com/jakewharton/diffuse/format/Method : com/jakewharton/diffu
public final class com/jakewharton/diffuse/format/Signatures {
public static final field Companion Lcom/jakewharton/diffuse/format/Signatures$Companion;
public fun <init> (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
public final fun component1 ()Ljava/util/List;
public final fun component2 ()Ljava/util/List;
public final fun component3 ()Ljava/util/List;
public final fun component4 ()Ljava/util/List;
public final fun copy (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Lcom/jakewharton/diffuse/format/Signatures;
public static synthetic fun copy$default (Lcom/jakewharton/diffuse/format/Signatures;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;ILjava/lang/Object;)Lcom/jakewharton/diffuse/format/Signatures;
public fun equals (Ljava/lang/Object;)Z
public final fun getV1 ()Ljava/util/List;
public final fun getV2 ()Ljava/util/List;
Expand Down
1 change: 1 addition & 0 deletions formats/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'com.vanniktech.maven.publish'
apply plugin: 'org.jetbrains.dokka'
apply plugin: "dev.drewhamilton.poko"

dependencies {
api projects.io
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,26 @@
package com.jakewharton.diffuse.format

import com.jakewharton.diffuse.format.Arsc as ArscFormat
import dev.drewhamilton.poko.Poko
import java.util.Locale
import me.saket.bytesize.ByteSize

data class ArchiveFile(
@Poko
class ArchiveFile(
val path: String,
val type: Type,
val size: ByteSize,
val uncompressedSize: ByteSize,
val isCompressed: Boolean,
) {
fun copy(
path: String = this.path,
type: Type = this.type,
size: ByteSize = this.size,
uncompressedSize: ByteSize = this.uncompressedSize,
isCompressed: Boolean = this.isCompressed,
): ArchiveFile = ArchiveFile(path, type, size, uncompressedSize, isCompressed)

enum class Type {
Dex,
Jar,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package com.jakewharton.diffuse.format

import com.google.devrel.gmscore.tools.apk.arsc.ResourceTableChunk
import com.jakewharton.diffuse.io.Input
import dev.drewhamilton.poko.Poko

class Arsc private constructor(val configs: List<String>, val entries: Map<Int, Entry>) {
data class Entry(val type: String, val name: String) : Comparable<Entry> {
@Poko
class Entry(val type: String, val name: String) : Comparable<Entry> {
override fun compareTo(other: Entry) = comparator.compare(this, other)

override fun toString() = "$type/$name"
Expand Down
21 changes: 19 additions & 2 deletions formats/src/main/kotlin/com/jakewharton/diffuse/format/Member.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.jakewharton.diffuse.format

import dev.drewhamilton.poko.Poko

sealed class Member : Comparable<Member> {
abstract val declaringType: TypeDescriptor
abstract val name: String
Expand All @@ -16,7 +18,8 @@ sealed class Member : Comparable<Member> {
}
}

data class Field(
@Poko
class Field(
override val declaringType: TypeDescriptor,
override val name: String,
val type: TypeDescriptor,
Expand All @@ -31,12 +34,19 @@ data class Field(
return COMPARATOR.compare(this, other as Field)
}

fun copy(
declaringType: TypeDescriptor = this.declaringType,
name: String = this.name,
type: TypeDescriptor = this.type,
): Field = Field(declaringType, name, type)

private companion object {
val COMPARATOR = compareBy(Field::name, Field::type)
}
}

data class Method(
@Poko
class Method(
override val declaringType: TypeDescriptor,
override val name: String,
val parameterTypes: List<TypeDescriptor>,
Expand All @@ -63,6 +73,13 @@ data class Method(
return COMPARATOR.compare(this, other as Method)
}

fun copy(
declaringType: TypeDescriptor = this.declaringType,
name: String = this.name,
parameterTypes: List<TypeDescriptor> = this.parameterTypes,
returnType: TypeDescriptor = this.returnType,
): Method = Method(declaringType, name, parameterTypes, returnType)

private companion object {
val VOID = TypeDescriptor("V")
val COMPARATOR =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ import com.android.apksig.util.DataSource
import com.android.apksig.util.DataSources
import com.jakewharton.diffuse.io.Input
import com.jakewharton.diffuse.io.PathInput
import dev.drewhamilton.poko.Poko
import java.io.Closeable
import java.nio.channels.FileChannel
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract
import okio.ByteString
import okio.ByteString.Companion.toByteString

data class Signatures(
@Poko
class Signatures(
val v1: List<ByteString>,
val v2: List<ByteString>,
val v3: List<ByteString>,
Expand Down
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@ dokkaPlugin = "org.jetbrains.dokka:dokka-gradle-plugin:2.1.0"
mavenPublishPlugin = "com.vanniktech:gradle-maven-publish-plugin:0.36.0"
spotlessPlugin = "com.diffplug.spotless:spotless-plugin-gradle:8.3.0"
buildConfigPlugin = "com.github.gmazzo.buildconfig:plugin:6.0.9"
pokoPlugin = "dev.drewhamilton.poko:dev.drewhamilton.poko.gradle.plugin:0.21.3"
ktfmt = "com.facebook:ktfmt:0.61"