Android7.1编译SDK报错解决方法总结

问题点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/.jacksettingsHOME/.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="javaXX:MaxJavaStackTraceDepth=1Djava.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"];thengitupdateindexrefreshunmerged>/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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零意@

您的打赏将是我继续创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值