BundleLifecycleHandler.smali
.class public Lorg/acdd/runtime/BundleLifecycleHandler;
.super Ljava/lang/Object;
.source "BundleLifecycleHandler.java"
# interfaces
.implements Lorg/osgi/framework/SynchronousBundleListener;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lorg/acdd/runtime/BundleLifecycleHandler$BundleLifecycleThread;
}
.end annotation
# static fields
.field static final log:Lorg/acdd/log/Logger;
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 52
invoke-static {}, Lorg/acdd/log/LoggerFactory;->getInstance()Lorg/acdd/log/Logger;
move-result-object v0
sput-object v0, Lorg/acdd/runtime/BundleLifecycleHandler;->log:Lorg/acdd/log/Logger;
.line 53
return-void
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 48
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private installed(Lorg/osgi/framework/Bundle;)V
.registers 2
.prologue
.line 121
return-void
.end method
.method private isLewaOS()Z
.registers 7
.prologue
const/4 v1, 0x0
.line 195
:try_start_1
const-string v0, "android.os.SystemProperties"
.line 196
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
const-string v2, "get"
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Class;
const/4 v4, 0x0
const-class v5, Ljava/lang/String;
aput-object v5, v3, v4
.line 197
invoke-virtual {v0, v2, v3}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
const/4 v2, 0x0
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/Object;
const/4 v4, 0x0
const-string/jumbo v5, "ro.lewa.version"
aput-object v5, v3, v4
.line 199
invoke-virtual {v0, v2, v3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 195
invoke-static {v0}, Lorg/acdd/util/StringUtils;->isNotEmpty(Ljava/lang/String;)Z
:try_end_28
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_28} :catch_2a
move-result v0
.line 202
:goto_29
return v0
.line 200
:catch_2a
move-exception v0
.line 201
invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
move v0, v1
.line 202
goto :goto_29
.end method
.method private loaded(Lorg/osgi/framework/Bundle;)V
.registers 10
.prologue
.line 98
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
move-object v0, p1
.line 99
check-cast v0, Lorg/acdd/framework/BundleImpl;
.line 100
const/4 v1, 0x0
move v2, v1
:goto_9
const/4 v1, 0x2
if-ge v2, v1, :cond_20
.line 102
:try_start_c
sget-object v1, Lorg/acdd/runtime/RuntimeVariables;->androidApplication:Landroid/app/Application;
sget-object v3, Lorg/acdd/runtime/RuntimeVariables;->delegateResources:Landroid/content/res/Resources;
.line 104
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getArchive()Lorg/acdd/framework/bundlestorage/Archive;
move-result-object v6
invoke-interface {v6}, Lorg/acdd/framework/bundlestorage/Archive;->getArchiveFile()Ljava/io/File;
move-result-object v6
invoke-virtual {v6}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v6
const/4 v7, 0x1
.line 102
invoke-static {v1, v3, v6, v7}, Lorg/acdd/runtime/DelegateResources;->newDelegateResources(Landroid/app/Application;Landroid/content/res/Resources;Ljava/lang/String;Z)V
:try_end_20
.catch Ljava/lang/Throwable; {:try_start_c .. :try_end_20} :catch_63
.line 111
:cond_20
invoke-interface {p1}, Lorg/osgi/framework/Bundle;->getLocation()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lorg/acdd/runtime/DelegateComponent;->getPackage(Ljava/lang/String;)Lorg/acdd/runtime/PackageLite;
move-result-object v1
if-nez v1, :cond_3f
.line 112
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getArchive()Lorg/acdd/framework/bundlestorage/Archive;
move-result-object v0
invoke-interface {v0}, Lorg/acdd/framework/bundlestorage/Archive;->getArchiveFile()Ljava/io/File;
move-result-object v0
invoke-static {v0}, Lorg/acdd/runtime/PackageLite;->parse(Ljava/io/File;)Lorg/acdd/runtime/PackageLite;
move-result-object v0
.line 113
if-eqz v0, :cond_3f
.line 114
invoke-interface {p1}, Lorg/osgi/framework/Bundle;->getLocation()Ljava/lang/String;
move-result-object v1
invoke-static {v1, v0}, Lorg/acdd/runtime/DelegateComponent;->putPackage(Ljava/lang/String;Lorg/acdd/runtime/PackageLite;)V
.line 117
:cond_3f
sget-object v0, Lorg/acdd/runtime/BundleLifecycleHandler;->log:Lorg/acdd/log/Logger;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "[PluginTimer] loaded() spend "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v2
sub-long/2addr v2, v4
invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " milliseconds"
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-interface {v0, v1}, Lorg/acdd/log/Logger;->warn(Ljava/lang/String;)V
.line 118
return-void
.line 106
:catch_63
move-exception v1
.line 107
sget-object v3, Lorg/acdd/runtime/BundleLifecycleHandler;->log:Lorg/acdd/log/Logger;
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "Could not load resource in bundle "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v6
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getLocation()Ljava/lang/String;
move-result-object v7
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-interface {v3, v6, v1}, Lorg/acdd/log/Logger;->error(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 108
invoke-static {}, Lorg/acdd/framework/ACDD;->getInstance()Lorg/acdd/framework/ACDD;
move-result-object v3
const-string v6, "4044"
invoke-virtual {v3, v6, v1}, Lorg/acdd/framework/ACDD;->reportCrash(Ljava/lang/String;Ljava/lang/Throwable;)V
.line 100
add-int/lit8 v1, v2, 0x1
move v2, v1
goto/16 :goto_9
.end method
.method protected static newApplication(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/app/Application;
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.prologue
.line 173
invoke-virtual {p1, p0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
.line 174
if-nez v0, :cond_c
.line 175
new-instance v0, Ljava/lang/ClassNotFoundException;
invoke-direct {v0, p0}, Ljava/lang/ClassNotFoundException;-><init>(Ljava/lang/String;)V
throw v0
.line 177
:cond_c
invoke-virtual {v0}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/Application;
.line 178
sget-object v1, Lorg/acdd/hack/ACDDHacks;->Application_attach:Lorg/acdd/hack/Hack$HackedMethod;
const/4 v2, 0x1
new-array v2, v2, [Ljava/lang/Object;
const/4 v3, 0x0
sget-object v4, Lorg/acdd/runtime/RuntimeVariables;->androidApplication:Landroid/app/Application;
aput-object v4, v2, v3
invoke-virtual {v1, v0, v2}, Lorg/acdd/hack/Hack$HackedMethod;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
.line 179
return-object v0
.end method
.method private started(Lorg/osgi/framework/Bundle;)V
.registers 8
.prologue
.line 131
check-cast p1, Lorg/acdd/framework/BundleImpl;
.line 132
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 169
sget-object v2, Lorg/acdd/runtime/BundleLifecycleHandler;->log:Lorg/acdd/log/Logger;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "[PluginTimer] started() spend "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
sub-long v0, v4, v0
invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, " milliseconds"
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-interface {v2, v0}, Lorg/acdd/log/Logger;->warn(Ljava/lang/String;)V
.line 170
return-void
.end method
.method private stopped(Lorg/osgi/framework/Bundle;)V
.registers 4
.prologue
.line 183
sget-object v0, Lorg/acdd/runtime/DelegateComponent;->apkApplications:Ljava/util/Map;
invoke-interface {p1}, Lorg/osgi/framework/Bundle;->getLocation()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/app/Application;
.line 184
if-eqz v0, :cond_1a
.line 185
invoke-virtual {v0}, Landroid/app/Application;->onTerminate()V
.line 186
sget-object v0, Lorg/acdd/runtime/DelegateComponent;->apkApplications:Ljava/util/Map;
invoke-interface {p1}, Lorg/osgi/framework/Bundle;->getLocation()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 188
:cond_1a
return-void
.end method
.method private uninstalled(Lorg/osgi/framework/Bundle;)V
.registers 3
.prologue
.line 127
invoke-interface {p1}, Lorg/osgi/framework/Bundle;->getLocation()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lorg/acdd/runtime/DelegateComponent;->removePackage(Ljava/lang/String;)V
.line 128
return-void
.end method
.method private updated(Lorg/osgi/framework/Bundle;)V
.registers 2
.prologue
.line 124
return-void
.end method
# virtual methods
.method public bundleChanged(Lorg/osgi/framework/BundleEvent;)V
.registers 3
.annotation build Landroid/annotation/SuppressLint;
value = {
"NewApi"
}
.end annotation
.prologue
.line 58
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getType()I
move-result v0
sparse-switch v0, :sswitch_data_50
.line 95
:goto_7
return-void
.line 60
:sswitch_8
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getBundle()Lorg/osgi/framework/Bundle;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/runtime/BundleLifecycleHandler;->loaded(Lorg/osgi/framework/Bundle;)V
goto :goto_7
.line 63
:sswitch_10
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getBundle()Lorg/osgi/framework/Bundle;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/runtime/BundleLifecycleHandler;->installed(Lorg/osgi/framework/Bundle;)V
goto :goto_7
.line 66
:sswitch_18
invoke-direct {p0}, Lorg/acdd/runtime/BundleLifecycleHandler;->isLewaOS()Z
move-result v0
if-eqz v0, :cond_2f
.line 67
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
if-nez v0, :cond_27
.line 68
invoke-static {}, Landroid/os/Looper;->prepare()V
.line 70
:cond_27
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getBundle()Lorg/osgi/framework/Bundle;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/runtime/BundleLifecycleHandler;->started(Lorg/osgi/framework/Bundle;)V
goto :goto_7
.line 79
:cond_2f
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getBundle()Lorg/osgi/framework/Bundle;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/runtime/BundleLifecycleHandler;->started(Lorg/osgi/framework/Bundle;)V
goto :goto_7
.line 83
:sswitch_37
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getBundle()Lorg/osgi/framework/Bundle;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/runtime/BundleLifecycleHandler;->stopped(Lorg/osgi/framework/Bundle;)V
goto :goto_7
.line 86
:sswitch_3f
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getBundle()Lorg/osgi/framework/Bundle;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/runtime/BundleLifecycleHandler;->updated(Lorg/osgi/framework/Bundle;)V
goto :goto_7
.line 90
:sswitch_47
invoke-virtual {p1}, Lorg/osgi/framework/BundleEvent;->getBundle()Lorg/osgi/framework/Bundle;
move-result-object v0
invoke-direct {p0, v0}, Lorg/acdd/runtime/BundleLifecycleHandler;->uninstalled(Lorg/osgi/framework/Bundle;)V
goto :goto_7
.line 58
nop
:sswitch_data_50
.sparse-switch
0x0 -> :sswitch_8
0x1 -> :sswitch_10
0x2 -> :sswitch_18
0x4 -> :sswitch_37
0x8 -> :sswitch_3f
0x10 -> :sswitch_47
.end sparse-switch
.end method
.method public handleLowMemory()V
.registers 1
.prologue
.line 191
return-void
.end method