用AS很久了,也积累了很多使用经验。其中一条就是不要轻易升级最新版本,即便是稳定版!!!不然指不定整出什么幺蛾子来……

但是用3.5也推送了好多天,估摸着差不多该升级了……

所以今天把AS3.4升3.5了……

然后,果不其然,又出问题了:
[AS]AS 3.5 报错:解析时已到达文件结尾 - 图1

编译详情:

  1. > Task :FactoryTest:compileDebugJavaWithJavac FAILED
  2. D:\Workspace\AS3\EmdoorApps\FactoryTest\build\generated\aidl_source_output_dir\debug\compileDebugAidl\out\com\emdoor\mesclient\FactoryMesClient.java:98: 错误: 解析时已到达文件结尾
  3. return super.onTransact(code, data, re
  4. ^
  5. D:\Workspace\AS3\EmdoorApps\FactoryTest\build\generated\aidl_source_output_dir\debug\compileDebugAidl\out\com\emdoor\mesclient\FactoryMesClient.java:99: 错误: 解析时已到达文件结尾
  6. 2 个错误
  7. FAILURE: Build failed with an exception.

打开这个文件检查吧,和之前一模一样,但就是build不过,怎么办?

  1. // FactoryMesClient.aidl
  2. package com.emdoor.mesclient;
  3. import com.emdoor.mesclient.ResultListener;
  4. interface FactoryMesClient {
  5. //设置测试工站
  6. void setStation(String station);
  7. //上传log文件
  8. void uploadTestLog(String file, ResultListener listener);
  9. //上传测试结果
  10. void reportTestResult(boolean pass, String resultCode, ResultListener listener);
  11. //请求数据
  12. void requestBindingData(ResultListener listener);
  13. //请求状态
  14. void requestTestStatus(ResultListener listener);
  15. }

解决方法:

很简单,把注释信息都删掉就OK了。

这里,个人觉得注释信息问题,导致AIDL文件解析异常,但是具体是编码、换行符、空白符、转义字符,还是其它问题,就没有去研究了。

比如,Makefile里面,一行最后面如果是“ \”,那么在解析的时候,它后面的一行也会自动合并到当前行。

  1. LOCAL_AAPT_FLAGS := \
  2. --auto-add-overlay \
  3. --extra-packages com.android.contacts.common \
  4. --extra-packages com.android.phone.common \
  5. --extra-packages android.support.design \
  6. --extra-packages android.support.transition \
  7. --extra-packages android.support.v7.appcompat \
  8. --extra-packages android.support.v7.cardview \
  9. --extra-packages android.support.v7.recyclerview

[AS]AS 3.5 报错:解析时已到达文件结尾 - 图2

本文经「原本」原创认证,作者Shawn.XiaFei,访问yuanben.io查询【2ET0ZDB3】获取授权信息。