在做 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. 达摩院发布2022十大科技趋势!
  2. 学习利器:工欲善其事,必先利其器
  3. 2020 年 6 月编程语言排行榜,C 稳居第一,Rust 首进 Top 20!
  4. 7 Papers Radios | 机器人「造孩子」;谷歌裸眼3D全息视频聊天技术公开
  5. 如何同时展现不同粒度的度量
  6. Java学习笔记--StringTokenizer的使用
  7. hadoop: hdfs API示例
  8. 「原创」从马云、马化腾、李彦宏的对话,看出三人智慧差在哪里?
  9. postgres+socket.io+nodejs实时地图应用实践
  10. jvm面试之 Java内存模型之线程独占部分,线程共享部分,常问问题分析
  11. 记录一次和朋友聊天遇到的面试题 ip地址字符串和long类型的相互转换 都是参考了别人的代码 加了一些个人理解的总结
  12. 高精度地图的学习笔记
  13. matlab2c使用c++实现matlab函数系列教程-hankel函数
  14. python下载手机app视频教程_Python实例教学
  15. jquery-seat-charts 使用-自定义座位号 及 重新加载数据
  16. Android实战——简单网络视频播放器
  17. gram矩阵的性质_矩阵分析(九)Gram矩阵
  18. dropna()函数
  19. 【转载】面试题:面向对象的特征和基本特征有哪些 之抽象
  20. SpringSecurity的旅途(喜欢的话,可以点个赞哦~)

热门文章

  1. Objc Runtime在项目中该怎么用
  2. Vue.js 系列教程 4:Vuex
  3. android初始化activity时隐藏软键盘
  4. 在layoutsubviews中设置子控件的frame,保证执行alpha和frame动画流畅度
  5. struts2的标签中得到JSP脚本的变量值
  6. JVM和GC知识点整理
  7. hdu1181(变形课)
  8. oracle:case when then else end
  9. [Javascript] Math ceil()、floor()、round()三个函数的区别
  10. Win7(64位)上编译、安装、配置、运行hadoop-Ver2.5.2---单机版配置运行