总会有让人喷血的事情勾起写博客的欲望,希望能坚持。
折腾了两天的是个小问题,就是标题上的Error executing aapt: Return code -1073741819。解决的方法也很简单参考1中所述,只是去掉项目styles.xml中的@+id项就好了。我在下面记录解决问题的悲惨过程。
1.出现问题
环境是win7系统下eclipse3.7(最新的android打包下载的SDK也类似)。项目比较繁杂,简单介绍下情况:由多个工程构成整个项目,其中主工程依赖于其他工程,而其他工程作为库(勾选了isLibrary)相互也有依赖。独立编译库工程或者加上依赖库编译都是没有问题。自己在此次折腾前,出现过一次R.java文件无法生成导致主工程无法编译,后来不知删了什么又奇怪的好了,就没在意,结果一次update让主工程再也没有能顺利编译通过。
2.查找原因
(1)工程编码格式
原来都能编译通过,那么问题应该出在变化的地方。我修改的工程原来是GBK编码的,而为了统一,后面修改为UTF-8编码,。会不会问题在这上面。先将项目改回GBK编码,能够发现R.java文件会重新生成,当然,主工程没有变化,问题依旧。为了确认确实完成了编码,可以通过工程属性查看,还可以到工程所在目录下的.setting文件夹中查看org.eclipse.core.resources.prefs文件,如果是UTF-8,会有如下:encoding/=UTF-8,而且单独某个文件会有encoding//src/XXX.java=UTF-8的记录;为了确认,故意将一文件中用两种编码方式都写了汉字,结果没有错误信息提示,放弃。但是要注意的是,如源文件编码格式不对,会直接编译不通过的。
(2)aapt
R.java文件是由aapt.exe产生的,查看下它的错误信息(编译环境里就是R文件没生成,没啥提示。默认的build output是slient的),于是windos->preferences–android-build,选择verbose,然后clean工程,在console中选择android查看编译过程,居然每次new resource id时出现类似 ‘aapt’ error. Pre Compiler Build aborted的错误,但是也没有失败的提示信息,而且开始出现了aapt已停止运行的对话框,提示你发送信息。在网上搜索了下,据说是当aapt打开-v开关(verbose模式下)会有这种问题。尝试的在停止的xml资源文件附近删除或者修改,问题依旧,再次放弃。但是换个思路,直接自己通过命令行尝试,而且在eclipse中已经给出了使用的命令。在命令行中问题依旧,也没有错误提示信息。
(3)资源冲突
期间发现了个strings.xml文件中资源冲突却没报错的问题,想着会不会是资源过多有冲突,还是直接溢出了。从网上说的貌似每种资源下都可以达到65536,没去细想。但是把资源文件往一处合了下,确实出现了命名冲突的资源。但是据网上查阅,和前期查看,主工程的R文件是每个工程下都会有一个,也就是说每一个工程都有一个包名,那么对应的会有一个R.java,那么即使两个工程的资源命名冲突了也会因为在不同的包中而不会造成冲突的。不死心的专门写了重名的资源,依然无果。
3.解决问题
有直接查看aapt源码的冲动,搜了下居然没有多少人分析,想起自己改adb限制的时候,觉得没错误提示找原因那是大海捞针呢。然后决定下载新环境重新编译。新环境的好处是给了好多Error executing aapt: Return code的提示,赶紧搜索,发现很多提示styles.xml文件下+id的影响,但是没当会事,因为如果真有问题,为什么之前都能编译通过呢?应该不会,没有在意。最后实在无法,才尝试下居然解决。当真的让人想不通。有时间了看看源码,而且真的有人都报过bug,难道一直没改?就像打开-v的aapt编译错误的问题,优先级太低了,不影响使用?不得而知了。
R.java文件还得从资源文件上找错误原因,别扯远,希望以后能找到问题到底出在哪里。。。
Error executing aapt: Return code -1073741819
最新推荐文章于 2024-05-09 00:12:25 发布