在安卓 NDK 中使用"sp"
Use "sp" in Android NDK
我正试图通过LD_PRELOAD拦截一些本机库调用。
这对于用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_proad.cpp:88:1:错误:"sp"未命名类型
任何知道如何使用sp<..>的人在这里我想这不是安卓系统特有的,而是一个标准的C++——我对C++完全陌生,刚刚开始"今天":)
我知道这可能是不好的做法,所以我欢迎任何其他想法。
sp<>
是安卓系统特有的。sp<>
是强指针,wp<>
是弱指针;它们是作为Binder IPC实施的一部分而产生的。
开始寻找实现的地方是框架RefBase.h,这对于一个C++新手来说有点曲折。你所做的一切都不是NDK定义的公共API的一部分,这意味着它可能会在不同版本之间发生变化,所以要注意,你试图做的事情可能无法在设备或软件更新中工作。
相关文章:
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- NDK:如何通过ndkr15c包含"RefBase.h"?
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 为什么使用 NDK 不能存在不同的 stl 实现?
- Arduino无法编译名为SP:"Expected ')' before '(' token"的变量
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- Android NDK 未定义对ASensorEventQueue_registerSensor的引用
- 如何将 libjpeg-turbo Android NDK 添加为静态库
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- Android NDK - 无法在 Visual Studio 2017 中调试
- 对于哪些 ABI,我可以使用 NDK v10e 构建 apk?
- -fno-unwind-tables 和 -fno-async-unwind-tables 不起作用 NDK clang
- 不再支持Android NDK APP_STL gnustl_shared
- 我在 ndk 中构建文件时遇到错误 android.mk
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 为 Android NDK 编译库
- 在安卓 NDK 中使用"sp"