搬了新家,转让一批书。

搬了新家,整理一批我觉得可以转让的书。
书基本上全新,封面可能会有折痕,
之前保管状况一般,书的边缘可能会有点泛黄。
部分书带有蓝色或红色的“天道酬勤”章,
如果是做了笔记或写了名字的,我会取消交易(会知会你)。
希望是广州交易,BRT 全线免费送达,
外地可寄收件人付费的快递(可能要不少钱,具体价格我不清楚)。
--------------
评论即可购买,然后发邮件到 mail@laiyonghao.com 告知地址和送货方式。
====================
特价区
一批《故事会》杂志,10 元 5 本
一批《程序员》杂志,10 元 3 本

5 元区
互联网草根革命——web2.0时代的成功方路
曹操——阿瞒出道
VisualC++6.0桌面应用开发
SQLServer2000入门与提高 (已售)
一批《棋艺(象棋)》杂志,5 元每本

10 元区
人工神经网络及仿真实例(已售)
Python 2.1 宝典(已售)
软件测试技术(已售)
软件性能测试过程详解案例剖析(已售)
世界因你而不同——李开复自传
做最好的自己(李开复)
微语录——2009-2010
C/C++函数速查手册(最新版)铁道出版社(已售)
MFC 技术内幕(不售)
中文信息处理技术教程(已售)
大道至简(周爱民)(已售)
2010商业模式
通往奴役之路(已售)
我的奋斗(罗永浩)
孕前三月宜与忌(已售)
局中局——中国外企官场透视
论扯淡(硬皮)
标准模板库——自修教程与参考手册(已售)
搜索引擎与信息获取技术(已售)
Web软件用户界面设计指南(林锐)(已售)
计算机排样技术及其应用(已售)

20 元区
大话设计模式(已售)
设计模式初学者指南(已售)
软件测试实践(已售)
软件测试方法和技术(已售)
Apache Server 2.0 技术参考大全(已售)
云计算与SOA(已售)
系统程序员成长计划(已售)
过程改进与 CMM 实践问答(已售)
人工智能及其应用(蔡自兴)(已售)
高效程序的奥秘(已售)
面向模式的软件体系结构 卷2:用于并发和网络化对象的模式(已售)
TSP领导开发团队
道法自然——面向对象实践指南(已售)
C++ 程序调试实用手册(已售)
单片机应用系统设计技术(已售)
群智能算法及其应用(已售)

30 元区
EffectiveC++ 中文版(第三版)(已售)
Effective STL 中文版(已售)
超越 C++ 标准库——Boost 库导论(已售)
站在云端的 SAAS(已售)
算法设计技巧与分析(已售)
编程之美——微软技术面试心得(已售)
算法艺术与信息学竞赛(已售)
多任务下的数据结构与算法(已售)
多核程序设计技术——通过软件多线程提升性能(已售)
编程卓越之道 第二卷:运用底层语言思想编写高级语言代码(已售)

40 元区
Boost程序库完全开发指南 : 深入C++“准”标准库(已售)
多核计算与程序设计(已售)
PowerPoint演示文稿设计经典100例
The Software Optimization Cookbook(intel press 原装英文版)
数据库系统概念(原书第5版)
Exceptional C++ Style 英文版

