标题:
基于SnapDragonBoard410c源码编译问题
[打印本页]
作者:
look_w
时间:
2018-1-24 18:53
标题:
基于SnapDragonBoard410c源码编译问题
当我们从高通的网站上面拉取最新的410c代码时我们可能会遇到以下几种问题我总结了下分为以下集中问题主要的问题是由于ubuntu 系统和内存导致,代码无法通过编译。
一.clang: error: linker command failed with exit code
解决方法一般是将art/build/Android.common_build.mk文件ifneq ($(WITHOUT_HOST_CLANG),true)改为ifeq ($(WITHOUT_HOST_CLANG),false)
1
二.编译L时回报错:recipe commences before first targe
gnu make 3.8.1是为android编译修改过或者是优化过的, 所以新版本的ubuntu上用的是更高版本的gnu make , 所以导致在编译时出问题。
1
三.出现AssertionError错误
解决办法如下:
export JACK_JAR=./out/host/linux-x86/framework/jack.jar./out/host/linux/x86/bin/jack-admin stop-server./out/host/linux/x86/bin/jack-admin start-server
1
2
3
4
5
四.针对android 选择user版本进行编译的时候,会出现proguard错误,我们需要知道的事情
1.proguard是做什么的,他的作用是将java代码进行混淆的工具
2.因为proguard是混淆工具,所以android的mk文件也对其支持为两种方式:
1.指定不需要混淆的native方法与变量的proguard.flags文件
如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags
2.制定编译的工程,不要使用代码混淆的工具进行代码混淆
如:LOCAL_PROGUARD_ENABLED := disabled
3.不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被produard优化掉了。所以,在JNI应用中该慎用progurad啊。
解决办法:
1、在Android.mk中加入一行:
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
2、创建proguard.flag文件,里面写入不需要proguard优化的类和方法。例如:
-keep class oms.miracle.mobiletv.broadcast.ServiceContext {
*;
}
五.frameworks/policies/base/PolicyConfig.mk:22:
*
No module defined for the given PRODUCT_POLICY (android.policy_phone). Stop.
在build/tools/findleaves.sh中的第89行, 这一句find "${@:0
nargs}" $findargs -type f -name "$filename" -print | 改为find "${@:1
nargs-1}" $findargs -type f -name "$filename" -print |
1
2
3
4
5
六..frameworks/base/tools/aidl/AST.cpp:10: error: ‘fprintf’ was not declared in this scope的错误
下载gcc-4.3和g++-4.3 apt-get install gcc-4.3 g++-4.3 因为ubuntu 9.10自带到是gcc 4.4,因此需要重新下载gcc 4.3,最后设置gcc软连接到gcc 4.3 进入/usr/bin cd /usr/bin 建个软连接 ln -s gcc-4.3 gcc ln -s g++-4.3 g++ 然后进入android目录下,执行make,就可以了。 主线代码则没有此问题 7.在模拟器上运行编译好的android 编译好android之后,emulator在~/android/out/host/linux-x86/bin 下,ramdisk.img,system.img和userdata.img则在~/android/out/target/product /generic下$ cd ~/android/out/host/linux-x86/bin增加环境变量$ emacs ~/.bashrc在.bashrc中新增环境变量,如下#java 程序开发/运行的一些环境变量export ANDROID_PRODUCT_OUT=~/android/out/target/product/g enericANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x 86/binexport PATH=${PATH}
{ANDROID_PRODUCT_OUT_BIN}
{ANDROID_ PRODUCT_OUT};最后,同步这些变化:$ source ~/.bashrc$ cd ~/android/out/target/product/generic $ emulator -system system.img -data userdata.img -ramdisk ramdisk.img
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0