创建过程
首先创建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.aidl
package com.amy.ipc.c2_ipc.aidl;
/**
*注意包名
**/
import com.amy.ipc.c2_ipc.aidl.Book;
// Declare any non-default types here with import statements
interface 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转过来的同学们很容易混淆这个问题,本人水平有限,希望能给大家提供一些帮助