| Index: apk/hijack/org/chromium/deconstructed/DeconstructedApplication.java
|
| diff --git a/apk/hijack/org/chromium/deconstructed/DeconstructedApplication.java b/apk/hijack/org/chromium/deconstructed/DeconstructedApplication.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e29f963f9c1b7e0097c4246356ad9a6f0d2e0445
|
| --- /dev/null
|
| +++ b/apk/hijack/org/chromium/deconstructed/DeconstructedApplication.java
|
| @@ -0,0 +1,59 @@
|
| +package org.chromium.deconstructed;
|
| +
|
| +import android.app.Application;
|
| +import android.content.Context;
|
| +
|
| +import java.io.File;
|
| +
|
| +public class DeconstructedApplication extends Application {
|
| + private static final String TAG = "org.chromium.deconstructed.DeconstructedApplication";
|
| +
|
| + private static Application realApplication;
|
| + private static final String realApplicationName = "org.chromium.simple.MainApplication";
|
| + private static ClassLoader classLoader;
|
| +
|
| + static {
|
| + android.util.Log.e(TAG, "<static>");
|
| + }
|
| +
|
| + public DeconstructedApplication() {
|
| + }
|
| +
|
| + @Override
|
| + public void attachBaseContext(Context context) {
|
| + super.attachBaseContext(context);
|
| + try {
|
| + File dexDir = new File("/sdcard/deconstructed/dex");
|
| + JavaInstaller.install(this, dexDir);
|
| + File nativeDir = new File("/sdcard/deconstructed/lib");
|
| + NativeInstaller.install(this, nativeDir);
|
| + File resources = new File("/sdcard/deconstructed/resources.ap_");
|
| + ResourceInstaller.install(resources);
|
| + realApplication = createRealApplication();
|
| + Reflect.invokeMethod(realApplication, "attachBaseContext", context);
|
| + } catch (Exception e) {
|
| + throw new RuntimeException(e);
|
| + }
|
| + }
|
| +
|
| +
|
| + @Override
|
| + public void onCreate() {
|
| + super.onCreate();
|
| + android.util.Log.e(TAG, "onCreate()");
|
| + try {
|
| + ApplicationInstaller.install(this, realApplication);
|
| + } catch (Exception e) {
|
| + throw new RuntimeException(e);
|
| + }
|
| + }
|
| +
|
| + private Application createRealApplication() {
|
| + try {
|
| + return (Application) Reflect.newInstance(
|
| + DeconstructedApplication.class.getClassLoader(), realApplicationName);
|
| + } catch (Exception e) {
|
| + throw new RuntimeException(e);
|
| + }
|
| + }
|
| +}
|
|
|