在做 Android Porting 的时候,我们修改的 liblog

而在调试的时候,我用 gcc -E 展开 LOGE的调用就是__android_log_print

它只在system/core/liblog/logd_write.c, 但我每次修改__android_log_print 都不生效

因此我怀疑有别的 symbol 取代了它

用readelf 查看,果然 liblog.so 中有的symbol, 在 libcutils 中也有

$ /opt/broadcom/stbgcc-4.5.3-2.4/bin/mipsel-linux-readelf -s out/target/product/alien_broadcom_stb/system/lib/liblog.so | grep print10: 0000328c   324 FUNC    GLOBAL DEFAULT    9 android_log_printLogLine15: 00001c28   160 FUNC    GLOBAL DEFAULT    9 __android_log_print18: 00001cc8   144 FUNC    GLOBAL DEFAULT    9 __android_log_buf_print21: 00001bb8   112 FUNC    GLOBAL DEFAULT    9 __android_log_vprint27: 000033d0   444 FUNC    GLOBAL DEFAULT    9 logprint_run_tests34: 00005950     0 FUNC    GLOBAL DEFAULT  UND printf42: 000058f0     0 FUNC    GLOBAL DEFAULT  UND vsnprintf45: 000058c0     0 FUNC    GLOBAL DEFAULT  UND fprintf71: 000057f0     0 FUNC    GLOBAL DEFAULT  UND snprintf
$ /opt/broadcom/stbgcc-4.5.3-2.4/bin/mipsel-linux-readelf -s out/target/product/alien_broadcom_stb/system/lib/libcutils | grep print
payne@payne-desktop:~/bjb$ /opt/broadcom/7425b2/stbgcc-4.5.3-2.4/bin/mipsel-linux-readelf -s out/target/product/alien_broadcom_stb/system/lib/libcutils.so | grep print40: 00006078   324 FUNC    GLOBAL DEFAULT    9 android_log_printLogLine68: 00010670     8 FUNC    GLOBAL DEFAULT    9 mspace_footprint81: 00004ab4   144 FUNC    GLOBAL DEFAULT    9 __android_log_buf_print110: 000049c4   112 FUNC    GLOBAL DEFAULT    9 __android_log_vprint142: 000106c4     8 FUNC    GLOBAL DEFAULT    9 mspace_max_footprint149: 000061bc   444 FUNC    GLOBAL DEFAULT    9 logprint_run_tests204: 000187a0     0 FUNC    GLOBAL DEFAULT  UND sprintf206: 00018790     0 FUNC    GLOBAL DEFAULT  UND vsnprintf215: 00018720     0 FUNC    GLOBAL DEFAULT  UND fprintf246: 00018670     0 FUNC    GLOBAL DEFAULT  UND asprintf276: 00004a34   128 FUNC    GLOBAL DEFAULT    9 __android_log_print284: 00018520     0 FUNC    GLOBAL DEFAULT  UND snprintf

参看了 libcutils 的Android.mk, 它果然把 liblog 的静态库,加入到自己。程序运行的 libcutils 中 __android_log_print 始终没有更新,所以看不到改动结果。

因此,每次用 mmm system/core/liblog 重编译 liblog的时候,也要同时用mmm system/core/libcutils 更新 libctils

Android 中 liblog 和 libcutils 的编译 trick相关推荐

  1. Android中对APK进行反编译

    概述: 其实反编译很简单,只是利用一些工具包和一些基本命令行的命令对apk文件进行反编程,没有什么高深的技术.下面就让我们一起来学习一下反编译的技术. 注:本博客反编译方法,仅供参考学习使用,禁止用于 ...

  2. android中编译和使用luajit开发应用,Android 嵌入 LuaJIT 的曲折道路

    相关链接:Windows 下编译 LuaJIT 懒人与伸手党可以直接看最底部. 为什么使用 LuaJIT Lua 官方版的编译嵌入相对简单,但是为什么要用 LuaJIT 呢?我所了解到的优势有: 更高 ...

  3. [Android]转-Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!

    原文地址 一.前言: 大家好,今天给大家分享一下Android中的拿来主 义,我们时常会碰到一个自己觉得很漂亮很帅气的应用(apk),所以我们会尝试用WinRAR等之类工具查看,而一般的应用程序打包后 ...

  4. 【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术

    文章目录 一.Android 中的 Java 源码打包流程 1.Java 源码打包流程 2.字符串常量池 二.Android 中的字节码操作方式 一.Android 中的 Java 源码打包流程 Ja ...

  5. android项目模块导入eclipse编译报错,android中studio导入eclipse项目报错怎么办

    android中studio导入eclipse项目报错怎么办 发布时间:2020-07-15 17:34:45 来源:亿速云 阅读:96 作者:清晨 这篇文章将为大家详细讲解有关android中stu ...

  6. ant混淆编译java web,Android中使用ant混淆编译

    搞了好几天,查看了上百个网站,最后摸索出一套很简单的ant混淆编译的方法.下面开始: 1.拿一个普通项目来说,首先为它加上ant编译功能. android update project --name ...

  7. Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)!

    一.前言: 大家好,今天给大家分享一下Android中的拿来主 义,我们时常会碰到一个自己觉得很漂亮很帅气的应用(apk),所以我们会尝试用WinRAR等之类工具查看,而一般的应用程序打包后的目录通常 ...

  8. android不同机型编译不同so,如何使用adb命令查看android中的数据库

    1,进入到控制台中,输入adb shell,进入到命令模式的环境中 2,输入:cd /data/data/ 3, 选择你所在的数据库文件,比如我的com.android.homework, 输入命令: ...

  9. sqlite如何在android上编译,如何在Android中使用SQLITE中的准备语句?

    对于Android中准备好的SQLite语句,有SQLiteStatement..准备好的语句可以帮助您提高性能(特别是需要多次执行的语句),还有助于避免注入攻击.看见这篇文章就准备好的发言进行一般性 ...

最新文章

  1. mysql 学习笔记(二)
  2. 图的dfs非递归_如何理解恶心的递归
  3. 如何减小电压跟随器输出电阻_机器人如何保护电池的电源管理系统 免受热坏?(附:PDF文档下载)...
  4. 判断list集合不为空
  5. 使用Nginx反向代理来实现简单的负载均衡
  6. 瑞士轮(洛谷-P1309)
  7. ConcurrentProgramming:wait()和notify()和synchronized
  8. 【笔试/面试】—— linux 拾遗(一)
  9. 深度学习自学(十一):Aborted at 1558257386 (unix time)
  10. fiddler html 保存,Fiddler的几个简单设置
  11. Longitudinal Statistics 纵向统计分析
  12. Proxifier使用代理ip教程
  13. 微信小程序--优购商城项目(8)
  14. data单复数一样吗_data的用法
  15. Js编码和Java后台解码
  16. 智航学编程005(七彩虹)
  17. 下载Wikidata并转成TXT文档
  18. Arduino-ESP8266检测温湿度上传阿里云
  19. 生么用C语言函数做万年历菜单,用C语言如何编写“万年历”
  20. Spring:组成的七大模块

热门文章

  1. 学习笔记--Python多进程
  2. HttpClient-----待补充
  3. 51nod 1062 序列中最大的数【打表】
  4. Android studio ,Gradle 添加so库
  5. 使用Filter防止浏览器缓存页面或请求结果
  6. xcode快捷键大全(转)
  7. JDK 5.0 中的泛型类型学习
  8. kafka最好用的脚本一:kafka-topic
  9. 搭建servlet+jsp环境
  10. 阿里云 linux 找回mysql root密码