Skip to content
This repository was archived by the owner on Jan 8, 2024. It is now read-only.

Commit ec0fbd6

Browse files
canyieRikkaW
authored andcommitted
Support Android 14 QPR2 Beta 2
1 parent 03a52e5 commit ec0fbd6

File tree

2 files changed

+81
-4
lines changed

2 files changed

+81
-4
lines changed

riru/src/main/cpp/jni_hooks.cpp

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,9 @@ onRegisterZygote(const char *className, const JNINativeMethod *methods, int numM
4949
jni::zygote::nativeForkAndSpecialize = new JNINativeMethod{method.name,
5050
method.signature,
5151
method.fnPtr};
52-
53-
if (strcmp(nativeForkAndSpecialize_r_sig, method.signature) == 0)
52+
if (strcmp(nativeForkAndSpecialize_u_sig, method.signature) == 0)
53+
newMethods[i].fnPtr = (void *) nativeForkAndSpecialize_u;
54+
else if (strcmp(nativeForkAndSpecialize_r_sig, method.signature) == 0)
5455
newMethods[i].fnPtr = (void *) nativeForkAndSpecialize_r;
5556
else if (strcmp(nativeForkAndSpecialize_p_sig, method.signature) == 0)
5657
newMethods[i].fnPtr = (void *) nativeForkAndSpecialize_p;
@@ -87,8 +88,9 @@ onRegisterZygote(const char *className, const JNINativeMethod *methods, int numM
8788
jni::zygote::nativeSpecializeAppProcess = new JNINativeMethod{method.name,
8889
method.signature,
8990
method.fnPtr};
90-
91-
if (strcmp(nativeSpecializeAppProcess_r_sig, method.signature) == 0)
91+
if (strcmp(nativeSpecializeAppProcess_u_sig, method.signature) == 0)
92+
newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_u;
93+
else if (strcmp(nativeSpecializeAppProcess_r_sig, method.signature) == 0)
9294
newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_r;
9395
else if (strcmp(nativeSpecializeAppProcess_q_sig, method.signature) == 0)
9496
newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_q;
@@ -605,6 +607,32 @@ jint nativeForkAndSpecialize_r_dp2(
605607
return res;
606608
}
607609

610+
[[clang::no_stack_protector]]
611+
jint nativeForkAndSpecialize_u(
612+
JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags,
613+
jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name,
614+
jintArray fdsToClose, jintArray fdsToIgnore, jboolean is_child_zygote,
615+
jstring instructionSet, jstring appDataDir, jboolean isTopApp,
616+
jobjectArray pkgDataInfoList, jobjectArray whitelistedDataInfoList,
617+
jboolean bindMountAppDataDirs, jboolean bindMountAppStorageDirs,
618+
jboolean mountSyspropOverrides) {
619+
620+
nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external,
621+
se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote,
622+
instructionSet, appDataDir, isTopApp, pkgDataInfoList,
623+
whitelistedDataInfoList,
624+
bindMountAppDataDirs, bindMountAppStorageDirs);
625+
626+
jint res = ((nativeForkAndSpecialize_u_t *) jni::zygote::nativeForkAndSpecialize->fnPtr)(
627+
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, se_name,
628+
fdsToClose, fdsToIgnore, is_child_zygote, instructionSet, appDataDir, isTopApp,
629+
pkgDataInfoList, whitelistedDataInfoList, bindMountAppDataDirs,
630+
bindMountAppStorageDirs, mountSyspropOverrides);
631+
632+
nativeForkAndSpecialize_post(env, clazz, uid, is_child_zygote, res);
633+
return res;
634+
}
635+
608636
[[clang::no_stack_protector]]
609637
jint nativeForkAndSpecialize_samsung_p(
610638
JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags,
@@ -834,6 +862,27 @@ void nativeSpecializeAppProcess_r_dp2(
834862
nativeSpecializeAppProcess_post(env, clazz, uid, startChildZygote);
835863
}
836864

865+
[[clang::no_stack_protector]]
866+
void nativeSpecializeAppProcess_u(
867+
JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags,
868+
jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName,
869+
jboolean startChildZygote, jstring instructionSet, jstring appDataDir,
870+
jboolean isTopApp, jobjectArray pkgDataInfoList,
871+
jobjectArray whitelistedDataInfoList, jboolean bindMountAppDataDirs,
872+
jboolean bindMountAppDataDirs, jboolean mountSyspropOverrides) {
873+
nativeSpecializeAppProcess_pre(
874+
env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName,
875+
startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList,
876+
whitelistedDataInfoList, bindMountAppDataDirs, bindMountAppStorageDirs);
877+
878+
((nativeSpecializeAppProcess_u_t *) jni::zygote::nativeSpecializeAppProcess->fnPtr)(
879+
env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName,
880+
startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList,
881+
whitelistedDataInfoList, bindMountAppDataDirs, bindMountAppStorageDirs, mountSyspropOverrides);
882+
883+
nativeSpecializeAppProcess_post(env, clazz, uid, startChildZygote);
884+
}
885+
837886
[[clang::no_stack_protector]]
838887
void nativeSpecializeAppProcess_samsung_q(
839888
JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags,

riru/src/main/cpp/jni_hooks.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,21 @@ using nativeForkAndSpecialize_r_dp3_t = jint(
103103
jstring instructionSet, jstring appDataDir, jboolean isTopApp, jobjectArray pkgDataInfoList,
104104
jboolean bindMountAppStorageDirs);
105105

106+
const static char *nativeForkAndSpecialize_u_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;[Ljava/lang/String;ZZZ)I";
107+
108+
using nativeForkAndSpecialize_u_t = jint(
109+
JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jstring,
110+
jintArray, jintArray, jboolean, jstring, jstring, jboolean, jobjectArray, jobjectArray,
111+
jboolean, jboolean, jboolean);
112+
113+
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_u(
114+
JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags,
115+
jobjectArray rlimits, jint mount_external, jstring se_info, jstring se_name,
116+
jintArray fdsToClose, jintArray fdsToIgnore, jboolean is_child_zygote,
117+
jstring instructionSet, jstring appDataDir, jboolean isTopApp, jobjectArray pkgDataInfoList,
118+
jobjectArray whitelistedDataInfoList, jboolean bindMountAppDataDirs, jboolean bindMountAppStorageDirs,
119+
jboolean mountSyspropOverrides);
120+
106121
const static char *nativeForkAndSpecialize_samsung_p_sig = "(II[II[[IILjava/lang/String;IILjava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;)I";
107122

108123
using nativeForkAndSpecialize_samsung_p_t = jint(
@@ -199,6 +214,19 @@ using nativeSpecializeAppProcess_r_dp3_t = void(
199214
jboolean startChildZygote, jstring instructionSet, jstring appDataDir,
200215
jboolean isTopApp, jobjectArray pkgDataInfoList, jboolean bindMountAppStorageDirs);
201216

217+
const static char *nativeSpecializeAppProcess_u_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;[Ljava/lang/String;ZZZ)V";
218+
219+
using nativeSpecializeAppProcess_u_t = void(
220+
JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jstring,
221+
jboolean, jstring, jstring, jboolean, jobjectArray, jobjectArray, jboolean, jboolean, jboolean);
222+
223+
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_u(
224+
JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags,
225+
jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName,
226+
jboolean startChildZygote, jstring instructionSet, jstring appDataDir,
227+
jboolean isTopApp, jobjectArray pkgDataInfoList, jobjectArray whitelistedDataInfoList,
228+
jboolean bindMountAppDataDirs, jboolean bindMountAppStorageDirs, jboolean mountSyspropOverrides);
229+
202230
const static char *nativeSpecializeAppProcess_q_alternative_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Z)V";
203231

204232
using nativeSpecializeAppProcess_q_alternative_t = void(

0 commit comments

Comments
 (0)