Android 源码编译aapt 中 clang error: no input files 等错误解决方法

    最近在修改编译安卓源码中aapt工具,在编译过程中编译各个平台的执行文件遇到各种问题各种坑,真的是踏着坑一步一步走过来的。下面把遇到的坑的解决方法分享出来,算作一个记录吧。

    1、编译环境

    2)虚拟机的ubuntu14.04-64bit

    2)虚拟机的MAC  X os 10.10-64bit

    

    2、ubuntu编译遇到的问题

       1)开始的时候在移动硬盘上进行编译,结果提示各种文件没有执行权限,使用手动挂载移动硬盘为rw也不能解决(现在看来其实根本原因是移动硬盘的NTFS分区对大小写不敏感导致源码解压后不完整)

        2)尝试移动硬盘编译无果后,挂载了一块虚拟硬盘用于编译,这次使用过zip源码文件解压到虚拟硬盘,最终成功编译

    总结:编译过程可以按照http://source.android.com/source/initializing.html设置即可比较简单,编译过程中需要下载或者解压源码到linux格式的硬盘分区上才能正常编译(注:windows版本的aapt也需要在ubuntu上打出)


   3、mac编译遇到的问题

    1)开始时在虚拟机上安装了各种环境,包括卡的要死的mac系统,完整版本的xcode包,在硬盘创建大小写敏感的分区等等操作,都完成后编译源码一直报 clang error:no input files 错误

    2)在google 了N久没有找到解决方法,折腾2周后偶然间的一篇文章让我找到了问题所在,下面是问题原因:

    由于源码是经过移动硬盘拷贝到mac系统的,由于移动硬盘的NTFS分区大小写不敏感导致源码不完整,在mac系统编译时一直就会导致库不能正常编译的问题,解决灵感来自http://www.judymax.com/archives/1087,非常感谢!


至此 其中困扰我最久的坑终于在偶然间的到解决,解决完之后真的是一身轻松的感觉,之前2周一直被问题困扰,浪费很多时间而没有解决。


PS:顺便吐槽一句AOSP项目,你说你写代码非要在同一目录下写2个同名不同大小写的源码是几个意思,太诡异的命名规范,要是同一命名不允许存在这样的重名,那么随便在哪不都可以编译了。


   


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。