• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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