SysUtil$MarshmallowSysdeps.smali
.class final Lcom/facebook/soloader/SysUtil$MarshmallowSysdeps;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation build Landroid/annotation/TargetApi;
value = 0x17
.end annotation
.annotation build Lcom/facebook/soloader/DoNotOptimize;
.end annotation
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/facebook/soloader/SysUtil;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x19
name = "MarshmallowSysdeps"
.end annotation
# direct methods
.method private constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static getSupportedAbis()[Ljava/lang/String;
.registers 7
.annotation build Lcom/facebook/soloader/DoNotOptimize;
.end annotation
.line 1
sget-object v0, Landroid/os/Build;->SUPPORTED_ABIS:[Ljava/lang/String;
.line 2
new-instance v1, Ljava/util/TreeSet;
invoke-direct {v1}, Ljava/util/TreeSet;-><init>()V
.line 3
invoke-static {}, Lcom/facebook/soloader/SysUtil$MarshmallowSysdeps;->is64Bit()Z
move-result v2
if-eqz v2, :cond_20
.line 4
sget-object v2, Lcom/facebook/soloader/MinElf$ISA;->AARCH64:Lcom/facebook/soloader/MinElf$ISA;
invoke-virtual {v2}, Lcom/facebook/soloader/MinElf$ISA;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/util/TreeSet;->add(Ljava/lang/Object;)Z
.line 5
sget-object v2, Lcom/facebook/soloader/MinElf$ISA;->X86_64:Lcom/facebook/soloader/MinElf$ISA;
invoke-virtual {v2}, Lcom/facebook/soloader/MinElf$ISA;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/util/TreeSet;->add(Ljava/lang/Object;)Z
goto :goto_32
.line 6
:cond_20
sget-object v2, Lcom/facebook/soloader/MinElf$ISA;->ARM:Lcom/facebook/soloader/MinElf$ISA;
invoke-virtual {v2}, Lcom/facebook/soloader/MinElf$ISA;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/util/TreeSet;->add(Ljava/lang/Object;)Z
.line 7
sget-object v2, Lcom/facebook/soloader/MinElf$ISA;->X86:Lcom/facebook/soloader/MinElf$ISA;
invoke-virtual {v2}, Lcom/facebook/soloader/MinElf$ISA;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/util/TreeSet;->add(Ljava/lang/Object;)Z
.line 8
:goto_32
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 9
array-length v3, v0
const/4 v4, 0x0
:goto_39
if-ge v4, v3, :cond_49
aget-object v5, v0, v4
.line 10
invoke-virtual {v1, v5}, Ljava/util/TreeSet;->contains(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_46
.line 11
invoke-virtual {v2, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:cond_46
add-int/lit8 v4, v4, 0x1
goto :goto_39
.line 12
:cond_49
invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
move-result v0
new-array v0, v0, [Ljava/lang/String;
.line 13
invoke-virtual {v2, v0}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v0
check-cast v0, [Ljava/lang/String;
return-object v0
.end method
.method public static is64Bit()Z
.registers 1
.annotation build Lcom/facebook/soloader/DoNotOptimize;
.end annotation
invoke-static {}, Landroid/os/Process;->is64Bit()Z
move-result v0
return v0
.end method
.method private static isApkUncompressedDso(Landroid/content/Context;)Z
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
new-instance v0, Ljava/io/File;
invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
move-result-object p0
iget-object p0, p0, Landroid/content/pm/ApplicationInfo;->sourceDir:Ljava/lang/String;
invoke-direct {v0, p0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 2
new-instance p0, Ljava/util/zip/ZipFile;
invoke-direct {p0, v0}, Ljava/util/zip/ZipFile;-><init>(Ljava/io/File;)V
.line 3
:try_start_10
invoke-virtual {p0}, Ljava/util/zip/ZipFile;->entries()Ljava/util/Enumeration;
move-result-object v0
.line 4
:cond_14
invoke-interface {v0}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
const/4 v2, 0x0
if-eqz v1, :cond_46
.line 5
invoke-interface {v0}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/zip/ZipEntry;
if-eqz v1, :cond_14
.line 6
invoke-virtual {v1}, Ljava/util/zip/ZipEntry;->getName()Ljava/lang/String;
move-result-object v3
const-string v4, ".so"
invoke-virtual {v3, v4}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_14
.line 7
invoke-virtual {v1}, Ljava/util/zip/ZipEntry;->getName()Ljava/lang/String;
move-result-object v3
const-string v4, "/lib"
invoke-virtual {v3, v4}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v3
if-eqz v3, :cond_14
.line 8
invoke-virtual {v1}, Ljava/util/zip/ZipEntry;->getMethod()I
move-result v0
:try_end_3f
.catchall {:try_start_10 .. :try_end_3f} :catchall_4a
if-nez v0, :cond_42
const/4 v2, 0x1
.line 9
:cond_42
invoke-virtual {p0}, Ljava/util/zip/ZipFile;->close()V
return v2
:cond_46
invoke-virtual {p0}, Ljava/util/zip/ZipFile;->close()V
return v2
:catchall_4a
move-exception v0
.line 10
:try_start_4b
invoke-virtual {p0}, Ljava/util/zip/ZipFile;->close()V
:try_end_4e
.catchall {:try_start_4b .. :try_end_4e} :catchall_4f
goto :goto_53
:catchall_4f
move-exception p0
invoke-virtual {v0, p0}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V
:goto_53
throw v0
.end method
.method public static isDisabledExtractNativeLibs(Landroid/content/Context;)Z
.registers 2
if-eqz p0, :cond_f
invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
move-result-object p0
iget p0, p0, Landroid/content/pm/ApplicationInfo;->flags:I
const/high16 v0, 0x10000000
and-int/2addr p0, v0
if-nez p0, :cond_f
const/4 p0, 0x1
goto :goto_10
:cond_f
const/4 p0, 0x0
:goto_10
return p0
.end method
.method public static isSupportedDirectLoad(Landroid/content/Context;I)Z
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
const/4 v0, 0x2
if-ne p1, v0, :cond_8
.line 1
invoke-static {p0}, Lcom/facebook/soloader/SysUtil$MarshmallowSysdeps;->isApkUncompressedDso(Landroid/content/Context;)Z
move-result p0
return p0
.line 2
:cond_8
invoke-static {p0}, Lcom/facebook/soloader/SysUtil$MarshmallowSysdeps;->isDisabledExtractNativeLibs(Landroid/content/Context;)Z
move-result p0
return p0
.end method