AIDL导包后,make时提示找不到PedometerChartBean
增加PedometerChartBean.java 和 PedometerChartBean.aidl 在 IPedometerService.aidl 文件中导包后make提示下面错误,只要一导包就报错,屏蔽掉就没有任何问题:

关于IPedometerService.aidl 跟PedometerService.java 不在同一个文件夹的的原因是:如果跟教程那样建立AIDL文件,make后不会生成java文件,我是通过下图方式建立AIDL文件的,建立后IDE会自动建立aidl文件夹和相应的包。

通过上面的方式建立AIDL文件后make会在生成如下文件,只有生成了下图文件才能在PedometerService.java中使用IPedometerService.Stub()类:

但是只要在IPedometerService.aidl文件中加入import com.imooc.beans.PedometerChartBean; 这条导包语句就无法make成功,重启IDE、Rebuild Project、从网站下载的源文件中复制代码过去都试过了,无法解决,实在没辙了。
PedometerChartBean.java 文件:
package com.imooc.beans;
import android.os.Parcel;
import android.os.Parcelable;
public class PedometerChartBean implements Parcelable {
private int[] arrayData = new int[1440];
private int index = 0;
protected PedometerChartBean(Parcel in) {
arrayData = in.createIntArray();
index = in.readInt();
}
public static final Creator<PedometerChartBean> CREATOR = new Creator<PedometerChartBean>() {
@Override
public PedometerChartBean createFromParcel(Parcel in) {
return new PedometerChartBean(in);
}
@Override
public PedometerChartBean[] newArray(int size) {
return new PedometerChartBean[size];
}
};
public int[] getArrayData() {
return arrayData;
}
public void setArrayData(int[] arrayData) {
this.arrayData = arrayData;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeIntArray(arrayData);
dest.writeInt(index);
}
}PedometerChartBean.aidl文件:
package com.imooc.beans; parcelable PedometerChartBean;
IPedometerService.aidl文件:
package com.imooc.service;
import com.imooc.beans.PedometerChartBean;
interface IPedometerService {
//turnOnStepCounting
void startCount();
//endStepCounting
void stopCount();
//resetStepCount
void resetCount();
//getStepCount
int getSetpsCount();
//getTheEnergyConsumed
double getCalorie();
//getDistance
double getDistance();
//saveData
void saveData();
//settingTheSensorSensitivity
void setSensitivity(double sensitivity);
//getSensorSensitivity
double getSensitivity();
//setTheSamplingInterval
void setInterval(int interval);
//getSampleTime
int getInterval();
//getStartTimestamp
long getStartTimeStamp();
//getServiceRunningStatus
int getServiceStatus();
//getSportsChartData
PedometerChartBean getChartData();
}正在回答
老师用你这三个文件测试是没有问题的。可以make成功。你再看一下文件夹路径什么的有没有问题。或者你测试一下老师的源文件,是不是能make成功。祝:学习愉快
终于把AIDL搞定了,学了AIDL以来遇到的问题有好几个,我写了一篇文章作为总结:
https://blog.csdn.net/weixin_38858037/article/details/103923079
- 参与学习 人
- 提交作业 116 份
- 解答问题 1012 个
本阶段是提升项目经验的必备,除Android开发的高级控件,还有Android官方大力推荐的开发语言Kotlin,未来Android发展的方向,最后使用Kotlin来开发热门电商项目。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星