`
地球小野花
  • 浏览: 164563 次
  • 性别: Icon_minigender_1
  • 来自: 马赛大回旋
社区版块
存档分类
最新评论

Framework添加AIDL文件

阅读更多

 

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编译顺利通过。
0
1
分享到:
评论
1 楼 ihopethatwell 2013-01-22  
楼主请教一下,如果我添加packages/MSystemUI/src/com/android/systemui/IStationcaption.aidl 是否也是一样的添加到framework中的 Android.mk文件中?

相关推荐

    framewor kaidl

    "Kaidl"是Android Framework中的一种关键组件,全称为Kernel AIDL(Kernel Android Interface Definition Language),它是Android系统内部进程间通信(IPC)的一种机制,用于在系统服务和应用之间高效地传输数据。...

    android Aidl 客户端和服务端Demo

    "AIDLDemo"可能包含服务端接口定义(.aidl文件)及对应的实现,客户端的调用代码,以及必要的Activity或Service来启动和管理服务。而"AIDLDemoGet"可能是一个具体的功能模块,用于从服务端获取数据。 在实际操作中...

    如何添加一个Application Framework Service(without native code)

    **注意**:确保AIDL文件的包声明与框架中的其他相关文件保持一致,这里是`android.app`。 ##### 2.2 实现服务 接下来,在`frameworks/base/services/java/com/android/server/`目录下创建`HelloWorldService.java`...

    AndroidQ 打通应用层到HAL层—(JNI服务和AIDL服务实现)

    前面两篇文章实现了自定义HAL和HIDL服务,本篇接着往上层实现,这篇文章要写的是JNI服务和framework层AIDL服务实现,由AIDL服务调用JNI层的服务的函数,为了提供给上层APP使用 同样我们参照系统其他服务的方式来写,...

    AOSP添加服务

    AOSP添加服务 framework中添加我们自己的服务,添加步骤如下: 整理知识 ...添加aidl文件 core/java/android/os/Iybftest.aidl 编译aidl ./framework/base$ mm -B 2.添加Manager /framework/base/co

    android-29.zip

    1. **framework.aidl**:接口定义语言(Interface Definition Language)文件,用于定义Android系统服务的接口。AIDL帮助开发者创建跨进程通信的接口,使得应用程序能调用其他进程中的服务。 2. **android.jar**:这...

    将Android原生的Phone程序通过eclipse跑在模拟器上

    2. **修改AIDL文件**: - 在SDK目录下找到`framework.aidl`文件。 - 添加一行`parcelable com.android.internal.telephony.gsm.NetworkInfo;`。 #### 步骤六:运行在模拟器上 1. **修改包名**: - 修改`Phone2`...

    Ubuntu中为Android实现Application Frameworks层增加硬件访问服务

    此外,还需要在`Android.mk`文件中更新`LOCAL_SRC_FILES`,包含`.aidl`文件,确保编译系统能够生成服务所需的Java代码和JNI头文件。 5. **启动和使用服务**: 应用程序可以通过`Context.bindService()`方法连接到...

    Android声音模式定制.rar

    本文将深入探讨如何通过修改Android Framework系统层,尤其是涉及到Audiomanager、AudioService和IAudioService.aidl的部分,来实现自定义的声音模式。 首先,我们从Audiomanager开始。`AudioManager`是Android SDK...

    android-plugin-framework

    在"android-plugin-framework"中,可能利用`AndroidManifest.xml`中的`<application>`标签设置不同的`android:process`属性,或者使用AIDL(Android Interface Definition Language)进行进程间通信(IPC)。...

    Android应用源码之Settings.zip

    源码中会包含各种setter方法,用于更新系统设置,并通过AIDL(Android Interface Definition Language)与上层应用交互。 3. **Preference Framework** Settings应用大量使用了Android的Preference Framework,这...

    android常见的面试题

    - **在manifest文件中注册**:在`<application>`标签内添加`<receiver>`标签。 - **在代码中动态注册**:使用`registerReceiver()`方法。 #### 23. 请介绍下ContentProvider是如何实现数据共享的。 **...

    android源码开发实战10.09.zip

    4. **Android Framework**:这是Android的核心组件,包括Activity Manager、Content Provider、Broadcast Receiver、Service等关键组件,开发者需要熟悉它们的工作原理。 5. **编译环境搭建**:使用AOSP(Android ...

    android面试题

    - **Application Framework**:Java API,包括Activity Manager、Content Provider等。 - **Applications**:用户应用程序,如电话、联系人等。 #### 19. ContentProvider如何实现数据共享 ContentProvider通过...

    Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题)

    - **工作原理**: 通过定义`.aidl`文件来描述接口,编译后生成Java代码,实现进程间的通信。 - **支持的数据类型**: 支持基本类型、String、Parcelable、List、Map等。 #### 26. 权限的区别 - **运行时权限**: 应用...

    动态加载第三方应用-插件化架构

    3. **插件框架(Framework)**:提供一套接口和协议,使主应用和插件之间能够进行交互。插件需要遵循这个框架来实现其功能,以便主应用能够正确识别和调用。 4. **动态加载机制**:这是插件化的核心技术,通常通过...

    android一步一步最基础学习__新手

    - 安装ADT:通过Eclipse的帮助菜单安装新软件,添加ADT插件的更新站点。 - 安装SDK Tools:运行SDK Setup或`tools\android`命令,选择需要的SDK版本和工具包下载安装。 - 配置Eclipse中的SDK路径:通过Eclipse的...

    DC6008_irda_manager驱动程序和APK_20150914_1424.7z

    3)将/frameworks/base/core/java/android/hardware/ IIrdaManager.aidl IrdaManager.java 四个文件复制到 /frameworks/base/core/java/android/hardware/中 4)在/frameworks/base目录,打开Android.mk文件,修改...

    Android常见知识点总结

    - **FrameLayout**:帧布局是Android中最简单的布局容器,所有添加的视图都会堆叠在一起,后添加的视图会覆盖前面的视图。 #### 3. Android中的动画分类及其特点和区别 - **Tween Animation(渐变动画)**:这种...

Global site tag (gtag.js) - Google Analytics