Store apk path

This commit is contained in:
LoveSy 2022-12-27 21:31:03 +08:00 committed by LoveSy
parent 18bedd4fbb
commit a922ae9e6c
1 changed files with 16 additions and 12 deletions

View File

@ -59,14 +59,16 @@ public class LSPosedContext extends XposedContext {
static final Set<XposedModule> modules = ConcurrentHashMap.newKeySet(); static final Set<XposedModule> modules = ConcurrentHashMap.newKeySet();
private final Object mSync = new Object();
private final Context mBase; private final Context mBase;
private final String mPackageName; private final String mPackageName;
private final Object mSync = new Object(); private final String mApkPath;
private Resources mResources;
LSPosedContext(Context base, String packageName) { LSPosedContext(Context base, String packageName, String apkPath) {
this.mBase = base; this.mBase = base;
this.mPackageName = packageName; this.mPackageName = packageName;
this.mApkPath = apkPath;
} }
public static void callOnPackageLoaded(XposedModuleInterface.PackageLoadedParam param, Bundle extra) { public static void callOnPackageLoaded(XposedModuleInterface.PackageLoadedParam param, Bundle extra) {
@ -133,7 +135,7 @@ public class LSPosedContext extends XposedContext {
} }
args[i] = null; args[i] = null;
} }
var ctx = new LSPosedContext((Context) ctor.newInstance(args), module.packageName); var ctx = new LSPosedContext((Context) ctor.newInstance(args), module.packageName, module.apkPath);
for (var entry : module.file.moduleClassNames) { for (var entry : module.file.moduleClassNames) {
var moduleClass = ctx.getClassLoader().loadClass(entry); var moduleClass = ctx.getClassLoader().loadClass(entry);
Log.d(TAG, " Loading class " + moduleClass); Log.d(TAG, " Loading class " + moduleClass);
@ -161,16 +163,18 @@ public class LSPosedContext extends XposedContext {
@Override @Override
public AssetManager getAssets() { public AssetManager getAssets() {
throw new AbstractMethodError(); return getResources().getAssets();
} }
@Override @Override
public Resources getResources() { public Resources getResources() {
synchronized (mSync) { synchronized (mSync) {
if (mResources == null) { var res = mBase.getResources();
mResources = XModuleResources.createInstance(mBase.getPackageCodePath(), null); if (res == null) {
res = XModuleResources.createInstance(mBase.getPackageCodePath(), null);
XposedHelpers.setObjectField(mBase, "mResources", res);
} }
return mResources; return res;
} }
} }
@ -196,12 +200,12 @@ public class LSPosedContext extends XposedContext {
@Override @Override
public void setTheme(int resid) { public void setTheme(int resid) {
throw new AbstractMethodError(); mBase.setTheme(resid);
} }
@Override @Override
public Resources.Theme getTheme() { public Resources.Theme getTheme() {
throw new AbstractMethodError(); return mBase.getTheme();
} }
@Override @Override
@ -221,12 +225,12 @@ public class LSPosedContext extends XposedContext {
@Override @Override
public String getPackageResourcePath() { public String getPackageResourcePath() {
throw new AbstractMethodError(); return mApkPath;
} }
@Override @Override
public String getPackageCodePath() { public String getPackageCodePath() {
return mBase.getPackageCodePath(); return mApkPath;
} }
@Override @Override