s.smali
.class Lpl/droidsonroids/gif/s;
.super Ljava/lang/Object;
.source "ReLinker.java"
# static fields
.field private static final a:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 41
const-string v0, "pl_droidsonroids_gif"
invoke-static {v0}, Ljava/lang/System;->mapLibraryName(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
sput-object v0, Lpl/droidsonroids/gif/s;->a:Ljava/lang/String;
return-void
.end method
.method private constructor <init>()V
.registers 1
.prologue
.line 46
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 48
return-void
.end method
.method static synthetic a()Ljava/lang/String;
.registers 1
.prologue
.line 40
sget-object v0, Lpl/droidsonroids/gif/s;->a:Ljava/lang/String;
return-object v0
.end method
.method private static a(Ljava/util/zip/ZipFile;)Ljava/util/zip/ZipEntry;
.registers 5
.prologue
.line 138
invoke-static {}, Lpl/droidsonroids/gif/s;->b()[Ljava/lang/String;
move-result-object v2
array-length v3, v2
const/4 v0, 0x0
move v1, v0
:goto_7
if-ge v1, v3, :cond_16
aget-object v0, v2, v1
.line 139
invoke-static {p0, v0}, Lpl/droidsonroids/gif/s;->a(Ljava/util/zip/ZipFile;Ljava/lang/String;)Ljava/util/zip/ZipEntry;
move-result-object v0
.line 140
if-eqz v0, :cond_12
.line 144
:goto_11
return-object v0
.line 138
:cond_12
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_7
.line 144
:cond_16
const/4 v0, 0x0
goto :goto_11
.end method
.method private static a(Ljava/util/zip/ZipFile;Ljava/lang/String;)Ljava/util/zip/ZipEntry;
.registers 4
.prologue
.line 157
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "lib/"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, "/"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
sget-object v1, Lpl/droidsonroids/gif/s;->a:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Ljava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
move-result-object v0
return-object v0
.end method
.method private static a(Ljava/io/File;)Ljava/util/zip/ZipFile;
.registers 5
.prologue
.line 161
const/4 v0, 0x0
.line 162
const/4 v1, 0x0
.line 163
:goto_2
add-int/lit8 v2, v0, 0x1
const/4 v3, 0x5
if-ge v0, v3, :cond_30
.line 165
:try_start_7
new-instance v0, Ljava/util/zip/ZipFile;
const/4 v3, 0x1
invoke-direct {v0, p0, v3}, Ljava/util/zip/ZipFile;-><init>(Ljava/io/File;I)V
:try_end_d
.catch Ljava/io/IOException; {:try_start_7 .. :try_end_d} :catch_2c
.line 172
:goto_d
if-nez v0, :cond_2f
.line 173
new-instance v0, Ljava/lang/IllegalStateException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Could not open APK file: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {p0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 167
:catch_2c
move-exception v0
move v0, v2
.line 169
goto :goto_2
.line 175
:cond_2f
return-object v0
:cond_30
move-object v0, v1
goto :goto_d
.end method
.method static a(Landroid/content/Context;)V
.registers 3
.annotation build Landroid/annotation/SuppressLint;
value = {
"UnsafeDynamicallyLoadedCode"
}
.end annotation
.prologue
.line 58
const-class v1, Lpl/droidsonroids/gif/s;
monitor-enter v1
.line 59
:try_start_3
invoke-static {p0}, Lpl/droidsonroids/gif/s;->b(Landroid/content/Context;)Ljava/io/File;
move-result-object v0
.line 60
invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/System;->load(Ljava/lang/String;)V
.line 61
monitor-exit v1
.line 62
return-void
.line 61
:catchall_10
move-exception v0
monitor-exit v1
:try_end_12
.catchall {:try_start_3 .. :try_end_12} :catchall_10
throw v0
.end method
.method private static a(Ljava/io/Closeable;)V
.registers 2
.prologue
.line 222
if-eqz p0, :cond_5
.line 223
:try_start_2
invoke-interface {p0}, Ljava/io/Closeable;->close()V
:try_end_5
.catch Ljava/io/IOException; {:try_start_2 .. :try_end_5} :catch_6
.line 228
:cond_5
:goto_5
return-void
.line 225
:catch_6
move-exception v0
goto :goto_5
.end method
.method private static a(Ljava/io/File;Ljava/io/FilenameFilter;)V
.registers 6
.prologue
.line 180
invoke-virtual {p0}, Ljava/io/File;->getParentFile()Ljava/io/File;
move-result-object v0
invoke-virtual {v0, p1}, Ljava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File;
move-result-object v1
.line 181
if-eqz v1, :cond_16
.line 182
array-length v2, v1
const/4 v0, 0x0
:goto_c
if-ge v0, v2, :cond_16
aget-object v3, v1, v0
.line 183
invoke-virtual {v3}, Ljava/io/File;->delete()Z
.line 182
add-int/lit8 v0, v0, 0x1
goto :goto_c
.line 186
:cond_16
return-void
.end method
.method private static a(Ljava/io/InputStream;Ljava/io/OutputStream;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.prologue
.line 205
const/16 v0, 0x2000
new-array v0, v0, [B
.line 207
:goto_4
invoke-virtual {p0, v0}, Ljava/io/InputStream;->read([B)I
move-result v1
.line 208
const/4 v2, -0x1
if-ne v1, v2, :cond_c
.line 213
return-void
.line 211
:cond_c
const/4 v2, 0x0
invoke-virtual {p1, v0, v2, v1}, Ljava/io/OutputStream;->write([BII)V
goto :goto_4
.end method
.method private static b(Landroid/content/Context;)Ljava/io/File;
.registers 9
.prologue
const/4 v2, 0x0
const/4 v3, 0x0
.line 71
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
sget-object v1, Lpl/droidsonroids/gif/s;->a:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ""
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
.line 72
new-instance v0, Ljava/io/File;
const-string v1, "lib"
invoke-virtual {p0, v1, v2}, Landroid/content/Context;->getDir(Ljava/lang/String;I)Ljava/io/File;
move-result-object v1
invoke-direct {v0, v1, v4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 73
invoke-virtual {v0}, Ljava/io/File;->isFile()Z
move-result v1
if-eqz v1, :cond_29
.line 134
:cond_28
:goto_28
return-object v0
.line 77
:cond_29
new-instance v1, Ljava/io/File;
invoke-virtual {p0}, Landroid/content/Context;->getCacheDir()Ljava/io/File;
move-result-object v5
invoke-direct {v1, v5, v4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 78
invoke-virtual {v1}, Ljava/io/File;->isFile()Z
move-result v4
if-eqz v4, :cond_3a
move-object v0, v1
.line 79
goto :goto_28
.line 82
:cond_3a
const-string v4, "pl_droidsonroids_gif_surface"
invoke-static {v4}, Ljava/lang/System;->mapLibraryName(Ljava/lang/String;)Ljava/lang/String;
move-result-object v4
.line 83
new-instance v5, Lpl/droidsonroids/gif/t;
invoke-direct {v5, v4}, Lpl/droidsonroids/gif/t;-><init>(Ljava/lang/String;)V
.line 89
invoke-static {v0, v5}, Lpl/droidsonroids/gif/s;->a(Ljava/io/File;Ljava/io/FilenameFilter;)V
.line 90
invoke-static {v1, v5}, Lpl/droidsonroids/gif/s;->a(Ljava/io/File;Ljava/io/FilenameFilter;)V
.line 92
invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
move-result-object v4
.line 93
new-instance v5, Ljava/io/File;
iget-object v4, v4, Landroid/content/pm/ApplicationInfo;->sourceDir:Ljava/lang/String;
invoke-direct {v5, v4}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 96
:try_start_56
invoke-static {v5}, Lpl/droidsonroids/gif/s;->a(Ljava/io/File;)Ljava/util/zip/ZipFile;
:try_end_59
.catchall {:try_start_56 .. :try_end_59} :catchall_c6
move-result-object v5
.line 99
:goto_5a
add-int/lit8 v6, v2, 0x1
const/4 v4, 0x5
if-ge v2, v4, :cond_a3
.line 100
:try_start_5f
invoke-static {v5}, Lpl/droidsonroids/gif/s;->a(Ljava/util/zip/ZipFile;)Ljava/util/zip/ZipEntry;
move-result-object v2
.line 101
if-nez v2, :cond_8e
.line 102
new-instance v0, Ljava/lang/IllegalStateException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Library "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
sget-object v2, Lpl/droidsonroids/gif/s;->a:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " for supported ABIs not found in APK file"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_86
.catchall {:try_start_5f .. :try_end_86} :catchall_86
.line 127
:catchall_86
move-exception v0
move-object v3, v5
.line 128
:goto_88
if-eqz v3, :cond_8d
.line 129
:try_start_8a
invoke-virtual {v3}, Ljava/util/zip/ZipFile;->close()V
:try_end_8d
.catch Ljava/io/IOException; {:try_start_8a .. :try_end_8d} :catch_c4
.line 132
:cond_8d
:goto_8d
throw v0
.line 108
:cond_8e
:try_start_8e
invoke-virtual {v5, v2}, Ljava/util/zip/ZipFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
:try_end_91
.catch Ljava/io/IOException; {:try_start_8e .. :try_end_91} :catch_ac
.catchall {:try_start_8e .. :try_end_91} :catchall_bb
move-result-object v4
.line 109
:try_start_92
new-instance v2, Ljava/io/FileOutputStream;
invoke-direct {v2, v0}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
:try_end_97
.catch Ljava/io/IOException; {:try_start_92 .. :try_end_97} :catch_cd
.catchall {:try_start_92 .. :try_end_97} :catchall_c8
.line 110
:try_start_97
invoke-static {v4, v2}, Lpl/droidsonroids/gif/s;->a(Ljava/io/InputStream;Ljava/io/OutputStream;)V
:try_end_9a
.catch Ljava/io/IOException; {:try_start_97 .. :try_end_9a} :catch_d0
.catchall {:try_start_97 .. :try_end_9a} :catchall_ca
.line 117
:try_start_9a
invoke-static {v4}, Lpl/droidsonroids/gif/s;->a(Ljava/io/Closeable;)V
.line 118
invoke-static {v2}, Lpl/droidsonroids/gif/s;->a(Ljava/io/Closeable;)V
.line 120
invoke-static {v0}, Lpl/droidsonroids/gif/s;->b(Ljava/io/File;)V
:try_end_a3
.catchall {:try_start_9a .. :try_end_a3} :catchall_86
.line 128
:cond_a3
if-eqz v5, :cond_28
.line 129
:try_start_a5
invoke-virtual {v5}, Ljava/util/zip/ZipFile;->close()V
:try_end_a8
.catch Ljava/io/IOException; {:try_start_a5 .. :try_end_a8} :catch_a9
goto :goto_28
.line 131
:catch_a9
move-exception v1
goto/16 :goto_28
.line 111
:catch_ac
move-exception v2
move-object v2, v3
move-object v4, v3
.line 112
:goto_af
const/4 v7, 0x2
if-le v6, v7, :cond_b3
move-object v0, v1
.line 117
:cond_b3
:try_start_b3
invoke-static {v4}, Lpl/droidsonroids/gif/s;->a(Ljava/io/Closeable;)V
.line 118
invoke-static {v2}, Lpl/droidsonroids/gif/s;->a(Ljava/io/Closeable;)V
move v2, v6
goto :goto_5a
.line 117
:catchall_bb
move-exception v0
move-object v4, v3
:goto_bd
invoke-static {v4}, Lpl/droidsonroids/gif/s;->a(Ljava/io/Closeable;)V
.line 118
invoke-static {v3}, Lpl/droidsonroids/gif/s;->a(Ljava/io/Closeable;)V
throw v0
:try_end_c4
.catchall {:try_start_b3 .. :try_end_c4} :catchall_86
.line 131
:catch_c4
move-exception v1
goto :goto_8d
.line 127
:catchall_c6
move-exception v0
goto :goto_88
.line 117
:catchall_c8
move-exception v0
goto :goto_bd
:catchall_ca
move-exception v0
move-object v3, v2
goto :goto_bd
.line 111
:catch_cd
move-exception v2
move-object v2, v3
goto :goto_af
:catch_d0
move-exception v7
goto :goto_af
.end method
.method private static b(Ljava/io/File;)V
.registers 3
.annotation build Landroid/annotation/SuppressLint;
value = {
"SetWorldReadable"
}
.end annotation
.prologue
const/4 v1, 0x0
const/4 v0, 0x1
.line 192
invoke-virtual {p0, v0, v1}, Ljava/io/File;->setReadable(ZZ)Z
.line 193
invoke-virtual {p0, v0, v1}, Ljava/io/File;->setExecutable(ZZ)Z
.line 194
invoke-virtual {p0, v0}, Ljava/io/File;->setWritable(Z)Z
.line 195
return-void
.end method
.method private static b()[Ljava/lang/String;
.registers 3
.prologue
.line 149
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_9
.line 150
sget-object v0, Landroid/os/Build;->SUPPORTED_ABIS:[Ljava/lang/String;
.line 152
:goto_8
return-object v0
:cond_9
const/4 v0, 0x2
new-array v0, v0, [Ljava/lang/String;
const/4 v1, 0x0
sget-object v2, Landroid/os/Build;->CPU_ABI:Ljava/lang/String;
aput-object v2, v0, v1
const/4 v1, 0x1
sget-object v2, Landroid/os/Build;->CPU_ABI2:Ljava/lang/String;
aput-object v2, v0, v1
goto :goto_8
.end method