当前位置: 首页 > news >正文

雪亮工程建设网站界面wordpress基本插件

雪亮工程建设网站界面,wordpress基本插件,保定网站制作案例,东道设计公司待遇如何说明#xff1a;aidl for HAL 这种机制#xff0c;可以自动生成java代码#xff0c;app调用可以获取中间过程的jar包#xff0c;结合反射调用 ServiceManager.getService 方法#xff0c;直接获取 HAL 服务#xff0c;不再需要费力在framework层添加代码#xff0c;方便…说明aidl for HAL 这种机制可以自动生成java代码app调用可以获取中间过程的jar包结合反射调用 ServiceManager.getService 方法直接获取 HAL 服务不再需要费力在framework层添加代码方便快捷。 1. 定义aidl接口 hardware/interfaces/test/aidl/android/hardware/test/ITest.aidl package android.hardware.test;VintfStability interface ITest {String getMsg();void setMsg(in String msg); } 2. 创建Android.bp hardware/interfaces/test/aidl/Android.bp aidl_interface {name: android.hardware.test,vendor: true,srcs: [android/hardware/test/*.aidl],stability: vintf,owner: test,backend: {cpp: {enabled: true,},java: {platform_apis: true,},ndk: {enabled: true,}}, } 3. 编译 mmm hardware/interfaces/test/ 4. 编译报错根据提示重新编译生成 aidl api m android.hardware.test-update-api 5. 生成成功后重新编译 mmm hardware/interfaces/test/ 编译成功 6. 实现HAL接口 hardware/interfaces/test/aidl/default/Test.h #pragma once#include aidl/android/hardware/test/BnTest.hnamespace aidl { namespace android { namespace hardware { namespace test{class Test: public BnTest {public://String getMsg();ndk::ScopedAStatus getMsg(std::string* _aidl_return);//void setMsg(in String msg);ndk::ScopedAStatus setMsg(const std::string msg);private:std::string message ; };} // namespace test } // namespace hardware } // namespace android } // namespace aidl hardware/interfaces/test/aidl/default/Test.cpp #define LOG_TAG Test#include utils/Log.h #include iostream #include Test.hnamespace aidl { namespace android { namespace hardware { namespace test{ndk::ScopedAStatus Test::getMsg(std::string* _aidl_ret) {*_aidl_ret message;return ndk::ScopedAStatus::ok(); }ndk::ScopedAStatus Test::setMsg(const std::string msg) {message msg;return ndk::ScopedAStatus::ok(); }} // namespace test } // namespace hardware } // namespace android } // namespace aidl 7. 添加服务 hardware/interfaces/test/aidl/default/main.cpp #define LOG_TAG Test#include android-base/logging.h #include android/binder_manager.h #include android/binder_process.h #include Test.husing aidl::android::hardware::test::Test;int main() {ABinderProcess_setThreadPoolMaxThreadCount(0); ABinderProcess_startThreadPool();std::shared_ptrTest test ndk::SharedRefBase::makeTest();const std::string desc std::string() Test::descriptor /default;if (test ! nullptr) {if(AServiceManager_addService(test-asBinder().get(), desc.c_str()) ! STATUS_OK) {return -1;}} else {return -1;}ABinderProcess_joinThreadPool();return EXIT_FAILURE; } 8. init rc hardware/interfaces/test/aidl/default/android.hardware.test-service.rc service android.hardware.test-service /vendor/bin/hw/android.hardware.test-serviceinterface aidl android.hardware.test.ITest/defaultclass haluser systemgroup system 9. manifest hardware/interfaces/test/aidl/default/android.hardware.test-service.xml manifest version1.0 typedevicehal formataidlnameandroid.hardware.test/nameversion1/version interface nameITest/name instancedefault/instance /interface /hal /manifest 10. 编译脚本 hardware/interfaces/test/aidl/default/Android.bp cc_binary {name: android.hardware.test-service,vendor: true,relative_install_path: hw,init_rc: [android.hardware.test-service.rc],vintf_fragments: [android.hardware.test-service.xml],srcs: [Test.cpp,main.cpp,],shared_libs: [liblog, libbase,libbinder_ndk, android.hardware.test-V1-ndk_platform, ], } 10. 参与编译 device\xxx\xxx\project.mk PRODUCT_PACKAGES \android.hardware.test \android.hardware.test-service 11. 模块添加到兼容性矩阵中 hardware/interfaces/compatibility_matrices/compatibility_matrix.x.xml hardware/interfaces/compatibility_matrices/compatibility_matrix.current.xml hal formataidl optionaltruenameandroid.hardware.test/nameversion1/versioninterfacenameITest/nameinstancedefault/instance/interface /hal 12. 解决selinux的问题 参考Android12 AIDL native层实现_android native aidl-CSDN博客 13. 编译烧录 14. 测试 开机后先看看服务是否起来 adb shell service list | grep test C 测试在这里忽略参考Android12 AIDL native层实现_android native aidl-CSDN博客 15. java 测试 取出 out\soong\.intermediates\hardware\interfaces\test\aidl\android.hardware.test-V1-java\android_common\javac下的jar包放到android工程里边。 由于android.os.ServiceManager是个隐藏类我们用反射 public static IBinder getService(String name) {try {Class? c Class.forName(android.os.ServiceManager);Method getService c.getMethod(getService, String.class);return (IBinder) getService.invoke(c, name);} catch (Exception e) {e.printStackTrace();return null;} } java 测试代码 IBinder binder getService(android.hardware.test.ITest/default); ITest test ITest.Stub.asInterface(binder); Log.d(TestHal, binder: test); try {test.setMsg(test message);String msg test.getMsg();Log.d(TestHal, HAL message: msg); } catch (Exception e) {e.printStackTrace(); } 为什么 getService 是 android.hardware.test.ITest/default 这个可以用 service list | grep test 获取。 这是在 aidl 服务实现时候 add service 时候传入的 const std::string desc std::string() Test::descriptor /default; 另外 selinux 的解决可以参考 SELinux 权限问题调试_audit(0.0:343): avc: denied { create }-CSDN博客 在apk导入framework.jar的方式调用 ServiceManager 在 libs 同级目录下创建 libsconly 把 framework.jar 放入build.gradle 添加 compileOnly fileTree(dir: libsconly, include: [*.jar]) sync 之后就可以使用 android.os.ServiceManager 的静态方法了。 参考RK3568 Android11 增加HAL层的AIDL_android hal aidl-CSDN博客 感谢参考文献的各位算是在 Android 12 上跑通了。
http://www.zqtcl.cn/news/891812/

