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 星