问题一:make: *** [ninja_wrapper] Error 1
此问题判断为jackserver服务未运行
log记录如下:
Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx8192m -cp /home/doit/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher
Jack server failed to (re)start, try 'jack-diagnose' or see Jack server log
SSL error when connecting to the Jack server. Try 'jack-diagnose'
SSL error when connecting to the Jack server. Try 'jack-diagnose'
[ 5% 2114/36097] target thumb C++: li...2 <= external/skia/src/core/SkDraw.cpp
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
解决方法
第一步:
如果使用虚拟机中安装docker的方式编译,请从第一部分开始,如果使用虚拟机直接编译,或者使用linux主机,请跳过第一部分,直接执行第二部分。
第一部分 重新安装docker镜像及创建容器
按docker手册加载镜像,注意第二章按以下执行。
创建目录:
mkdir -p /home/forlinx/OK3399-android
cd /home/forlinx/OK3399-android
将docker_image.tar.bz2复制到/home/forlinx/OK3399-android目录下
验证压缩包完整性,与 docker_image.tar.bz2-md5sum.txt 对比,命令如下
md5sum docker_image.tar.bz2
释放压缩包
tar xvf docker_image.tar.bz2
加载镜像
docker load -i ok3399_android_16.04.tar.bz2
查看加载的镜像 id 和名字
docker images ls -a
结果如下
ok3399_android_16.04 latest 7af3f17d08e6 2 months ago 1.07GB
创建并运行容器
docker run -it --name test_ubuntu --privileged=true --cap-add=SYS_ADMIN -v /home/forlinx/OK3399-android:/home/forlinx/OK3399-android -p 10022:22 7af3f17d08e6 bin/bash
创建并进入容器之后切换到forlinx用户
su forlinx
forlinx用户密码为forlinx
注意源码的解压要在第一部分完成后进行,不然在编译的时候会有权限问题。
第二部分释放源码及修改配置代码
将用户资料中的源码压缩包全复制到linux系统中(如果使用docker容器需要放在映射文件夹下)。
使用7za x OK3399-android7-source.7z.001 -r -o./ -y命令解压源码
进入源码目录,顺序执行下面命令
cd prebuilts/sdk/tools/
sudo ./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar
sudo chown forlinx:forlinx -R /home/forlinx
vi prebuilts/sdk/tools/jack-admin
在android/prebuilts/sdk/tools/目录下找到jack-admin,打开该文件
JACK_HOME=“KaTeX parse error: Expected '}', got 'EOF' at end of input: {JACK_HOME:=HOME/.jack-server}”
CLIENT_SETTING=“KaTeX parse error: Expected '}', got 'EOF' at end of input: …LIENT_SETTING:=HOME/.jack-settings}”
TMPDIR=
T
M
P
D
I
R
:
=
/
t
m
p
J
A
C
K
S
E
R
V
E
R
V
M
A
R
G
U
M
E
N
T
S
=
"
{TMPDIR:=/tmp} JACK_SERVER_VM_ARGUMENTS="
TMPDIR:=/tmpJACKSERVERVMARGUMENTS="{JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx3g}" 黄色部分为新添加的内容,注意前面要有空格。
JACK_EXTRA_CURL_OPTIONS=${JACK_EXTRA_CURL_OPTIONS:=}
start-server)
if [ ! -d “$JACK_HOME” ]; then
echo “Jack server installation not found” >&2
abort
fi
如果是使用的19年的资料,还需要进行如下修改。其他版本资料不需要。
isServerRunning
RUNNING=
?
i
f
[
"
? if [ "
?if["RUNNING" = 0 ]; then
echo “Server is already running”
else
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx3g -cp $LAUNCHER_JAR $LAUNCHER_NAME"找到如上代码部分,添加红色内容,注意前后都有空格。
修改完成后保存退出并退回到源码根目录。执行如下
prebuilts/sdk/tools/jack-admin stop-server 2>&1 > /dev/null
prebuilts/sdk/tools/jack-admin cleanup-server 2>&1 > /dev/null
prebuilts/sdk/tools/jack-admin start-server 2>&1 > /dev/null
完成之后按照软件手册进行编译即可。
第二步
在如下文件中修改
/etc/java-8-openjdk/security/java.security
找到jdk.tls.disabledAlgorithms,删除TLSv1, TLSv1.1,然后执行如下命令重启jack-admin。
cd /prebuilts/sdk/tools/
./jack-admin kill-server
./jack-admin start-server
第三步
为保险起见,将虚拟机内存设为8G。
问题二 /bin/bash: xmllint: 未找到命令
log记录
/bin/bash: xmllint: 未找到命令
[ 7% 1503/20872] Building with Jack: out/target/common/obj/JAVA_L...ES/android-support-compat-jellybean-mr2_intermediates/classes.jack
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
解决方法
安装如下工具即可
sudo apt-get install libxml2-utils
问题三 缺少gcc-multilib
问题log没有记录,但判定为缺少工具,安装如下工具即可
sudo apt-get install gcc-multilib