gpt4 book ai didi

Android AIDL NoClassDefFoundError

转载 作者:行者123 更新时间:2023-11-29 18:13:23 27 4
gpt4 key购买 nike

我正在研究 AIDL。我的 .aidl 文件在另一个项目(另一个应用程序)中。假设 aidl 文件名为 IService.aidl。但是在分配

IService service = IService.Stub.asInterface((IBinder )iBinder);

1.可能是什么问题?
2.另外如何访问另一个项目的IService(aidl)?

03-03 13:11:42.184: E/AndroidRuntime(2558): FATAL EXCEPTION: main
03-03 13:11:42.184: E/AndroidRuntime(2558): java.lang.NoClassDefFoundError: aexp.aidl.IService$Stub
03-03 13:11:42.184: E/AndroidRuntime(2558): at com.test.aidlclient.AIDLClientDemoActivity$AdditionServiceConnection.onServiceConnected(AIDLClientDemoActivity.java:72)
03-03 13:11:42.184: E/AndroidRuntime(2558): at android.app.ActivityThread$PackageInfo$ServiceDispatcher.doConnected(ActivityThread.java:1247)
03-03 13:11:42.184: E/AndroidRuntime(2558): at android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection.run(ActivityThread.java:1264)
03-03 13:11:42.184: E/AndroidRuntime(2558): at android.os.Handler.handleCallback(Handler.java:587)
03-03 13:11:42.184: E/AndroidRuntime(2558): at android.os.Handler.dispatchMessage(Handler.java:92)
03-03 13:11:42.184: E/AndroidRuntime(2558): at android.os.Looper.loop(Looper.java:123)
03-03 13:11:42.184: E/AndroidRuntime(2558): at android.app.ActivityThread.main(ActivityThread.java:4627)
03-03 13:11:42.184: E/AndroidRuntime(2558): at java.lang.reflect.Method.invokeNative(Native Method)
03-03 13:11:42.184: E/AndroidRuntime(2558): at java.lang.reflect.Method.invoke(Method.java:521)
03-03 13:11:42.184: E/AndroidRuntime(2558): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
03-03 13:11:42.184: E/AndroidRuntime(2558): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
03-03 13:11:42.184: E/AndroidRuntime(2558): at dalvik.system.NativeStart.main(Native Method)

最佳答案

RemoteInterface.aidl 需要在服务和需要连接到服务的应用程序中具有相同的包名称 - 所以问题是:你把它放在哪里!?

如果您在 Eclipse 中进行开发,那么诀窍是拥有一个公共(public)源文件夹(两个项目共有)在两个项目和构建属性/源中创建此文件夹,单击“链接源”并浏览到该位置的共同来源。 (你可以给它起任何你想要的名字)在两个项目中都这样做,并将 interface.aidl 放在那里。它会出现在两个项目的 Package Explorer 中,当您在一个项目中更改它时,另一个项目也会更新。

在公共(public)源文件夹中,将 interface.aidl 放入与服务同名的包中。

关于Android AIDL NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544646/

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