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

做坑网站需要制作一个网站需要多少小时

做坑网站需要,制作一个网站需要多少小时,汉源网站建设,河南省示范校建设专题网站我一直觉得#xff0c;现代计算机不是一门科学#xff0c;起码快算不上一门理科科学。上上下下全是人造#xff0c;左左右右全是生意#xff0c;用管理学#xff0c;经济学去学计算机#xff0c;也许更看得懂很多问题。HAL就是一个典型例子。 传统Linux绕开了微软的霸权…我一直觉得现代计算机不是一门科学起码快算不上一门理科科学。上上下下全是人造左左右右全是生意用管理学经济学去学计算机也许更看得懂很多问题。HAL就是一个典型例子。 传统Linux绕开了微软的霸权但是又面临GPL要开源的尴尬。谷歌为了迎合硬件资本家封闭垄断发财的愿望所以搞了HAL这个概念。将原来在内核态的驱动移了大部分核心内容到用户态这样就可以封闭可以垄断赚钱。然后因为HAL这玩意只在安卓上有配合了安卓的硬件公司反过来又被谷歌绑架这样一环套一环吃钱。一开始用Java吸引广大的Java生态码农进场。现在又搞Kotlin想把码农套牢。搞这几出是真的只是科学吗当然不是归根结底大部分还是生意。 我对安卓接触不久有些理解不一定对大家用批判的眼光看就好。有什么错误还请指正。 一 安卓硬件接口的演化 传统Linux怎么调用硬件就是ko。。。几个函数搞定。Android复杂了很多所以整理一下。 在安卓中除了上面讲的HAL还有一个就是Framework这个就是app的framework要理解安卓驱动层这两点绕不开。为了适配framework安卓把硬件是作为服务service来使用。在Android中这种结构也进化了很多代。 1 首先是传统HALLegacy HAL 在内核8.0以前使用。用户态的so貌似保存在/system/lib64这个版本是直接读取硬件so比较原始暴力。 App-Service-AIDL-Server-JNI-HAL so-kernel driver 2 现代HALConventional HAL 使用Iibhardware来管理so同时下层的驱动使用一个单独的分区so全部集成到vender.img和system解绑。要找寻so通过libhardware这个中间层。编译时要提供一个Android.bp文件。 App-Service-AIDL-Server-JNI-Iibhardware-so(vender.img) 3 HIDL 在安卓8之后开始使用HIDL总的来说就是将HAL封装成服务完全就是rpc的玩法。 HIDL编译后会生成Android.bp这个有时间再看看。最后会有两个so一个so放在system分区一个impl.so放在vendor分区以此实现framework和驱动服务的分离。客户端使用前者服务端使用后者。服务端包含impl.so之后会生成一个可执行程序就可以作为一个service单独运行。客户端包含了so可以直接调用服务。 分为直通式和绑定式。有大神说直通式就是虽然使用HAL但还是在一个进程绑定式是使用HAL但是数据通过Binder转发上面说的应该就是绑定式。直通式和绑定式也都是HAL生成的代码中控制的。比如 extern C IXXX* HIDL_FETCH_IXXX(const char* name); AIDL和HIDL的中间就是安卓的framework。 App-AIDL-Service-HIDL-HAL Service-so(vender.img) 4 全AIDL 10内核开始。 App-AIDL-HAL Service-so(vender.img) 来自ASOP官网的图。 二 看一下AIDL和HIDL。 最新的HAL主要涉及到的主要是两个接口AIDL和HIDL。 首先是AIDLAndroid Interface definition language。看资料说是android中两个app交互的IPC方式。首先IPC有很多种管道域套接字message共享内存问题是谷歌为什么要搞出来一套新的呢 从一个AIDL的例子可以看到 // IMyRemoteService.aidl interface IMyRemoteService {int getValue();void setValue(int value); } 一边使用 private final IMyRemoteService.Stub mBinder new IMyRemoteService.Stub() 另一边使用 mRemoteService IMyRemoteService.Stub.asInterface(iBinder); 在接口中主要定义的还是函数也就是说比管道这些更上层更适合Java的调用。就算上层函数调用其实也很多方式比如COMsoaprpc都是干这事的。安卓应该还是用binder进行统一管理了吧毕竟是一个单独的服务。 HIDL 主要还是提供底层cpp驱动和上层java的通信。hal文件定义如下 // ILedService.hal package android.hardware.led;interface ILedService {int getLedState();void setLedState(int state); }; 它的C语法稍怪 #include android/hardware/led/1.0/ILedService.h #include hidl/LegacySupport.husing android::hardware::led::V1_0::ILedService; using android::hardware::Return; using android::hardware::Void;class LedService : public ILedService { public:LedService() {}Returnint32_t getLedState() override {return mLedState;}//略 };int main() {return android::hardware::configureRpcThreadpool(1, true) android::OK android::hardware::registerAsService(new LedService()) android::OK? 0: 1; } Java侧的倒是差不多。 在Binder的使用中Server端继承BnInterface, Client端继承BpInterface。我接触的工程中一边叫做BP侧那么应该就是app侧BN侧那么就是服务端了。 最后写完的service可以通过rc文件作为一个系统服务。 参考 针对 Android 进行开发  |  Android 开发者  |  Android Developers https://source.android.com/docs/core/architecture?hlzh-cn https://source.android.com/docs/core/architecture/aidl/aidl-hals?hlzh-cn AIDL for HALs实战_hidl会被aidl代替-CSDN博客 Android HIDL 介绍学习和实战应用-CSDN博客 AIDL for HALs实战_hidl会被aidl代替-CSDN博客 HIDL 原理及使用详解-CSDN博客 Android上层与驱动交互完整篇三HIDL服务_android.bp hidl_interface-CSDN博客 Android HIDL学习2 ---- HelloWorld - 简书
http://www.pierceye.com/news/242918/

