我创建了一个名为 IHelloService 的 AIDL 服务,并尝试在 libcore 模块下从 IOBridge 调用它。
目前我的代码如下
// import
import android.os.IHelloService;
import android.os.ServiceManager;
....
IHelloService helloService = IHelloService.Stub.asInterface(ServiceManager.getService("hello"));
int val = helloService.getVal();
我在进行标准构建时遇到了错误。
错误包括包android.os不存在
和找不到符号ServiceManager
和IHelloService
我已经在 HelloService aidl 文件中声明了package android.os
,所以我认为这不是问题所在。
如有任何帮助,我们将不胜感激。
最佳答案
桑,
您的问题实际上是我一直在解决的问题。您需要做的是构建一个新的 SDK 以与该特定服务一起使用,以便 Android Studio(我假设您正在使用它)可以将其识别为在您的 ROM 版本中可用。
这是您应该执行的操作:(可在 https://android.googlesource.com/platform/sdk/+/master/docs/howto_build_SDK.txt 找到)
- 转到您的 Android 构建区域并运行 .构建/envsetup.sh
- 在构建区域中运行命令“make update-api”。这将使用您对 api 所做的更改或添加来更新文件。
- 运行“lunch sdk-eng”来设置 SDK 的构建。
- 要制作 SDK,请运行“make sdk”。这可能需要一些时间(20m - 2hr),但将以“Package SDK: out/host/darwin-x86/sdk/android-sdk_eng..zip”行结束
现在 SDK 已经制作完成,您需要将 Android Studio 指向新的 SDK。要做到这一点:
- R右键单击您的应用,然后选择“打开模块设置”。
- 从左侧菜单中选择“SDK”。
- 选择新的 SDK 路径。
可能还有其他方法可以做到这一点,但这就是我目前正在使用的流程。
关于java - AIDL服务和Android开源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146370/