ERROR/AndroidRuntime(716): java.lang.SecurityException: Binder invocation to an incorrect interface

解决Android Binder异常
本文解决了一个常见的Android开发问题:在使用AIDL实现远程服务时出现的SecurityException错误。通过确保服务端与客户端拥有完全相同的接口定义(包括包名),可以避免这一错误。

转自:http://blog.youkuaiyun.com/a1031359915/article/details/7785227

郁闷,今天遇到一异常:

E/AndroidRuntime(744): java.lang.IllegalStateException: Could not execute method of the activity

详细后面的异常是:E/AndroidRuntime(744): Caused by: java.lang.SecurityException: Binder invocation to an incorrect interface

解决方法如下:

在使用AIDL远程服务时,经常会遇到ERROR/AndroidRuntime(716): java.lang.SecurityException: Binder invocation to an incorrect interface这个错误,解决方法:在使用上请注意,服务端与客户端都要有相同的接口(使用到的),这里的“相同”是指完全相同,包括包名,也就是说要在不同工程下建立相同的包名,这样一来,问题应该迎刃而解了!

 

服务端:

 

 

客户端:

 

 

E/e.AgriAutoPilo: No implementation found for boolean org.qtproject.qt.android.QtNative.updateNativeActivity() (tried Java_org_qtproject_qt_android_QtNative_updateNativeActivity and Java_org_qtproject_qt_android_QtNative_updateNativeActivity__) E/AndroidRuntime: FATAL EXCEPTION: qtMainLoopThread E/AndroidRuntime: Process: org.qtproject.example.AgriAutoPilot, PID: 6511 E/AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZTVNSt6__ndk13pmr25monotonic_buffer_resourceE" referenced by "/data/app/~~0q3KNDsCDiKPvPUlxfKdeQ==/org.qtproject.example.AgriAutoPilot-x27ejh2OW--2gnuZAYk5lQ==/base.apk!/lib/arm64-v8a/libQt6Core_arm64-v8a.so"... E/AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1077) E/AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:998) E/AndroidRuntime: at java.lang.System.loadLibrary(System.java:1656) E/AndroidRuntime: at org.qtproject.qt.android.QtLoader.loadLibraryHelper(QtLoader.java:478) E/AndroidRuntime: at org.qtproject.qt.android.QtLoader.lambda$loadLibraries$1$org-qtproject-qt-android-QtLoader(QtLoader.java:554) E/AndroidRuntime: at org.qtproject.qt.android.QtLoader$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0) E/AndroidRuntime: at org.qtproject.qt.android.QtThread.lambda$run$0(QtThread.java:57) E/AndroidRuntime: at org.qtproject.qt.android.QtThread$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0) E/AndroidRuntime: at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25) E/AndroidRuntime: at java.lang.Thread.run(Thread.java:920)
最新发布
09-23
### 解决 'No implementation found for boolean org.qtproject.qt.android.QtNative.updateNativeActivity()' 错误 - **检查 Java 与 C++ 交互代码**:此错误通常意味着 Java 代码调用的本地方法在 C++ 实现中未能找到。需检查 `org.qtproject.qt.android.QtNative.updateNativeActivity()` 方法对应的 C++ 实现是否正确注册,是否有拼写错误或签名不匹配的情况。 - **检查 JNI 绑定**:确保 JNI(Java Native Interface)绑定配置无误。在 Qt 中使用 JNI 时,需保证 `.cpp` 文件里正确实现了 Java 方法对应的本地函数,且函数签名正确。例如: ```cpp #include <jni.h> extern "C" JNIEXPORT jboolean JNICALL Java_org_qtproject_qt_android_QtNative_updateNativeActivity(JNIEnv *env, jobject /* this */) { // 实现代码 return JNI_TRUE; } ``` - **检查 Qt Android 插件**:某些情况下,该错误可能与 Qt Android 插件的配置或加载有关。检查项目的 `.pro` 文件,确保正确包含了所需的 Qt Android 模块和插件。 ### 解决 'dlopen failed: cannot locate symbol "_ZTVNSt6__ndk13pmr25monotonic_buffer_resourceE"' 错误 - **检查库依赖**:此错误表明在动态链接时找不到特定的符号,通常是由于库依赖问题导致的。使用 `readelf -s` 命令检查依赖库,确保所有依赖库都存在且版本兼容。例如: ```bash readelf -s /path/to/your/library.so | grep _ZTVNSt6__ndk13pmr25monotonic_buffer_resourceE ``` - **检查 NDK 版本**:该符号与 C++ 标准库中的内存资源相关,可能是 NDK(Native Development Kit)版本不兼容导致的。确保使用的 NDK 版本与 Qt 6.91 兼容,可尝试更新或更换 NDK 版本。 - **检查编译选项**:检查项目的编译选项,确保使用了正确的 C++ 标准和编译标志。在 `.pro` 文件中添加或修改相关选项,例如: ```pro QMAKE_CXXFLAGS += -std=c++17 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值