相关文章:

  • 楚雄网站建设rewlkj自己怎么建立个人网站
  • 网站开发工程师工作描述加强门户网站建设与管理办法
  • 电商网站优化方案个人网站设计与制作代码
  • 仙居建设规划局网站asp 茶叶网站模板
  • 福州网页模板建站梦幻西如何建立网站做代练
  • 专业做毕业设计网站设计禹州市城乡建设局网站
  • 魔站网站开发手机商城官网
  • 沧州 网站建设公众号搭建第三方平台
  • 天津建设项目招投标网站唐山网站建设推广
  • 长沙h5建站手机图片网站源码
  • php网站项目无锡有网页制作公司吗
  • 做企业网站需要收费吗wordpress单主题
  • 潮州网站开发多少钱wordpress用户调用
  • 湖南响应式网站公司闸北建设机械网站
  • 图书管理系统网站开发教程北京今朝装饰设计有限公司
  • 济南咨询行业网站开发qq降龙是哪个公司开发的
  • 可以做go分析的网站网站如何做营销
  • 企业网站设计要求做公司网站的价格
  • 网站建设与管理中专专业网页设计公司营销crm系统
  • wordpress全站甘肃省住房和城乡建设厅安置局网站
  • 做视频网站应该选什么服务器十大暗网搜索引擎
  • 建立外贸网站多少钱淮北招聘网最新招聘信息
  • 有做浏览单的网站jsp网站开发过程
  • 做网站用小型机或服务器wordpress 喜欢
  • 网站建设与维护采访稿中国建设银行电脑版
  • 企业网站建设变相收取等级保护费手游平台十大排名
  • 影响力网站建设恩施网站开发
  • 美术馆网站建设总体要求承德信息发布微信平台
  • 同城便民网站开发为什么企业需要建设网站
  • 网站制作推荐新鸿儒黄山游玩攻略及费用