相关文章:

  • 北京矿建建设集团有限公司 网站科技软件下载
  • 公司建网站要多少钱wordpress轮播框
  • 怎么看一个网站什么语言做的全网最新首码项目
  • 深圳网站建设ue网站空间和流量
  • 网站前端设计要做什么游仙建设局官方网站
  • 大型门户网站建设哪家好进一步加大网站集约化建设力度
  • 网站里面那些工作是做晚上兼职的钱包网站建设策划
  • 网站开发实现的环境自豪地采用wordpress 怎么去掉
  • ic商城网站建设网站备案关闭影响排名
  • qq官方网站进入wordpress调用文章某个分类
  • 南充网站建设设计略奥企业网站管理系统怎么修改密码
  • 网站建设里的知识360云主机可以建设网站吗
  • 创建网站代码上海网络公司查询
  • 电子商务网站建设与管理实训报告百度权重划分等级
  • 网站建设响应式是什么医院网站建设方案策划书
  • 开鲁网站seo不用下载男女做羞羞事动画网站免费
  • 做网站客户需求新乡专业做网站多少钱
  • 邢台建设银行官方网站二维码生成器app下载
  • 自己怎么做网站游戏做网站就是做app
  • 怎样做一元购网站wordpress+淘客代码
  • 网站建设发展现状贵阳有哪些做网站的公司
  • 微博上如何做网站推广蝉知和wordpress
  • 泷澄建设集团网站北京建设执业资格注册网站
  • 门户网站建设情况报告深圳龙岗房价多少钱一平方米
  • 网站建设备案是什么ps培训班
  • 深圳网站推广优化wordpress 运行速度慢
  • 谁能给个网站谢谢发布广东建设工程信息网站
  • 网站建设用户需求分析中国加盟网
  • 建设上线网站seo关键词优化软件排名
  • 郑州手工网站建设公司企业做网站好做吗