MultiDex$V19.smali 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. .class final Landroid/support/multidex/MultiDex$V19;
  2. .super Ljava/lang/Object;
  3. .source "MultiDex.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/EnclosingClass;
  6. value = Landroid/support/multidex/MultiDex;
  7. .end annotation
  8. .annotation system Ldalvik/annotation/InnerClass;
  9. accessFlags = 0x1a
  10. name = "V19"
  11. .end annotation
  12. # direct methods
  13. .method private constructor <init>()V
  14. .locals 0
  15. .prologue
  16. .line 387
  17. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  18. return-void
  19. .end method
  20. .method static synthetic access$0(Ljava/lang/ClassLoader;Ljava/util/List;Ljava/io/File;)V
  21. .locals 0
  22. .annotation system Ldalvik/annotation/Throws;
  23. value = {
  24. Ljava/lang/IllegalArgumentException;,
  25. Ljava/lang/IllegalAccessException;,
  26. Ljava/lang/NoSuchFieldException;,
  27. Ljava/lang/reflect/InvocationTargetException;,
  28. Ljava/lang/NoSuchMethodException;
  29. }
  30. .end annotation
  31. .prologue
  32. .line 389
  33. invoke-static {p0, p1, p2}, Landroid/support/multidex/MultiDex$V19;->install(Ljava/lang/ClassLoader;Ljava/util/List;Ljava/io/File;)V
  34. return-void
  35. .end method
  36. .method private static install(Ljava/lang/ClassLoader;Ljava/util/List;Ljava/io/File;)V
  37. .locals 10
  38. .param p0, "loader" # Ljava/lang/ClassLoader;
  39. .param p2, "optimizedDirectory" # Ljava/io/File;
  40. .annotation system Ldalvik/annotation/Signature;
  41. value = {
  42. "(",
  43. "Ljava/lang/ClassLoader;",
  44. "Ljava/util/List",
  45. "<",
  46. "Ljava/io/File;",
  47. ">;",
  48. "Ljava/io/File;",
  49. ")V"
  50. }
  51. .end annotation
  52. .annotation system Ldalvik/annotation/Throws;
  53. value = {
  54. Ljava/lang/IllegalArgumentException;,
  55. Ljava/lang/IllegalAccessException;,
  56. Ljava/lang/NoSuchFieldException;,
  57. Ljava/lang/reflect/InvocationTargetException;,
  58. Ljava/lang/NoSuchMethodException;
  59. }
  60. .end annotation
  61. .prologue
  62. .line 398
  63. .local p1, "additionalClassPathEntries":Ljava/util/List;, "Ljava/util/List<Ljava/io/File;>;"
  64. const-string v7, "pathList"
  65. invoke-static {p0, v7}, Landroid/support/multidex/MultiDex;->access$0(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/reflect/Field;
  66. move-result-object v4
  67. .line 399
  68. .local v4, "pathListField":Ljava/lang/reflect/Field;
  69. invoke-virtual {v4, p0}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;
  70. move-result-object v2
  71. .line 400
  72. .local v2, "dexPathList":Ljava/lang/Object;
  73. new-instance v5, Ljava/util/ArrayList;
  74. invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
  75. .line 401
  76. .local v5, "suppressedExceptions":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Ljava/io/IOException;>;"
  77. const-string v7, "dexElements"
  78. .line 402
  79. new-instance v8, Ljava/util/ArrayList;
  80. invoke-direct {v8, p1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
  81. .line 401
  82. invoke-static {v2, v8, p2, v5}, Landroid/support/multidex/MultiDex$V19;->makeDexElements(Ljava/lang/Object;Ljava/util/ArrayList;Ljava/io/File;Ljava/util/ArrayList;)[Ljava/lang/Object;
  83. move-result-object v8
  84. invoke-static {v2, v7, v8}, Landroid/support/multidex/MultiDex;->access$1(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V
  85. .line 404
  86. invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
  87. move-result v7
  88. if-lez v7, :cond_0
  89. .line 405
  90. invoke-virtual {v5}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
  91. move-result-object v7
  92. :goto_0
  93. invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
  94. move-result v8
  95. if-nez v8, :cond_1
  96. .line 409
  97. const-string v7, "dexElementsSuppressedExceptions"
  98. invoke-static {p0, v7}, Landroid/support/multidex/MultiDex;->access$0(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/reflect/Field;
  99. move-result-object v6
  100. .line 411
  101. .local v6, "suppressedExceptionsField":Ljava/lang/reflect/Field;
  102. invoke-virtual {v6, p0}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;
  103. move-result-object v1
  104. check-cast v1, [Ljava/io/IOException;
  105. .line 413
  106. .local v1, "dexElementsSuppressedExceptions":[Ljava/io/IOException;
  107. if-nez v1, :cond_2
  108. .line 416
  109. invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
  110. move-result v7
  111. new-array v7, v7, [Ljava/io/IOException;
  112. .line 415
  113. invoke-virtual {v5, v7}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
  114. move-result-object v1
  115. .end local v1 # "dexElementsSuppressedExceptions":[Ljava/io/IOException;
  116. check-cast v1, [Ljava/io/IOException;
  117. .line 427
  118. .restart local v1 # "dexElementsSuppressedExceptions":[Ljava/io/IOException;
  119. :goto_1
  120. invoke-virtual {v6, p0, v1}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
  121. .line 429
  122. .end local v1 # "dexElementsSuppressedExceptions":[Ljava/io/IOException;
  123. .end local v6 # "suppressedExceptionsField":Ljava/lang/reflect/Field;
  124. :cond_0
  125. return-void
  126. .line 405
  127. :cond_1
  128. invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  129. move-result-object v3
  130. check-cast v3, Ljava/io/IOException;
  131. .line 406
  132. .local v3, "e":Ljava/io/IOException;
  133. const-string v8, "MultiDex"
  134. const-string v9, "Exception in makeDexElement"
  135. invoke-static {v8, v9, v3}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
  136. goto :goto_0
  137. .line 419
  138. .end local v3 # "e":Ljava/io/IOException;
  139. .restart local v1 # "dexElementsSuppressedExceptions":[Ljava/io/IOException;
  140. .restart local v6 # "suppressedExceptionsField":Ljava/lang/reflect/Field;
  141. :cond_2
  142. invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
  143. move-result v7
  144. .line 420
  145. array-length v8, v1
  146. .line 419
  147. add-int/2addr v7, v8
  148. new-array v0, v7, [Ljava/io/IOException;
  149. .line 421
  150. .local v0, "combined":[Ljava/io/IOException;
  151. invoke-virtual {v5, v0}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
  152. .line 422
  153. const/4 v7, 0x0
  154. .line 423
  155. invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
  156. move-result v8
  157. array-length v9, v1
  158. .line 422
  159. invoke-static {v1, v7, v0, v8, v9}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  160. .line 424
  161. move-object v1, v0
  162. goto :goto_1
  163. .end method
  164. .method private static makeDexElements(Ljava/lang/Object;Ljava/util/ArrayList;Ljava/io/File;Ljava/util/ArrayList;)[Ljava/lang/Object;
  165. .locals 8
  166. .param p0, "dexPathList" # Ljava/lang/Object;
  167. .param p2, "optimizedDirectory" # Ljava/io/File;
  168. .annotation system Ldalvik/annotation/Signature;
  169. value = {
  170. "(",
  171. "Ljava/lang/Object;",
  172. "Ljava/util/ArrayList",
  173. "<",
  174. "Ljava/io/File;",
  175. ">;",
  176. "Ljava/io/File;",
  177. "Ljava/util/ArrayList",
  178. "<",
  179. "Ljava/io/IOException;",
  180. ">;)[",
  181. "Ljava/lang/Object;"
  182. }
  183. .end annotation
  184. .annotation system Ldalvik/annotation/Throws;
  185. value = {
  186. Ljava/lang/IllegalAccessException;,
  187. Ljava/lang/reflect/InvocationTargetException;,
  188. Ljava/lang/NoSuchMethodException;
  189. }
  190. .end annotation
  191. .prologue
  192. .local p1, "files":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Ljava/io/File;>;"
  193. .local p3, "suppressedExceptions":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Ljava/io/IOException;>;"
  194. const/4 v7, 0x3
  195. const/4 v6, 0x2
  196. const/4 v5, 0x1
  197. const/4 v4, 0x0
  198. .line 441
  199. const-string v1, "makeDexElements"
  200. new-array v2, v7, [Ljava/lang/Class;
  201. const-class v3, Ljava/util/ArrayList;
  202. aput-object v3, v2, v4
  203. const-class v3, Ljava/io/File;
  204. aput-object v3, v2, v5
  205. .line 442
  206. const-class v3, Ljava/util/ArrayList;
  207. aput-object v3, v2, v6
  208. .line 441
  209. invoke-static {p0, v1, v2}, Landroid/support/multidex/MultiDex;->access$2(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
  210. move-result-object v0
  211. .line 444
  212. .local v0, "makeDexElements":Ljava/lang/reflect/Method;
  213. new-array v1, v7, [Ljava/lang/Object;
  214. aput-object p1, v1, v4
  215. aput-object p2, v1, v5
  216. .line 445
  217. aput-object p3, v1, v6
  218. .line 444
  219. invoke-virtual {v0, p0, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
  220. move-result-object v1
  221. check-cast v1, [Ljava/lang/Object;
  222. return-object v1
  223. .end method