我正在尝试通过LD_PRELOAD截取某些本地库调用。
这对于用C语言编写的简单库来说很好,但现在我想更进一步,覆盖一些在AOSP中用C++编写的更复杂的类方法。
以下是我的示例:
#include <rs/cpp/util/RefBase.h>
namespace android {
sp<MediaCodec> MediaCodec::CreateByType(const sp<ALooper> &looper, const char *mime, bool encoder) {
// TODO this will be implemented by me
return NULL;
}
}
在我的Application.mk文件中,我有以下代码段:
APP_STL := gnustl_static
在 Android.mk 文件中有这样一行:
LOCAL_STATIC_LIBRARIES += libstlport_static
遗憾的是,我收到的错误如下:
jni/libhook/ld_preload.cpp:88:1: error: 'sp' does not name a type 有没有任何想法如何在这里使用sp<..>? 我假设它不是Android特定的,而是一个标准的C++事物 - 我完全是新手,刚刚开始学习“今天” :)
我知道这可能是不好的实践,因此我欢迎任何其他想法。