问题点1:
ninja: error: ‘out/target/common/obj/APPS/ActSensorCalib_intermediates/with-local/classes.dex’, needed by ‘out/target/common/obj/APPS/ActSensorCalib_intermediates/classes.dex’,
missing and no known rule to make it
make[1]: *** [ninja_wrapper] Error 1
解决方法:
修改vim $HOME/.jack-server/config.properties 中的端口号,方才有效,可以在别的用户启动了jack server的情况再启动另一个jack server,这样就可以实现多用户同时编译,亲测有效:
#Tue Sep 13 17:44:41 CST 2016
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=8076
jack.server.max-service.by-mem=1=2147483648:2=3221225472:3=4294967296
jack.server.admin.port=8077
jack.server.config.version=2
jack.server.time-out=7200 (修改上面红色这2行,比如改为8086,8087等)
总结一下解决方案就是:
同时修改
H
O
M
E
/
.
j
a
c
k
−
s
e
t
t
i
n
g
s
和
HOME/.jack-settings和
HOME/.jack−settings和HOME/.jack-server/config.properties中的端口号(比如都改为8086/8087),方可支持多用户同时编译。
vim $HOME/.jack-settings //修改一下端口号
vim $HOME/.jack-server/config.properties //修改一下端口号
目前可以先用这个方法解决问题,后面看google是否会对JACK做优化。有任何问题,请大家拍砖!
问题点 2:
ninja: build stopped: subcommand failed.
解决方法:
$ vi prebuilts/sdk/tools/jack-admin
1.找到如下语句:
JACK_SERVER_COMMAND=“java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR
L
A
U
N
C
H
E
R
N
A
M
E
"
2.
将上述语句修改为:
J
A
C
K
S
E
R
V
E
R
C
O
M
M
A
N
D
=
"
j
a
v
a
−
X
X
:
M
a
x
J
a
v
a
S
t
a
c
k
T
r
a
c
e
D
e
p
t
h
=
−
1
−
D
j
a
v
a
.
i
o
.
t
m
p
d
i
r
=
LAUNCHER_NAME" 2.将上述语句修改为: JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=
LAUNCHERNAME"2.将上述语句修改为:JACKSERVERCOMMAND="java−XX:MaxJavaStackTraceDepth=−1−Djava.io.tmpdir=TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME”
主要是添加了-Xmx4096m参数,接下来在源码目录下执行如下命令重启jack-admin服务:
$ ./prebuilts/sdk/tools/jack-admin stop-server
$ ./prebuilts/sdk/tools/jack-admin start-server
问题点3:
编译报错:
[ 0% 43/19107] build out/target/product/angler/gen/EXECUTABLES/iw_intermediates/version.c
FAILED: /bin/bash -c “external/iw/version.sh out/target/product/angler/gen/EXECUTABLES/iw_intermediates/version.c”
fatal: 没有发现名称,无法描述任何东西。
[ 0% 43/19107] target C++: libart <= art/runtime/interpreter/interpreter_switch_impl.cc
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] 错误 1
make failed to build some targets (39 seconds)
解决方法:
vi打开以下文件:
vi external/iw/version.sh
可以看到如下内容(加粗部分):
#!/bin/sh
VERSION=“4.1”
OUT=“$1”
if [ -d .git ] && head=git rev-parse --verify HEAD 2>/dev/null
; then
git update-index --refresh --unmerged > /dev/null
descr=$(git describe --match=v*)
#on git builds check that the version number above
#is correct…
[ “KaTeX parse error: Expected '}', got 'EOF' at end of input: …escr%%-*}" = "vVERSION” ] || exit 2
v=“KaTeX parse error: Expected '}', got '#' at position 7: {descr#̲v}" if git diff…v”-dirty
fi
else
v=“$VERSION”
fi
echo ‘#include “iw.h”’ > “KaTeX parse error: Expected group as argument to '\"' at end of input: …_version[] = \"v”;" >> “$OUT”
为了让这个脚本不走[ -d .git ]分支改成如下:
#!/bin/sh
VERSION=“4.1”
OUT=“$1”
#if [ -d .git ] && head=git rev-parse --verify HEAD 2>/dev/null
; then
if [ -d .git ] && head=git rev-parse --verify HEAD 2>/dev/null
&& [
V
E
R
S
I
O
N
!
=
"
4.1
"
]
;
t
h
e
n
g
i
t
u
p
d
a
t
e
−
i
n
d
e
x
−
−
r
e
f
r
e
s
h
−
−
u
n
m
e
r
g
e
d
>
/
d
e
v
/
n
u
l
l
d
e
s
c
r
=
VERSION != "4.1"]; then git update-index --refresh --unmerged > /dev/null descr=
VERSION!="4.1"];thengitupdate−index−−refresh−−unmerged>/dev/nulldescr=(git describe --match=v*)
#on git builds check that the version number above
#is correct…
[ “KaTeX parse error: Expected '}', got 'EOF' at end of input: …escr%%-*}" = "vVERSION” ] || exit 2
v=“KaTeX parse error: Expected '}', got '#' at position 7: {descr#̲v}" if git diff…v”-dirty
fi
else
v=“$VERSION”
fi
echo ‘#include “iw.h”’ > “KaTeX parse error: Expected group as argument to '\"' at end of input: …_version[] = \"v”;" >> “$OUT”
即主要就是把if [ -d .git ] && head=git rev-parse --verify HEAD 2>/dev/null; then注释掉,改成以下:
if [ -d .git ] && head=git rev-parse --verify HEAD 2>/dev/null && [VERSION!="4.1"];then
问题点4:
编译报错:
Starting build with ninja
ninja: Entering directory .' [ 0% 108/50882] Lex: aidl <= system/tools/aidl/aidl_language_l.ll FAILED: /bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_l.cpp system/tools/aidl/aidl_language_l.ll" flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion
cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’ failed.
解决办法:
在执行编译前执行以下语句:
export LC_ALL=C