1 package shark 2 3 /** 4 * Caches values from the android.os.Build class in the heap dump. 5 * Retrieve a cached instances via [fromHeapGraph]. 6 */ 7 class AndroidBuildMirror( 8 /** 9 * Value of android.os.Build.MANUFACTURER 10 */ 11 val manufacturer: String, 12 /** 13 * Value of android.os.Build.VERSION.SDK_INT 14 */ 15 val sdkInt: Int, 16 17 /** 18 * Value of android.os.Build.ID 19 */ 20 val id: String 21 ) { 22 companion object { 23 /** 24 * @see AndroidBuildMirror 25 */ fromHeapGraphnull26 fun fromHeapGraph(graph: HeapGraph): AndroidBuildMirror { 27 return graph.context.getOrPut(AndroidBuildMirror::class.java.name) { 28 val buildClass = graph.findClassByName("android.os.Build")!! 29 val versionClass = graph.findClassByName("android.os.Build\$VERSION")!! 30 val manufacturer = buildClass["MANUFACTURER"]!!.value.readAsJavaString()!! 31 val sdkInt = versionClass["SDK_INT"]!!.value.asInt!! 32 val id = buildClass["ID"]!!.value.readAsJavaString()!! 33 AndroidBuildMirror(manufacturer, sdkInt, id) 34 } 35 } 36 } 37 } 38