diff --git a/leakcanary/leakcanary-android-release/api/leakcanary-android-release.api b/leakcanary/leakcanary-android-release/api/leakcanary-android-release.api index 61db32020a..bafb4cb7ff 100644 --- a/leakcanary/leakcanary-android-release/api/leakcanary-android-release.api +++ b/leakcanary/leakcanary-android-release/api/leakcanary-android-release.api @@ -38,21 +38,23 @@ public final class leakcanary/HeapAnalysisClient$Companion { public final class leakcanary/HeapAnalysisConfig { public fun ()V - public fun (Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;Z)V - public synthetic fun (Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;ZLkotlin/jvm/functions/Function0;)V + public synthetic fun (Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;ZLkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()Ljava/util/List; public final fun component2 ()Ljava/util/List; public final fun component3 ()Lshark/MetadataExtractor; public final fun component4 ()Z public final fun component5 ()Lshark/LeakingObjectFinder; public final fun component6 ()Z - public final fun copy (Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;Z)Lleakcanary/HeapAnalysisConfig; - public static synthetic fun copy$default (Lleakcanary/HeapAnalysisConfig;Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;ZILjava/lang/Object;)Lleakcanary/HeapAnalysisConfig; + public final fun component7 ()Lkotlin/jvm/functions/Function0; + public final fun copy (Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;ZLkotlin/jvm/functions/Function0;)Lleakcanary/HeapAnalysisConfig; + public static synthetic fun copy$default (Lleakcanary/HeapAnalysisConfig;Ljava/util/List;Ljava/util/List;Lshark/MetadataExtractor;ZLshark/LeakingObjectFinder;ZLkotlin/jvm/functions/Function0;ILjava/lang/Object;)Lleakcanary/HeapAnalysisConfig; public fun equals (Ljava/lang/Object;)Z public final fun getComputeRetainedHeapSize ()Z public final fun getLeakingObjectFinder ()Lshark/LeakingObjectFinder; public final fun getMetadataExtractor ()Lshark/MetadataExtractor; public final fun getObjectInspectors ()Ljava/util/List; + public final fun getProguardMappingProvider ()Lkotlin/jvm/functions/Function0; public final fun getReferenceMatchers ()Ljava/util/List; public final fun getStripHeapDump ()Z public fun hashCode ()I diff --git a/leakcanary/leakcanary-android-release/src/main/java/leakcanary/HeapAnalysisConfig.kt b/leakcanary/leakcanary-android-release/src/main/java/leakcanary/HeapAnalysisConfig.kt index 0df5accc9c..5b7f6fd003 100644 --- a/leakcanary/leakcanary-android-release/src/main/java/leakcanary/HeapAnalysisConfig.kt +++ b/leakcanary/leakcanary-android-release/src/main/java/leakcanary/HeapAnalysisConfig.kt @@ -4,12 +4,13 @@ import shark.AndroidMetadataExtractor import shark.AndroidObjectInspectors import shark.AndroidReferenceMatchers import shark.FilteringLeakingObjectFinder +import shark.IgnoredReferenceMatcher import shark.LeakingObjectFinder +import shark.LibraryLeakReferenceMatcher import shark.MetadataExtractor import shark.ObjectInspector -import shark.IgnoredReferenceMatcher +import shark.ProguardMapping import shark.ReferenceMatcher -import shark.LibraryLeakReferenceMatcher data class HeapAnalysisConfig( @@ -71,5 +72,7 @@ data class HeapAnalysisConfig( * zeroes. This increases the overall processing time but limits the amount of time the heap * dump exists on disk with potential PII. */ - val stripHeapDump: Boolean = false + val stripHeapDump: Boolean = false, + + val proguardMappingProvider: () -> ProguardMapping? = { null } ) diff --git a/leakcanary/leakcanary-android-release/src/main/java/leakcanary/internal/RealHeapAnalysisJob.kt b/leakcanary/leakcanary-android-release/src/main/java/leakcanary/internal/RealHeapAnalysisJob.kt index ae4d4dd233..f6c0f4fe1a 100644 --- a/leakcanary/leakcanary-android-release/src/main/java/leakcanary/internal/RealHeapAnalysisJob.kt +++ b/leakcanary/leakcanary-android-release/src/main/java/leakcanary/internal/RealHeapAnalysisJob.kt @@ -280,7 +280,7 @@ internal class RealHeapAnalysisJob( } } - return deletingFileSourceProvider.openHeapGraph().use { graph -> + return deletingFileSourceProvider.openHeapGraph(config.proguardMappingProvider()).use { graph -> val heapAnalysis = analyzeHeap(heapDumpFile, graph) val lruCacheStats = (graph as HprofHeapGraph).lruCacheStats() val randomAccessStats =