在AndroidStudio中创建aidl文件

来源:互联网 发布:redis数据库设计 编辑:程序博客网 时间:2024/06/01 21:42

创建过程


首先创建Java文件 Book.java,

package com.amy.ipc.c2_ipc.aidl;import android.os.Parcel;import android.os.Parcelable;/** * Created by Administrator on 2016/5/19. */public class Book implements Parcelable{    public int bookId;    public String bookName;    protected Book(Parcel in) {        bookId = in.readInt();        bookName = in.readString();    }    public static final Creator<Book> CREATOR = new Creator<Book>() {        @Override        public Book createFromParcel(Parcel in) {            return new Book(in);        }        @Override        public Book[] newArray(int size) {            return new Book[size];        }    };    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeInt(bookId);        dest.writeString(bookName);    }}

由于我的Book.java文件是创建在对应的aidl包中的,如下图

这里写图片描述

所以必须要在创建adil文件时,也要把相对应的aidl文件创建在相应的包中

这里写图片描述

对应的包的位置如下

这里写图片描述

创建Book.aidl文件 用来声明 Book类

/***注意包名*/package com.amy.ipc.c2_ipc.aidl;parcelable Book;

创建 IBookManager.aidl 定义接口
虽然在同一个包内,但是依然要声明book类,这是aidl的特殊之处

// IBookManager.aidlpackage com.amy.ipc.c2_ipc.aidl;/***注意包名**/import com.amy.ipc.c2_ipc.aidl.Book;// Declare any non-default types here with import statementsinterface IBookManager {    /**     * Demonstrates some basic types that you can use as parameters     * and return values in AIDL.     */    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,            double aDouble, String aString);            List<Book> getBookList();            void addBook(in Book book);}

最后makeproject编译生成了对应的java文件,在build\generate文件夹下,

注意,上面的步骤是要严格执行的,每个步骤出错都会有不同的问题出现。

不明白为什么android studio要在与java文件夹平行创建aidl文件夹,从eclipse转过来的同学们很容易混淆这个问题,本人水平有限,希望能给大家提供一些帮助

0 0