MTK5658方案,SETTING_VERSION: unbound variable

一、问题

MTK5658方案,源码下载后,第一次编译报错停止,不要make clean,直接再编译一次却可以正常编译。

就是说新下载的代码第一次会报错,之后就不会了。

编译错误,有如下信息

out/host/linux-x86/bin/jack: line 66: SETTING_VERSION: unbound variable

Writing client settings in /home/kangde/.jack-settings
No Jack server running. Try 'jack-admin start-server'

1 error during configuration. Try --help-properties for help.
#######################################################
Build: Android_Body Fail                     [X]
                                encoder->protected_->state = FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
      fprintf(stderr, "Error allocating temporary storage for tim sort: need %lu bytes", sizeof(SORT_TYPE) * new_size);
          PROMPT_NONE, PR_FATAL },
          PROMPT_NONE, PR_FATAL },
          PROMPT_NONE, PR_FATAL },          
           PROMPT_NONE, PR_FATAL },
          PROMPT_NONE, PR_FATAL },
          PROMPT_NONE, PR_FATAL },
          PROMPT_NONE, PR_FATAL },
          PROMPT_NONE, PR_FATAL },
make[1]: *** [ninja_wrapper] Error 1
  CHK   LOG
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file


二、修改

1、一开始以为SETTING_VERSION没设置导致的错误,调试过后,觉得应该是jack server没有正常启动导致的。

vi prebuilts/sdk/tools/jack-admin
把
SERVERS_PID=$(ps -A -o "pid args" -u `id -u -n` | grep $LAUNCHER_NAME| grep -v grep | awk '{print $1}')

改为
SERVERS_PID=$(ps -A -o "pid args" -u `id -u -n` | grep $LAUNCHER_NAME |grep $JACK_HOME| grep -v grep | awk '{print $1}')

|grep $JACK_HOME 加这句话的话,jack-admin kill-server只杀死自己的启动的jack server,不加的话,会去杀死其他用户的jack server,当然,没有权限杀死,只是不会报错退出而已。

clean掉代码,或者新下载的代码,第一次编译还是会报错。


2、接着查看log报错的提示,总是一个模块最先报错,这个模块是编译jar包的模块,这个jar包编译自定义的framework资源。

在该模块Android.mk改动,如下

LOCAL_REQUIRED_MODULES := \
    framework \

再编译,可以了。


三、注意

1、另外Android.mk加依赖规则,用add-dependency这个好像无效

$(call add-dependency(modules_a,modules_b))

改为下面才成功。

LOCAL_REQUIRED_MODULES := \
    framework \

2、关于LOCAL_NO_STANDARD_LIBRARIES := true

系统根据Android.mk编译jar包,默认会自动找需要的系统jar包,而自定义的jar包用LOCAL_JAVA_LIBRARIES指明。

如果设置LOCAL_NO_STANDARD_LIBRARIES := true的话,就要手动写依赖的jar包了。无论是系统的还是用户自己的。


以上只是经验,仅供参考。

猜你喜欢

转载自www.cnblogs.com/DaSunWarman/p/9024302.html