【安卓学习之常见问题】 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾

时间:2024-03-17 21:01:25

█ 【安卓学习之常见问题】 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾

█ 相关文章:

- 
 ● 【安卓学习之第三方库】库的使用2-jar类库的使用(以dom4j为例)和升级(以极光推送为例)

█ 读前说明:

- 
 ● 本文通过学习别人写demo,学习一些课件,参考一些博客,’学习相关知识,如果涉及侵权请告知
 ● 本文只简单罗列相关的代码实现过程
 ● 涉及到的逻辑以及说明也只是简单介绍,主要当做笔记,了解过程而已

█ 我的问题:

- 
 ● 商米收银机要集成钱箱功能,根据官方文档,有两种方式:(这里将采用第一种方式)

关于商米设备操作钱箱
商米部分设备如T1可以连接外部钱箱,App可以通过以下两种方式打开钱箱。
一、通过AIDL文件中封装的方法打开钱箱。(调用IWoyouService.aidl方法)
二、通过指令打开钱箱。(向服务发送ES/POS指令)

【安卓学习之常见问题】 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾
 ● 在studio的工程目录下app/src/main/下创建一个aidl文件夹,并将IWoyouService.aidl、ICallback.aidl文件拷贝进去,如下图:
 【安卓学习之常见问题】 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾
 
 ● 重新编译一下,报错:

E:\xxxx\xxxx\xxxx\app\build\generated\aidl_source_output_dir\debug\compileDebugAidl\out\woyou\aidlservice\jiuiv5\IWoyouService.java:332: 错误: 不是语句
r
^
E:\xxxx\xxxx\xxxx\app\build\generated\aidl_source_output_dir\debug\compileDebugAidl\out\woyou\aidlservice\jiuiv5\IWoyouService.java:332: 错误: 解析时已到达文件结尾
r
^
E:\xxxx\xxxx\xxxx\app\build\generated\aidl_source_output_dir\debug\compileDebugAidl\out\woyou\aidlservice\jiuiv5\IWoyouService.java:333: 错误: 解析时已到达文件结尾
3 个错误
Task :app:compileDebugJavaWithJavac FAILED

【安卓学习之常见问题】 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾
 ● 打开报错的app\build…下的 IWoyouService.java文件:(格式全乱了)
【安卓学习之常见问题】 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾

█ 百度:

- 
 ● 不懂只能百度了,大概意思是:

aidl编译后无足够的内存缓存,进而导致所生成的java文件都不完整,解决办法如下:
● 在gradle.properties文件中将org.gradle.jvmargs值提高;
修改前:org.gradle.jvmargs=-Xmx1536m;
修改后:org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8;

【安卓学习之常见问题】 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾
 ● 不要以为上面这样处理,就百分比ok,有时候还是会继续出错:
 
 ● 将两个aidl文件的中文注释即可:
 
 ● 但是有时候你会奇怪的发现,将中文又加上去,又可以正常编译了(去掉注释后,直接按ctrl +z后退)。不知道是什么原因。可能是中文注释兼容性不好吧。

█ 总结:

- 
 ● AIDL是什么

AIDL,Android Interface definition language的缩写,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。
在Android系统中有很多像WifiManager、BluetoothManager等Manager的管理类,只要有xxxManager.java,就会有Ixxx.aidl,aidl类就是实现Manager和Service通信的桥梁。整个流程大致就是:Manage类通过aidl类通知WifiService、BluetoothiService等这些系统服务去操作wifi、蓝牙等设备。

● 使用AIDL时,最好可以将中文注释去掉,并适当提高编译内存。

█ 相关资料:

- 
 ● 1.2017-10-26 20:15:24 AndroidStudio 引用 aidl 文件的两种方法_gdutxiaoxu的博客(微信公众号 stormjun94)-CSDN博客_android studio aidl无法引入
 ● 2.2019-12-05 22:57:36 Android Studio 引用AIDL编译时报错,错误: 解析时已到达文件结尾_null-CSDN博客_android studio aidl解析时已到达文件结尾
 ● 3. 2019-03-22 18:31:46 引入aidl文件并调用_a1003434346的博客-CSDN博客_aidl文件
 ● 4.2017-05-09 19:21:37 android 连接商米POSV1内置打印机_MorganYang的专栏-CSDN博客_商米v2pro
 ● 5.2016-07-23 17:32:56 AIDL在android系统中的作用_huhuayouxu的专栏-CSDN博客_android aidl用途
 ● 6.2017-07-07 10:12:10 Android的Application中onCreate执行多次解决方案 - 简书

转载请注明出处:
https://blog.csdn.net/ljb568838953/article/details/107928497