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编译顺利通过。
分享到:
相关推荐
"Kaidl"是Android Framework中的一种关键组件,全称为Kernel AIDL(Kernel Android Interface Definition Language),它是Android系统内部进程间通信(IPC)的一种机制,用于在系统服务和应用之间高效地传输数据。...
"AIDLDemo"可能包含服务端接口定义(.aidl文件)及对应的实现,客户端的调用代码,以及必要的Activity或Service来启动和管理服务。而"AIDLDemoGet"可能是一个具体的功能模块,用于从服务端获取数据。 在实际操作中...
**注意**:确保AIDL文件的包声明与框架中的其他相关文件保持一致,这里是`android.app`。 ##### 2.2 实现服务 接下来,在`frameworks/base/services/java/com/android/server/`目录下创建`HelloWorldService.java`...
前面两篇文章实现了自定义HAL和HIDL服务,本篇接着往上层实现,这篇文章要写的是JNI服务和framework层AIDL服务实现,由AIDL服务调用JNI层的服务的函数,为了提供给上层APP使用 同样我们参照系统其他服务的方式来写,...
AOSP添加服务 framework中添加我们自己的服务,添加步骤如下: 整理知识 ...添加aidl文件 core/java/android/os/Iybftest.aidl 编译aidl ./framework/base$ mm -B 2.添加Manager /framework/base/co
1. **framework.aidl**:接口定义语言(Interface Definition Language)文件,用于定义Android系统服务的接口。AIDL帮助开发者创建跨进程通信的接口,使得应用程序能调用其他进程中的服务。 2. **android.jar**:这...
2. **修改AIDL文件**: - 在SDK目录下找到`framework.aidl`文件。 - 添加一行`parcelable com.android.internal.telephony.gsm.NetworkInfo;`。 #### 步骤六:运行在模拟器上 1. **修改包名**: - 修改`Phone2`...
此外,还需要在`Android.mk`文件中更新`LOCAL_SRC_FILES`,包含`.aidl`文件,确保编译系统能够生成服务所需的Java代码和JNI头文件。 5. **启动和使用服务**: 应用程序可以通过`Context.bindService()`方法连接到...
本文将深入探讨如何通过修改Android Framework系统层,尤其是涉及到Audiomanager、AudioService和IAudioService.aidl的部分,来实现自定义的声音模式。 首先,我们从Audiomanager开始。`AudioManager`是Android SDK...
在"android-plugin-framework"中,可能利用`AndroidManifest.xml`中的`<application>`标签设置不同的`android:process`属性,或者使用AIDL(Android Interface Definition Language)进行进程间通信(IPC)。...
源码中会包含各种setter方法,用于更新系统设置,并通过AIDL(Android Interface Definition Language)与上层应用交互。 3. **Preference Framework** Settings应用大量使用了Android的Preference Framework,这...
- **在manifest文件中注册**:在`<application>`标签内添加`<receiver>`标签。 - **在代码中动态注册**:使用`registerReceiver()`方法。 #### 23. 请介绍下ContentProvider是如何实现数据共享的。 **...
4. **Android Framework**:这是Android的核心组件,包括Activity Manager、Content Provider、Broadcast Receiver、Service等关键组件,开发者需要熟悉它们的工作原理。 5. **编译环境搭建**:使用AOSP(Android ...
- **Application Framework**:Java API,包括Activity Manager、Content Provider等。 - **Applications**:用户应用程序,如电话、联系人等。 #### 19. ContentProvider如何实现数据共享 ContentProvider通过...
- **工作原理**: 通过定义`.aidl`文件来描述接口,编译后生成Java代码,实现进程间的通信。 - **支持的数据类型**: 支持基本类型、String、Parcelable、List、Map等。 #### 26. 权限的区别 - **运行时权限**: 应用...
3. **插件框架(Framework)**:提供一套接口和协议,使主应用和插件之间能够进行交互。插件需要遵循这个框架来实现其功能,以便主应用能够正确识别和调用。 4. **动态加载机制**:这是插件化的核心技术,通常通过...
- 安装ADT:通过Eclipse的帮助菜单安装新软件,添加ADT插件的更新站点。 - 安装SDK Tools:运行SDK Setup或`tools\android`命令,选择需要的SDK版本和工具包下载安装。 - 配置Eclipse中的SDK路径:通过Eclipse的...
3)将/frameworks/base/core/java/android/hardware/ IIrdaManager.aidl IrdaManager.java 四个文件复制到 /frameworks/base/core/java/android/hardware/中 4)在/frameworks/base目录,打开Android.mk文件,修改...
- **FrameLayout**:帧布局是Android中最简单的布局容器,所有添加的视图都会堆叠在一起,后添加的视图会覆盖前面的视图。 #### 3. Android中的动画分类及其特点和区别 - **Tween Animation(渐变动画)**:这种...