在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 检查以下变动的内容。
错误二、出现以下错误
You asked for an OpenJDK based build but your version is
java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode).
原因是编译时要安装 openjdk而不是jdk
解决方法:
1、下载安装openjdk
sudo apt-get install openjdk-8-jdk
2、环境变量设置
sudo vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
sudo vim /etc/profile
#set Java environment
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
3、source /etc/environment /etc/profile
错误二 解决方案参考博客https://blog.youkuaiyun.com/yang_quan_yang/article/details/80340814
加油,只要思想不滑坡,方法总比困难多。