ClassLoadFromBundle.smali
.class public Lorg/acdd/runtime/ClassLoadFromBundle;
.super Ljava/lang/Object;
.source "ClassLoadFromBundle.java"
# static fields
.field private static final TAG:Ljava/lang/String; = "CMPlugin"
.field private static classNotFoundReason:Ljava/util/Hashtable;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Hashtable",
"<",
"Ljava/lang/Integer;",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
.field private static reasonCnt:I
# direct methods
.method static constructor <clinit>()V
.registers 1
.prologue
.line 55
new-instance v0, Ljava/util/Hashtable;
invoke-direct {v0}, Ljava/util/Hashtable;-><init>()V
sput-object v0, Lorg/acdd/runtime/ClassLoadFromBundle;->classNotFoundReason:Ljava/util/Hashtable;
.line 56
const/4 v0, 0x0
sput v0, Lorg/acdd/runtime/ClassLoadFromBundle;->reasonCnt:I
.line 58
return-void
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 46
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static checkInstallBundleIfNeed(Ljava/lang/String;)V
.registers 2
.prologue
.line 228
if-nez p0, :cond_3
.line 242
:cond_2
:goto_2
return-void
.line 234
:cond_3
invoke-static {}, Lorg/acdd/bundleInfo/BundleInfoList;->getInstance()Lorg/acdd/bundleInfo/BundleInfoList;
move-result-object v0
invoke-virtual {v0, p0}, Lorg/acdd/bundleInfo/BundleInfoList;->getBundleNameForComponet(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 235
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_2
.line 236
const-string v0, "not found in BundleInfoList!"
invoke-static {p0, v0}, Lorg/acdd/runtime/ClassLoadFromBundle;->insertToReasonList(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_2
.end method
.method static getClassNotFoundReason(Ljava/lang/String;)Ljava/lang/String;
.registers 5
.prologue
.line 61
const/4 v0, 0x0
move v1, v0
:goto_2
sget-object v0, Lorg/acdd/runtime/ClassLoadFromBundle;->classNotFoundReason:Ljava/util/Hashtable;
invoke-virtual {v0}, Ljava/util/Hashtable;->size()I
move-result v0
if-ge v1, v0, :cond_66
.line 62
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
sget-object v0, Lorg/acdd/runtime/ClassLoadFromBundle;->classNotFoundReason:Ljava/util/Hashtable;
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
invoke-virtual {v0, v3}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, ""
invoke-virtual {v0, v2}, 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
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, ""
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_62
.line 63
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
sget-object v0, Lorg/acdd/runtime/ClassLoadFromBundle;->classNotFoundReason:Ljava/util/Hashtable;
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
invoke-virtual {v2, v0}, 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 v0
.line 66
:goto_61
return-object v0
.line 61
:cond_62
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_2
.line 66
:cond_66
const-string v0, ""
goto :goto_61
.end method
.method private static getPackageVersion()I
.registers 3
.prologue
.line 266
:try_start_0
sget-object v0, Lorg/acdd/runtime/RuntimeVariables;->androidApplication:Landroid/app/Application;
invoke-virtual {v0}, Landroid/app/Application;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v0
sget-object v1, Lorg/acdd/runtime/RuntimeVariables;->androidApplication:Landroid/app/Application;
.line 267
invoke-virtual {v1}, Landroid/app/Application;->getPackageName()Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
.line 266
invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
:try_end_10
.catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_10} :catch_14
move-result-object v0
.line 272
:goto_11
iget v0, v0, Landroid/content/pm/PackageInfo;->versionCode:I
return v0
.line 268
:catch_14
move-exception v0
.line 269
const-string v1, "CMPlugin"
const-string v2, "Error to get PackageInfo >>>"
invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
.line 270
new-instance v0, Landroid/content/pm/PackageInfo;
invoke-direct {v0}, Landroid/content/pm/PackageInfo;-><init>()V
goto :goto_11
.end method
.method private static insertToReasonList(Ljava/lang/String;Ljava/lang/String;)V
.registers 6
.prologue
.line 70
sget-object v0, Lorg/acdd/runtime/ClassLoadFromBundle;->classNotFoundReason:Ljava/util/Hashtable;
sget v1, Lorg/acdd/runtime/ClassLoadFromBundle;->reasonCnt:I
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, " Not found class "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " because "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v1, v2}, Ljava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 71
sget v0, Lorg/acdd/runtime/ClassLoadFromBundle;->reasonCnt:I
add-int/lit8 v0, v0, 0x1
.line 72
sput v0, Lorg/acdd/runtime/ClassLoadFromBundle;->reasonCnt:I
.line 73
rem-int/lit8 v0, v0, 0xa
sput v0, Lorg/acdd/runtime/ClassLoadFromBundle;->reasonCnt:I
.line 74
return-void
.end method
.method static loadFromInstalledBundles(Ljava/lang/String;)Ljava/lang/Class;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/lang/Class",
"<*>;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/ClassNotFoundException;
}
.end annotation
.prologue
.line 116
invoke-static {}, Lorg/acdd/framework/BundleManager;->getBundles()Ljava/util/List;
move-result-object v2
.line 117
if-eqz v2, :cond_eb
invoke-interface {v2}, Ljava/util/List;->isEmpty()Z
move-result v0
if-nez v0, :cond_eb
.line 118
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_10
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_eb
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/osgi/framework/Bundle;
.line 119
check-cast v0, Lorg/acdd/framework/BundleImpl;
.line 120
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getLocation()Ljava/lang/String;
move-result-object v3
invoke-static {v3}, Lorg/acdd/runtime/DelegateComponent;->getPackage(Ljava/lang/String;)Lorg/acdd/runtime/PackageLite;
move-result-object v3
.line 121
if-eqz v3, :cond_10
iget-object v3, v3, Lorg/acdd/runtime/PackageLite;->components:Ljava/util/Set;
invoke-interface {v3, p0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_10
.line 122
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getArchive()Lorg/acdd/framework/bundlestorage/Archive;
move-result-object v1
invoke-interface {v1}, Lorg/acdd/framework/bundlestorage/Archive;->optDexFile()V
.line 123
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getClassLoader()Ljava/lang/ClassLoader;
move-result-object v3
.line 124
if-eqz v3, :cond_97
.line 126
:try_start_3d
invoke-virtual {v3, p0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
:try_end_40
.catch Ljava/lang/ClassNotFoundException; {:try_start_3d .. :try_end_40} :catch_45
move-result-object v1
.line 127
if-eqz v1, :cond_97
move-object v0, v1
.line 163
:goto_44
return-object v0
.line 130
:catch_45
move-exception v1
.line 131
new-instance v3, Ljava/lang/ClassNotFoundException;
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "Can\'t find class "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
invoke-virtual {v4, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
const-string v5, " in BundleClassLoader: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v4
.line 132
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getLocation()Ljava/lang/String;
move-result-object v0
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v4, " ["
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, "]classloader is: not null packageversion "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
.line 133
invoke-static {}, Lorg/acdd/runtime/ClassLoadFromBundle;->getPackageVersion()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, " exception:"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v1}, Ljava/lang/ClassNotFoundException;->getMessage()Ljava/lang/String;
move-result-object 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 v0
invoke-direct {v3, v0}, Ljava/lang/ClassNotFoundException;-><init>(Ljava/lang/String;)V
throw v3
.line 136
:cond_97
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Can\'t find class "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v4, " in BundleClassLoader: "
.line 137
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getLocation()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, 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
.line 138
new-instance v1, Ljava/lang/ClassNotFoundException;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, "]"
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
if-nez v3, :cond_e8
const-string v0, "classloader is null"
.line 139
:goto_ce
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v2, " packageversion "
.line 140
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-static {}, Lorg/acdd/runtime/ClassLoadFromBundle;->getPackageVersion()I
move-result v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/ClassNotFoundException;-><init>(Ljava/lang/String;)V
throw v1
.line 138
:cond_e8
const-string v0, "classloader not null"
goto :goto_ce
.line 144
:cond_eb
if-eqz v2, :cond_121
invoke-interface {v2}, Ljava/util/List;->isEmpty()Z
move-result v0
if-nez v0, :cond_121
.line 146
invoke-static {}, Lorg/acdd/framework/BundleManager;->getBundles()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_fb
:goto_fb
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_121
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/osgi/framework/Bundle;
.line 147
check-cast v0, Lorg/acdd/framework/BundleImpl;
.line 148
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getArchive()Lorg/acdd/framework/bundlestorage/Archive;
move-result-object v2
invoke-interface {v2}, Lorg/acdd/framework/bundlestorage/Archive;->isDexOpted()Z
move-result v2
if-eqz v2, :cond_fb
.line 150
invoke-virtual {v0}, Lorg/acdd/framework/BundleImpl;->getClassLoader()Ljava/lang/ClassLoader;
move-result-object v0
.line 151
if-eqz v0, :cond_fb
.line 153
:try_start_119
invoke-virtual {v0, p0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
:try_end_11c
.catch Ljava/lang/ClassNotFoundException; {:try_start_119 .. :try_end_11c} :catch_124
move-result-object v0
.line 154
if-eqz v0, :cond_fb
goto/16 :goto_44
.line 163
:cond_121
const/4 v0, 0x0
goto/16 :goto_44
.line 157
:catch_124
move-exception v0
goto :goto_fb
.end method