首页板块列表刷机技术阅读帖子
编译错误解决方法
发布时间:2015-05-19 18:153回复、2072阅读
前言:关于Android4.4/CM11编译中遇到的一些错误,本人进行了整理。有需要的童鞋可以做个参考,如果有什么建议也欢迎指出!
问题1:
编译时遇到:make: *** 没有规则可以创建“/home/xxx/cm11/out/target/common/obj/JAVA_LIBRARIES/webviewchromium_intermediates/classes-full-debug.jar”需要的目标“/home/xxx/cm11/out/target/common/obj/JAVA_LIBRARIES/android_webview_java_intermediates/javalib.jar”。 停止。 make: *** 正在等待未完成的任务.... ...
解决方法:
删除device配置文件下BoardConfig.mk中的PRODUCT_PREBUILT_WEBVIEWCHROMIUM := yes这段代码!
问题2:
华为的机子编译可能遇到:frameworks/opt/telephony/../../../device/huawei/c8815/ril/HuaweiQualcommRIL.java:140: 错误: 找不到符号 case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; ^ 符号: 变量 RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION 位置: 类 HuaweiQualcommRIL.java target Dex: CMFileManager 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 1 个错误 make: *** [/home/jere0035/work/out/target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates/classes-full-debug.jar] 错误 41 make: *** 正在等待未完成的任务....
解决方法:
修改140行(不一定在140行,根据错误报告找到函数) 140(原来的) case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION: ret = responseInts(p); break; 140(修改后) case RIL_REQUEST_ENTER_DEPERSONALIZATION_CODE: ret = responseInts(p); break; 其实就是把这一句代码NETWORK_DEPERSONALIZATION改为DEPERSONALIZATION_CODE
问题3: 遇到recovery源码问题,我是尝试修改recovery源码,我是把cm11自带的源码改为twrp的源码,但是twrp源码要添加分辨率等设置到device下的BoradConfig.mk
因为编译TWRP多了很多需要手动设置硬件方面的配置参数,没有默认设置的,所以我们需要写入这些 # Platform TARGET_CPU_ABI := armeabi-v7a TARGET_CPU_ABI2 := armeabi TARGET_ARCH_VARIANT := armv7-a-neon ARCH_ARM_HAVE_TLS_REGISTER := true ARCH_ARM_HAVE_NEON :=true ARCH_ARM_HAVE_VFP := true 由于C8815使用的是EXT4分区所以我们还要写入 TARGET_USERIMAGES_USE_EXT4 := true BOARD_USES_MMCUTILS := true BOARD_HAS_LARGE_FILESYSTEM := true 我们设置没有select按钮 BOARD_HAS_NO_SELECT_BUTTON := true 分辨率 480*800 DEVICE_RESOLUTION := 480×800 没有misc分区
BOARD_HAS_NO_MISC_PARTITION := true
问题4: 自编译内核需要在BoardcConfig.mk添加内核目录以及config 例如:# Kernel TARGET_KERNEL_SOURCE := kernel/zte/msm7x27a(解释:这一句是定义到你放内核的目录下) TARGET_KERNEL_CONFIG := cyanogen_atlas40_defconfig(解释:这一句是定义到你放内核的目录下Config的名称)
问题5: 遇到编译twrp刷入画面跳屏幕的情况 解决方法: 修改recovery/minui/graphics.c,注释掉 if (double_buffering) gr_active_fb = (gr_active_fb + 1) & 1; 这一段代码,重新编译便可以了
问题6: 有时候遇到recovery不读内存卡的话 解决方法: 这个原因多数是recovery.fstab的问题,cm11对recovery.fstab进行重新写法定义,有时候需要修改recovery.fstab的写法或者修改源码bulid部分(可以参考cm10.1或者以前的版本)
问题7: 编译rom刷入后遇到“set_metadata_xxx fails” 解决方法: 在源码/bootable/recovery/updater/install.c找到parsed.has_capabilities = true修改为parsed.has_capabilities = false,编译出来的ROM就可以在旧版recovery刷入,其实就是update-binary导致。也可以手动找到合适的update-binary直接替换到rom中!
问题8: Android编译源码时禁用werror避免报错 解决方法1: 修改源码目录下的 build/core/config.mk 如下: - TARGET_ERROR_FLAGS := -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point + #TARGET_ERROR_FLAGS := -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point + TARGET_ERROR_FLAGS := 解决方法2: 如果是单个模块中的错误就找到报错模块下的Android.mk,把编译标志 Werror去掉就可以。方便起见,我是直接把所有的makefile中的Werror全部去掉了,当然要做好备份。 在Android.mk中添加标志禁用指定的Werror类型也可以: LOCAL_CFLAGS += -Wno-error=format-security
问题9: 编译遇到webviewclassic错误,无法创建,错误41 解决方法: 找到frameworks/base/core/java/android/webkit下的WebViewClassic.java注视掉1366和1372的head和Allow using Classic WebView一段!
问题10: 遇到无法创建out/target/product/xxx/boot.img需要的目标out/target/product/xxx/kernel 解决方法: 查看内核存放的位置与boardconfig.mk定义的位置是否相同
问题11: 遇到如下错误 Traceback (most recent call last): File "../../base/android/jni_generator/jni_generator.py", line 1065, in sys.exit(main(sys.argv)) File "../../base/android/jni_generator/jni_generator.py", line 1061, in main options.optimize_generation) File "../../base/android/jni_generator/jni_generator.py", line 996, in GenerateJNIHeader jni_from_javap = JNIFromJavaP.CreateFromClass(input_file, namespace) File "../../base/android/jni_generator/jni_generator.py", line 507, in CreateFromClass stderr=subprocess.PIPE) File "/usr/lib/python2.7/subprocess.py", line 679, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory 解决方法就是:(假如你是jdk1.6.0_45的版本,其他版本修改相应位置) 1)JDK1.6安装 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html uname -a 查看ubuntu版本,选择和ubuntu 32位/64位对应的jdk版本(i586/x64)。 2) JDK环境变量配置 #set java environment export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH 3)装jdk的时候,少装了javap工具。 update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 1 update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/bin/java 1 update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_45/bin/javaws 1 update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_45/bin/jar 1 update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/jdk1.6.0_45/bin/javah 1 update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_45/bin/javap 1 update-alternatives --config javac update-alternatives --config java update-alternatives --config javaws update-alternatives --config jar update-alternatives --config javah update-alternatives --config javap javap是jdk自带工具,可反编译,也可查看java编译器生成的字节码。 git sudo apt-get install git git-core 或者假如你的jdk是装在usr/jvm中的,那么 cd /usr/bin/ /usr/bin$ sudo ln -s -f javap
(0)(0)
本贴有需要购买的内容
还未登陆噢,无法回复登录
以下为本帖回复列表
2016-10-0301:15
3楼
2016-02-0622:45
2楼
感谢分享
苟
2015-05-1919:07
1楼
你的标题咧,等下删帖的啊
共 3 条20条/页
40条/页
50条/页
128条/页
无数据1前往
页