Framework编译AIDL文件
今天下午下载一个开源的Android系统,编译中老遇到如下aidl错误,思考了很久,终于找到解决办法。AIDL是什么?不清楚的可以google。这里重点是如何在android framework中添加新的接口。如下例子,如果没有添加AILD文件,编译系统的时候会出现如下错误。
frameworks/base/core/java/android/bluetooth/BluetoothHid.java:86: cannot find symbol
symbol : class IBluetoothHid
location: class android.bluetooth.BluetoothHid
private final IBluetoothHid mService;
^
frameworks/base/core/java/android/server/BluetoothHidService.java:30: cannot find symbol
symbol : class IBluetoothHid
location: package android.bluetooth
import android.bluetooth.IBluetoothHid;
^
frameworks/base/core/java/android/server/BluetoothHidService.java:47: package IBluetoothHid does not exist
public class BluetoothHidService extends IBluetoothHid.Stub {
^
frameworks/base/core/java/android/bluetooth/BluetoothHid.java:98: package IBluetoothHid does not exist
mService = IBluetoothHid.Stub.asInterface(b);
^
frameworks/base/core/java/android/server/BluetoothHidService.java:142: cannot find symbol
symbol : variable super
location: class android.server.BluetoothHidService
super.finalize();
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
5 errors
6 warnings
解决办法:
在framework中的 Android.mk文件中添加
......
core/java/android/app/backup/IBackupManager.aidl \
core/java/android/app/backup/IRestoreObserver.aidl \
core/java/android/app/backup/IRestoreSession.aidl \
core/java/android/bluetooth/IBluetooth.aidl \
core/java/android/bluetooth/IBluetoothA2dp.aidl \
core/java/android/bluetooth/IBluetoothCallback.aidl \
core/java/android/bluetooth/IBluetoothHeadset.aidl \
core/java/android/bluetooth/IBluetoothHid.aidl \
core/java/android/bluetooth/IBluetoothPbap.aidl \
core/java/android/content/IContentService.aidl \
core/java/android/content/IIntentReceiver.aidl \
core/java/android/content/IIntentSender.aidl \
core/java/android/content/ISyncAdapter.aidl \
......
有错误出来了,ok跟着做。
******************************
You have tried to change the API from what has been previously approved.
To make these errors go away, you have two choices:
1) You can add "@hide"
javadoc comments to the methods, etc. listed in the
errors above.
2) You can update current.xml by
executing the following command:
make update-api
To submit the revised
current.xml to the main Android repository,
you will need approval.
******************************
make updata-api --更新系统api
>>>>>>finish
make -j8 --重新编译
ok编译顺利通过。
分享到:
相关推荐
创建AIDL文件 XXX.aidl 如果XXX.aidl引用了一个java下的model例如引用了a.b.c.Model; 则需要在XXX.aidl文件中声明import a.b.c.Model;全路径。 并且创建另一个文件Model.aidl 在Model.aidl文件中声明以下内容 ...
android aidl文件不一致引起的调用出错问题.doc
通过反射机制调用系统隐藏的API清除手机所有的app缓存.关键方法freeStorageAndNotify。前提添加AIDL文件.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
安卓开发黑名单时必须的两个aidl文件 最重要的ITelephony 类
自己写代码的补丁.
android电话拦截需要的aidl文件
获取缓存及清理缓存会用到的aidl文件,包括: IPackageDataObserver.aidl、IPackageStatsObserver.aidl、PackageStats.aidl
电话拦截的aidl文件
学习传智播客的手机安全卫士用到的aidl文件 包含 ITelephony.aidl NeighboringCellInfo.aidl两个文件
电话拦截所需的AIDL文件
AIDL概述:AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言,设计这门语言的目的是为了实现进程间通信。接下来我写了两个demo(AildeService和AidleClient),他们之间...
清理缓存所需的必备文件
进程间通信涉及到客户端和服务端, 肯定有绑定服务的过程, 所以要阅读一下Android Service相关的知识, 跨进程通信的媒介aidl文件,我们也必须要了解怎么创建的,有什么规则,所以请先阅读一下Android AIDL使用这篇...
1.实现AIDL双向绑定 2.demo使用kotlin实现
aidl 电话文件 ITelephony.aidl NeighboringCellInfo.aidl
Android camera用到的aidl文件和aidl编译出来的BnCameraService.h,BpCameraService.h,ICameraService.cpp,ICameraService.h, 单独编译方法见: https://blog.csdn.net/kk3087961/article/details/136051743 ...
ITelephony和NeighboringCellInfo这两个文件是android源码文件,在实现接听电话时需要拷贝这两个文件到aidl目录下,代码实现可以看我的博客
Android编写Aidl文件[文].pdf
Aidldemo 备份一个 用到的时候直接拿出来用 Service 和Activity 是两个独立的Apk