[app] Support dynamic colors (#1512)
This commit is contained in:
parent
b9093f2bb6
commit
af61504eeb
|
|
@ -193,7 +193,7 @@ dependencies {
|
||||||
implementation("dev.rikka.rikkax.widget:switchbar:1.0.2")
|
implementation("dev.rikka.rikkax.widget:switchbar:1.0.2")
|
||||||
implementation("dev.rikka.rikkax.layoutinflater:layoutinflater:1.1.0")
|
implementation("dev.rikka.rikkax.layoutinflater:layoutinflater:1.1.0")
|
||||||
implementation("me.zhanghai.android.appiconloader:appiconloader:1.3.1")
|
implementation("me.zhanghai.android.appiconloader:appiconloader:1.3.1")
|
||||||
implementation("org.lsposed.hiddenapibypass:hiddenapibypass:3.0")
|
implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.2")
|
||||||
implementation(project(":manager-service"))
|
implementation(project(":manager-service"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,7 @@ dependencies {
|
||||||
implementation("dev.rikka.ndk.thirdparty:cxx:1.2.0")
|
implementation("dev.rikka.ndk.thirdparty:cxx:1.2.0")
|
||||||
implementation("io.github.vvb2060.ndk:dobby:1.2")
|
implementation("io.github.vvb2060.ndk:dobby:1.2")
|
||||||
implementation("org.apache.commons:commons-lang3:3.12.0")
|
implementation("org.apache.commons:commons-lang3:3.12.0")
|
||||||
implementation("de.upb.cs.swt:axml:2.1.1")
|
implementation("de.upb.cs.swt:axml:2.1.2")
|
||||||
compileOnly("androidx.annotation:annotation:1.3.0")
|
compileOnly("androidx.annotation:annotation:1.3.0")
|
||||||
compileOnly(project(":hiddenapi-stubs"))
|
compileOnly(project(":hiddenapi-stubs"))
|
||||||
implementation(project(":hiddenapi-bridge"))
|
implementation(project(":hiddenapi-bridge"))
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,10 @@ public class ParasiticManagerHooker {
|
||||||
newAppInfo.deviceProtectedDataDir = appInfo.deviceProtectedDataDir;
|
newAppInfo.deviceProtectedDataDir = appInfo.deviceProtectedDataDir;
|
||||||
newAppInfo.processName = appInfo.processName;
|
newAppInfo.processName = appInfo.processName;
|
||||||
HiddenApiBridge.ApplicationInfo_credentialProtectedDataDir(newAppInfo, HiddenApiBridge.ApplicationInfo_credentialProtectedDataDir(appInfo));
|
HiddenApiBridge.ApplicationInfo_credentialProtectedDataDir(newAppInfo, HiddenApiBridge.ApplicationInfo_credentialProtectedDataDir(appInfo));
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
HiddenApiBridge.ApplicationInfo_overlayPaths(newAppInfo, HiddenApiBridge.ApplicationInfo_overlayPaths(appInfo));
|
||||||
|
}
|
||||||
|
HiddenApiBridge.ApplicationInfo_resourceDirs(newAppInfo, HiddenApiBridge.ApplicationInfo_resourceDirs(appInfo));
|
||||||
newAppInfo.uid = appInfo.uid;
|
newAppInfo.uid = appInfo.uid;
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Utils.logE("get manager pkginfo", e);
|
Utils.logE("get manager pkginfo", e);
|
||||||
|
|
|
||||||
|
|
@ -40,11 +40,11 @@ import android.system.Int32Ref;
|
||||||
import android.system.Os;
|
import android.system.Os;
|
||||||
import android.util.MutableInt;
|
import android.util.MutableInt;
|
||||||
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
|
|
||||||
import dalvik.system.VMRuntime;
|
|
||||||
|
|
||||||
public class HiddenApiBridge {
|
public class HiddenApiBridge {
|
||||||
public static int AssetManager_addAssetPath(AssetManager am, String path) {
|
public static int AssetManager_addAssetPath(AssetManager am, String path) {
|
||||||
return am.addAssetPath(path);
|
return am.addAssetPath(path);
|
||||||
|
|
@ -96,6 +96,24 @@ public class HiddenApiBridge {
|
||||||
applicationInfo.credentialProtectedDataDir = dir;
|
applicationInfo.credentialProtectedDataDir = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String[] ApplicationInfo_resourceDirs(ApplicationInfo applicationInfo) {
|
||||||
|
return applicationInfo.resourceDirs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ApplicationInfo_resourceDirs(ApplicationInfo applicationInfo, String[] resourceDirs) {
|
||||||
|
applicationInfo.resourceDirs = resourceDirs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(31)
|
||||||
|
public static String[] ApplicationInfo_overlayPaths(ApplicationInfo applicationInfo) {
|
||||||
|
return applicationInfo.overlayPaths;
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(31)
|
||||||
|
public static void ApplicationInfo_overlayPaths(ApplicationInfo applicationInfo, String[] overlayPaths) {
|
||||||
|
applicationInfo.overlayPaths = overlayPaths;
|
||||||
|
}
|
||||||
|
|
||||||
public static CompatibilityInfo Resources_getCompatibilityInfo(Resources res) {
|
public static CompatibilityInfo Resources_getCompatibilityInfo(Resources res) {
|
||||||
return res.getCompatibilityInfo();
|
return res.getCompatibilityInfo();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
package android.content.pm;
|
package android.content.pm;
|
||||||
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
public class ApplicationInfo {
|
public class ApplicationInfo {
|
||||||
public String credentialProtectedDataDir;
|
public String credentialProtectedDataDir;
|
||||||
|
|
||||||
|
public String[] resourceDirs;
|
||||||
|
|
||||||
|
@RequiresApi(31)
|
||||||
|
public String[] overlayPaths;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue