我試圖通過LD_PRELOAD攔截一些本地庫調用。在Android NDK中使用「sp」
對於使用C語言編寫的簡單庫,這可以正常工作,但現在我試着更進一步,並用C++編寫的AOSP重寫一些更復雜的類方法。
這裏是我的例子:
#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++的東西 - 我全新的C++,剛開始「今天」:)
我知道這可能是不好的做法,所以我歡迎任何其他想法。