<think>我们正在讨论的是在MTK Android平台上添加一个新的服务。根据之前提供的引用内容,我们知道MTKAndroid系统开发涉及特定的工具链和系统层次结构(如HAL层和内核驱动)。添加服务通常涉及修改Android框架层,可能需要编写JNI代码、定义AIDL接口,并确保服务在系统启动时正确注册和运行。 步骤分解: 1. **定义服务接口**:通常使用AIDL(Android接口定义语言)来定义服务的接口。 2. **实现服务**:在框架层实现AIDL定义的接口,并编写具体的服务逻辑。3.**注册服务**:将服务添加到系统服务中,并在系统启动时启动该服务。这通常需要修改系统启动流程(如SystemServer)或使用其他机制(如init.rc)来启动守护进程。4.**权限配置**:如果需要,为服务添加必要的权限。5.**编译与集成**:将服务代码集成到系统构建中,可能需要修改mk文件或bp文件(取决于构建系统版本)。 6. **测试**:在设备上测试服务是否正常运行。 由于MTK平台可能有特定的要求,我们还需要参考MTK的文档或相关资源。但根据引用[1]和[2],我们得知MTK提供了特定的工具链和SDK,以及系统各层的介绍(如HAL层和内核驱动)。然而,添加服务主要涉及框架层,因此我们重点在Android框架上。详细步骤:###1.定义AIDL接口在`frameworks/base/core/java/android/os`目录下(或者根据项目结构在适当位置)创建AIDL文件,例如`IMyNewService.aidl`:```aidlpackage android.os;interface IMyNewService {voiddoSomething(); }``` ###2.实现服务在框架层实现该接口。例如,在`frameworks/base/services/core/java/com/android/server`目录下创建服务类`MyNewService.java`:```javapackagecom.android.server;import android.content.Context; importandroid.os.IMyNewService;public classMyNewService extendsIMyNewService.Stub{private finalContext mContext;publicMyNewService(Contextcontext){mContext= context;}@Overridepublic voiddoSomething() {//实现具体功能}} ```###3.注册服务到SystemServer修改`SystemServer.java`(路径通常为`frameworks/base/services/java/com/android/server/SystemServer.java`),在`startOtherServices`方法中添加:```javatry{Slog.i(TAG,"MyNewService");//创建服务实例MyNewService myNewService= newMyNewService(context);//添加到ServiceManagerServiceManager.addService("mynewservice",myNewService);} catch(Throwable e) {Slog.e(TAG, "Failure startingMyNewService",e);} ```###4.权限配置如果服务需要权限,在`frameworks/base/core/res/AndroidManifest.xml`中添加权限声明。###5.编译配置将新增的AIDL文件和Java文件添加到对应的编译配置中(如`frameworks/base/Android.mk`或`frameworks/base/Android.bp`)。###6.测试重新编译系统镜像并刷机,然后通过adbshell使用`servicecall`命令测试服务是否可用,例如: ```bashservicecall mynewservice1```**注意事项**: -MTK平台可能对系统服务有额外的要求,例如需要签署特定的平台密钥。-如果服务需要与HAL层或内核交互,还需要编写JNI代码和HAL模块(这超出了添加一般系统服务的范围,但引用[2]提到了MTKCAMERA在HAL层和内核驱动的结构,可作参考)。根据引用[1],开发者需要下载MTKAndroid SDK和BuildTools,因此确保在MTK提供的环境中进行开发。 相关问题: 1.如何在MTK Android系统中添加自定义权限? 2.如何通过JNI在系统服务中调用本地库(NativeLibrary)?3.如何调试MTK Android系统服务?</think>### 在MTK Android系统中添加并运行自定义服务 #### 1. **服务创建与实现** 在`frameworks/base/services/core/java/com/android/server/`目录下创建服务类: ```java // MyCustomService.java package com.android.server; import android.content.Context; import android.os.IBinder; import android.util.Slog; public class MyCustomService extends IMyCustomService.Stub { private static final String TAG = "MyCustomService"; private final Context mContext; public MyCustomService(Context context) { mContext = context; Slog.i(TAG, "Service initialized"); } @Override public void executeTask(int param) { Slog.d(TAG, "Task executed with param: " + param); // 服务核心逻辑 } } ``` #### 2. **定义AIDL接口** 在`frameworks/base/core/java/android/os/`创建AIDL文件: ```aidl // IMyCustomService.aidl package android.os; interface IMyCustomService { void executeTask(int param); } ``` #### 3. **注册到SystemServer** 修改`SystemServer.java`(路径:`frameworks/base/services/java/com/android/server/SystemServer.java`): ```java private void startOtherServices() { try { // 添加以下代码 Slog.i(TAG, "Starting MyCustomService"); ServiceManager.addService("my_custom_service", new MyCustomService(context)); } catch (Throwable e) { Slog.e(TAG, "Failed to start MyCustomService", e); } } ``` #### 4. **配置SELinux权限** 在`device/mediatek/sepolicy/vendor`目录修改策略文件: ```te # my_custom_service.te type my_custom_service, domain; type my_custom_service_exec, exec_type, file_type; init_daemon_domain(my_custom_service) # service_contexts my_custom_service u:object_r:my_custom_service:s0 ``` #### 5. **编译与集成** ```bash # 编译服务模块 mmm frameworks/base/services/core/java/com/android/server/ # 刷入系统 adb reboot bootloader fastboot flash system system.img ``` #### 6. **验证服务运行** ```bash # 检查服务注册 adb shell service list | grep my_custom_service # 测试服务调用 adb shell service call my_custom_service 1 i32 100 ``` 输出示例: ```log Result: Parcel(00000000 00000000 '........') ``` #### 关键注意事项 1. **MTK平台适配**: - 使用MTK专用工具链编译(参考引用[1]) - 需匹配MTK SDK版本,避免兼容性问题 2. **内核交互**: - 如需访问硬件(如Camera),需通过HAL层中转(参考引用[2]) 3. **启动优化**: - 在`init.rc`中添加`on property`触发条件 - 避免阻塞SystemServer主线程 > 提示:MTK平台调试建议使用`cat /proc/kmsg`监控内核日志,特别是涉及HAL层交互时[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值