java - AIDL服务和Android开源

标签 java android android-source aidl

我创建了一个名为 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不存在找不到符号ServiceManagerIHelloService

我已经在 HelloService aidl 文件中声明了package android.os,所以我认为这不是问题所在。

如有任何帮助,我们将不胜感激。

最佳答案

桑,

您的问题实际上是我一直在解决的问题。您需要做的是构建一个新的 SDK 以与该特定服务一起使用,以便 Android Studio(我假设您正在使用它)可以将其识别为在您的 ROM 版本中可用。

这是您应该执行的操作:(可在 https://android.googlesource.com/platform/sdk/+/master/docs/howto_build_SDK.txt 找到)

  1. 转到您的 Android 构建区域并运行 .构建/envsetup.sh
  2. 在构建区域中运行命令“make update-api”。这将使用您对 api 所做的更改或添加来更新文件。
  3. 运行“lunch sdk-eng”来设置 SDK 的构建。
  4. 要制作 SDK,请运行“make sdk”。这可能需要一些时间(20m - 2hr),但将以“Package SDK: out/host/darwin-x86/sdk/android-sdk_eng..zip”行结束

现在 SDK 已经制作完成,您需要将 Android Studio 指向新的 SDK。要做到这一点:

  1. R右键单击您的应用,然后选择“打开模块设置”。
  2. 从左侧菜单中选择“SDK”。
  3. 选择新的 SDK 路径。

可能还有其他方法可以做到这一点,但这就是我目前正在使用的流程。

关于java - AIDL服务和Android开源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146370/

相关文章:

Android 蓝牙 onCharacteristicChanged 从未被调用

android - 查看寻呼机垂直重叠选项卡 fragment

performance - 加快 Android (AOSP) 构建时间

java - iText pdf具有相同内容的多个页面

java - 如何更改数据库连接来创建 java 应用程序的安装程序?

java - 为什么消费者中的wait()无法从生产者notifyall()获得通知?

android - 如何确定 AOSP 系统库二进制文件中使用了哪些源文件?

java - bufferedreader 不会移动到下一行

android - PagerAdapter 页面上带有 fragment 的重复 ID

Android SSL 内部 - 实际实现在哪里?