最近由于项目需要编译Android5.0源码(以前编译4.x代码也出现过类似问题),按照source.android.com的指示下载编译过程挺顺利的。但编译到一个小时左右的时候老是出现Invalid policyvers specified: 26,这个错误跟Android系统的安全访问策略有关系。以前重装系统就能搞定,现在重装系统好多次,都搞不定。网上很多同学碰到这个问题,都解决不了,感觉好苦恼。在经过几天的努力之后,最终在这个周末把这个问题解决了。为了使其它碰到类似问题的同学不再苦恼,不再浪费宝贵的时间,现将解决方案陈述如下:
1.定位错误:
在编译出现错误的时候我们要做的第一件事情就是定位编译出错源码位置。但是有时候错误位置提示不明显,如此多的源码,到哪里去找到出错的位置呢。于是使用
grep -r "Invalid policyvers specified" ./
在源码目录进行内容查找,找了一晚上终于在external//checkpolicy//checkpolicy.c文件中找到。打开该文件,在main函数的switch 语句的case ‘c’代码块中找到了错误提示行。接着发现是先调用了strtol函数,然后错误了,这样就定位到错误位置了。