在android编译的过程中可能出现各种奇怪的问题,所以特开一篇文章来汇总下在编译过程中出现的问题,之后出现的问题也会在此文章中追加。如果有大佬在编译过程中出现问题想要投稿的,请联系752134268,众人拾柴火焰高,让我们一起帮助在编译过程中遇到问题的战友。
一、编译时出现java.io.FileNotFoundException: .x509.pem
Exception in thread "main" java.io.FileNotFoundException: .x509.pem (没有那个文件或目录)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at com.android.verity.Utils.loadPEMCertificate(Utils.java:214)
at com.android.verity.BootSignature.doSignature(BootSignature.java:241)
at com.android.verity.BootSignature.main(BootSignature.java:316)
[ 31% 19604/62002] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/android-support-v7-appcompat_intermediates/classes.jack
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] 错误 1
先上结论:这种错误是自己在修改源码过程中修改了build/core/product.mk文件所致。
排查思路:(首先源码要有代码管理工具,方便追溯修改的内容)
1、通过git status 查看修改记录,获取到的结果如下
2、通过git diff 查看文件都做了哪些变动
3、最终排查下来是build/core/product.mk这个文件中误删了上面红框内容,然后使用git checkout -- build/core/product.mk 来丢弃工作区的修改。
4、然后make clean,再make 发现编译通过了。
最终总结,在修改源码的过程中,使用vim 不太熟练的情况很容易误删代码,有时候修改的过程中,空格、回车都有可能导致编译失败。 所以在修改源码的过程中,一定要慎重、慎重、再慎重,实在不放心就先用git diff 检查以下变动的内容。
加油,只要思想不滑坡,方法总比困难多。