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 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 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文件:
1 2 | package com.imooc.beans; parcelable PedometerChartBean; |
IPedometerService.aidl文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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积分~
来为老师/同学的回答评分吧