如何编写一个通过hal调用服务的app?

问题描述 投票:0回答:2

在创建 selinux 和 .aidl 后,我有 1 个使用 aidl 进行 hal 的项目。文件

我构建了一个service.cpp代码并将其加载到系统中

我想部署我的应用程序以便能够测试我的服务,但是当我下载 android studio 时我真的不知道如何与 aosp 链接

谁能给我答案吗?

android xml manifest aidl hidl
2个回答
0
投票

你的HAL会生成一个可以在上层使用的服务。您可以通过运行命令 adb shell service list | 检查它。 grep 'SERVICE_NAME'。

您需要创建一个 HAL 管理器来促进服务和您的应用程序之间的通信。这是我为计时器 HAL 创建的示例:

https://github.com/alvenan/AOSPbenchmark/tree/main/timer_manager

在Java文件中,您可以看到如何创建服务实例并进行函数调用:

https://github.com/alvenan/AOSPbenchmark/blob/main/timer_manager/src/vendor/alvenan/timermanager/TimerManager.java

管理器编译完成后,会在“out”文件夹中创建一个.jar库。例如: /your/path/aosp/out/target/common/obj/JAVA_LIBRARIES/your.package.yourservicemanager_intermediates/classes.jar

然后,您可以通过转到“构建”>“编辑库和依赖项”>“依赖项”在 Android Studio 中添加此路径。在“声明的依赖项”下,单击“+”并选择“JAR/AAR 依赖项”。输入步骤 1 中 .jar 文件的路径并应用更改。

此后,您将能够实例化管理器并在应用程序中访问该服务:

https://github.com/alvenan/AOSPbenchmark/blob/main/bench_test_jni/JavaNativeTestApp/app/src/main/java/vendor/alvenan/javanativetestapp/MainActivity.java#L18

最后,将您的经理添加到应用程序的清单中:

https://github.com/alvenan/AOSPbenchmark/blob/main/bench_test_jni/JavaNativeTestApp/app/src/main/AndroidManifest.xml#L17

这是我在 HAL 项目中通常使用的方法。要获得更全面的概述,您可以查看我的存储库:

https://github.com/alvenan/AOSPbenchmark/tree/main

我希望这有帮助。


0
投票

实际上,我通过 aosp andrdoid 13 的支持工作使事情变得非常简单 经过几个小时研究应用程序的结构后,我创建了以下结构图并在 Invcase.java 中调用服务 最后只需输入命令 mmm packages/apps/invcase/ 它会自动为我生成 1 个 .apk 文件,现在我将使用 adb 安装

© www.soinside.com 2019 - 2024. All rights reserved.