diff --git a/device.mk b/device.mk index e6173b6..645d9f4 100644 --- a/device.mk +++ b/device.mk @@ -26,10 +26,6 @@ PRODUCT_SOONG_NAMESPACES += device/peter/gsi PRODUCT_PROPERTY_OVERRIDES += \ ro.setupwizard.mode=OPTIONAL -# Resetprop -PRODUCT_PACKAGES += \ - resetprop_sys - # Init PRODUCT_PACKAGES += \ init_gsi diff --git a/init/Android.bp b/init/Android.bp index 724b1f6..1675a01 100644 --- a/init/Android.bp +++ b/init/Android.bp @@ -3,5 +3,12 @@ cc_binary { system_ext_specific: true, srcs: ["init_gsi.cpp"], shared_libs: ["libbase", "libdl", "libutils"], + static_libs: ["libresetprop"], init_rc: ["init_gsi.rc"], + target: { + android: { + ldflags: ["-Wl,--rpath,/system/${LIB}/bootstrap"], + }, + }, + bootstrap: true, } diff --git a/init/init_gsi.cpp b/init/init_gsi.cpp index cb3eff2..2af0541 100644 --- a/init/init_gsi.cpp +++ b/init/init_gsi.cpp @@ -4,20 +4,11 @@ #include #include -#include - using namespace android; using namespace std; -template -void fork_execl(Args... args) { - int pid, status; - if ((pid = fork()) == 0) { - execl(args..., nullptr); - } else { - waitpid(pid, &status, 0); - } -} +// From libresetprop +extern int setprop(const char *name, const char *value, bool trigger); void override_ro_prop(string prefix, string source, string postfix, string value) { if (value.length() == 0) return; @@ -33,7 +24,7 @@ void override_ro_prop(string prefix, string source, string postfix, string value std::cout << prop << std::endl; std::cout << value << std::endl; - fork_execl("/system/system_ext/bin/resetprop_sys", "resetprop_sys", prop.c_str(), value.c_str()); + setprop(prop.c_str(), value.c_str(), true); } std::string RO_PROP_SOURCES[] = { diff --git a/resetprop/Android.bp b/resetprop/Android.bp index c1e2341..5a1ecfc 100644 --- a/resetprop/Android.bp +++ b/resetprop/Android.bp @@ -1,50 +1,55 @@ +cc_library_static { + name: "libresetprop", + srcs: [ + //nanopb + "Magisk/native/jni/external/nanopb/pb_common.c", + "Magisk/native/jni/external/nanopb/pb_encode.c", + "Magisk/native/jni/external/nanopb/pb_decode.c", + + //Magisk resetprop + "Magisk/native/jni/resetprop/resetprop.cpp", + "Magisk/native/jni/resetprop/persist_properties.cpp", + "Magisk/native/jni/resetprop/system_property_api.cpp", + "Magisk/native/jni/resetprop/system_property_set.cpp", + + //Systemproperties + "Magisk/native/jni/systemproperties/context_node.cpp", + "Magisk/native/jni/systemproperties/contexts_serialized.cpp", + "Magisk/native/jni/systemproperties/contexts_split.cpp", + "Magisk/native/jni/systemproperties/prop_area.cpp", + "Magisk/native/jni/systemproperties/prop_info.cpp", + "Magisk/native/jni/systemproperties/property_info_parser.cpp", + "Magisk/native/jni/systemproperties/system_properties.cpp", + + //Magisk utils + "Magisk/native/jni/utils/file.cpp", + "Magisk/native/jni/utils/logging.cpp", + "Magisk/native/jni/utils/misc.cpp", + "Magisk/native/jni/utils/selinux.cpp", + "Magisk/native/jni/utils/xwrap.cpp", + ], + local_include_dirs: [ + "Magisk/native/jni/include", + "Magisk/native/jni/utils/include", + "Magisk/native/jni/", + "Magisk/native/jni/resetprop/", + "Magisk/native/jni/systemproperties/include/", + "Magisk/native/jni/external/nanopb/", + ], +} + cc_binary { - name: "resetprop_sys", - system_ext_specific: true, - srcs: [ - //nanopb - "Magisk/native/jni/external/nanopb/pb_common.c", - "Magisk/native/jni/external/nanopb/pb_encode.c", - "Magisk/native/jni/external/nanopb/pb_decode.c", - - //Magisk resetprop - "Magisk/native/jni/resetprop/resetprop.cpp", - "Magisk/native/jni/resetprop/persist_properties.cpp", - "Magisk/native/jni/resetprop/system_property_api.cpp", - "Magisk/native/jni/resetprop/system_property_set.cpp", - - //Systemproperties - "Magisk/native/jni/systemproperties/context_node.cpp", - "Magisk/native/jni/systemproperties/contexts_serialized.cpp", - "Magisk/native/jni/systemproperties/contexts_split.cpp", - "Magisk/native/jni/systemproperties/prop_area.cpp", - "Magisk/native/jni/systemproperties/prop_info.cpp", - "Magisk/native/jni/systemproperties/property_info_parser.cpp", - "Magisk/native/jni/systemproperties/system_properties.cpp", - - //Magisk utils - "Magisk/native/jni/utils/file.cpp", - "Magisk/native/jni/utils/logging.cpp", - "Magisk/native/jni/utils/misc.cpp", - "Magisk/native/jni/utils/selinux.cpp", - "Magisk/native/jni/utils/xwrap.cpp", - - //glue - "resetprop.cpp", - ], - local_include_dirs: [ - "Magisk/native/jni/include", - "Magisk/native/jni/utils/include", - "Magisk/native/jni/", - "Magisk/native/jni/resetprop/", - "Magisk/native/jni/systemproperties/include/", - "Magisk/native/jni/external/nanopb/", - ], - - bootstrap: true, + name: "resetprop_sys", + system_ext_specific: true, + srcs: [ + //glue + "resetprop.cpp", + ], + static_libs: ["libresetprop"], target: { android: { ldflags: ["-Wl,--rpath,/system/${LIB}/bootstrap"], - }, + }, }, + bootstrap: true, }