diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 339b3590..1431a5e8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -35,12 +35,12 @@ rikkax-recyclerview = { module = "dev.rikka.rikkax.recyclerview:recyclerview-ktx rikkax-widget-borderview = { module = "dev.rikka.rikkax.widget:borderview", version = "1.1.0" } rikkax-widget-mainswitchbar = { module = "dev.rikka.rikkax.widget:mainswitchbar", version = "1.0.2" } -androidx-activity = { module = "androidx.activity:activity", version = "1.6.1" } +androidx-activity = { module = "androidx.activity:activity", version = "1.7.0" } androidx-annotation = { module = "androidx.annotation:annotation", version = "1.6.0" } androidx-browser = { module = "androidx.browser:browser", version = "1.5.0" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version = "2.1.4" } androidx-core = { module = "androidx.core:core", version = "1.9.0" } -androidx-fragment = { module = "androidx.fragment:fragment", version = "1.5.5" } +androidx-fragment = { module = "androidx.fragment:fragment", version = "1.5.6" } androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment", version.ref = "nav" } androidx-navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "nav" } androidx-preference = { module = "androidx.preference:preference", version = "1.2.0" } diff --git a/magisk-loader/src/main/jni/api/zygisk.h b/magisk-loader/src/main/jni/api/zygisk.h index 035c1670..42479c48 100644 --- a/magisk-loader/src/main/jni/api/zygisk.h +++ b/magisk-loader/src/main/jni/api/zygisk.h @@ -273,12 +273,17 @@ void zygisk_companion_entry(int client) { func(client); } template void entry_impl(api_table *table, JNIEnv *env) { - ModuleBase *module = new T(); - if (!table->registerModule(table, new module_abi(module))) - return; - auto api = new Api(); - api->impl = table; - module->onLoad(api, env); + static T module{}; + ModuleBase *m = &module; + static module_abi abi(m); + static bool loaded = table->registerModule(table, &abi); + if (!loaded) return; + [[maybe_unused]] static Api api = [&] { + Api api; + api.impl = table; + m->onLoad(&api, env); + return api; + }(); } } // namespace internal @@ -310,8 +315,10 @@ void zygisk_companion_entry(int client) { func(client); } } // namespace zygisk -[[gnu::visibility("default")]] [[gnu::used]] -extern "C" void zygisk_module_entry(zygisk::internal::api_table *, JNIEnv *); +extern "C" { +[[gnu::visibility("default"), maybe_unused]] +void zygisk_module_entry(zygisk::internal::api_table *, JNIEnv *); -[[gnu::visibility("default")]] [[gnu::used]] -extern "C" void zygisk_companion_entry(int); +[[gnu::visibility("default"), maybe_unused]] +void zygisk_companion_entry(int); +}