gpt4 book ai didi

Android 替换system/lib/lib.so 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:31 30 4
gpt4 key购买 nike

我想用我做了一些小更改的系统库替换它。这两个库都是使用相同版本的cyanogenmod 源代码编译的。我复制到 SD 卡的那个可以在早期的 CM 闪存上运行。

现在我尝试运行以下命令:

$ adb shell
shell@m0:/ $ su
root@m0:/ # mount -o rw,remount /system
root@m0:/ # chmod 777 /system/lib/libwilhelm.so
root@m0:/ # cp /sdcard/libwilhelm.so /system/lib/libwilhelm.so
root@m0:/ # chmod 644 /system/lib/libwilhelm.so
root@m0:/ # mount -o ro,remount /system
root@m0:/ # reboot

但是,即使在重新启动后,旧的 libwilhelm.so 也会被使用

我知道这一点是因为我在未覆盖的版本中记录了一些内容frameworks/wilhelm/src/sl_entry.c:

#include <android/log.h>
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "frameworks/wilhelm/src/sl_entry.c", __VA_ARGS__))

// ...

SL_API SLresult SLAPIENTRY slCreateEngine(SLObjectItf *pEngine, SLuint32 numOptions,
const SLEngineOption *pEngineOptions, SLuint32 numInterfaces,
const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired)
{


LOGI("qqqqqqqqqqqqqqqqqqqq in slCreateEngine");

//... continue original code

此日志与 SD 卡上的其他库不同。因此,一旦我更换库并重新启动,logcat 应该显示其他内容,但它仍然打印原始日志消息。

此外,该库似乎无法从其他位置读取:

root@m0:/ # find . -name "libwilhelm*"
./mnt/shell/emulated/0/libwilhelm.so
./system/lib/libwilhelm.so
find: ./proc/1897/task/2088/fd/49: No such file or directory
find: ./proc/1897/task/2088/fd/57: No such file or directory
find: ./proc/1897/task/2100/fd/42: No such file or directory
find: ./proc/2466/task/2471/fd/88: No such file or directory
find: ./proc/2466/task/2741/fd/85: No such file or directory
find: ./proc/2466/task/2741/fd/95: No such file or directory
./data/media/0/libwilhelm.so

我错过了什么?

最佳答案

事实证明,frameworks/wilhelm/src/sl_entry.c 不是 libwilhelm.so 的一部分,而是 libOpenSLES.so

此外,用可从 TWRP 等恢复程序执行的更新程序脚本替换库会更安全。该脚本可能如下所示:

ui_print("mounting /system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system");
ui_print("/system now mounted");
ui_print("adding new shared library libOpenSLES.so");
package_extract_file("libOpenSLES.so", "/system/lib/libOpenSLES.so");
ui_print("done adding new shared library libOpenSLES.so");
ui_print("unmounting /system");
unmount("/system");
ui_print("/system now unmounted");
ui_print("finished");

关于Android 替换system/lib/lib.so 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185119/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com