android源码调试(如何调试Android Framework)

2025-11-18 07:45:01 :0

android源码调试(如何调试Android Framework)

其实android源码调试的问题并不复杂,但是又很多的朋友都不太了解如何调试Android Framework,因此呢,今天小编就来为大家分享android源码调试的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

如何调试Android Framework

用Android Studio进行源码调试
如上文所述,如果需要实现源码调试,必须知道足够的调试信息;在native调试中就是所谓的「调试符号」。但是release版本的动态链接库或者可执行文件一般并不会包含我们需要的调试信息,在Android系统中, /system/lib/* 目录下的那些系统so并没有足够的调试信息,因此如果要进行源码调试,必须自己编译Android源代码,才能获取调试信息,进而让调试器协助我们调试。
Android源码编译是个麻烦事儿,我写过一篇文章介绍 如何使用Docker调试 ;但是,Android版本众多,如果真的需要调试各个版本,在本地进行编译几乎是不可能的——一个版本约占60G空间,如果每个版本都编译,你的Mac还有空间可用吗?因此比较推荐使用云服务进行源码编译;比如使用阿里云的ECS,20M的网速15分钟就能下载完源码;编译速度还勉强,4核8G两个半小时。扯远了 :) 如果你没有精力编译Android源码,我这个 Demo工程 可以让你尝尝鲜,里面包含一些调试的必要文件,可以体会一下Native调试的感觉。
如果我们已经拥有了调试符号,那么还需要保证你的符号文件和设备上真正运行的动态链接库或者可执行文件是对应的,不然就是鸡同鸭讲了。最简单的办法就是使用模拟器。我们编译完源码之后,一个主要的编译产物就是 system.img ,这个 system.img 会在启动之后挂载到设备的 /system 分区,而system分区包含了Android系统运行时的绝大部分可执行文件和动态链接库,而这些文件就是我们的编译输出,正好可以与编译得到的调试符号进行配合调试。模拟器有一个 -system 选项用来指定模拟器使用的 system.img文件;于是这个问题也解决了。
最后一个问题就是,既然是源码调试,当然需要源码了;我们可以在 AOSP 上下载需要的源码即可;需要注意的是,在check分支的时候,必须保证你的分支和编译源码时候的分支是一致的。

如何编译和调试android源码中platform/system/core下的代码

首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh
注意,这是一个source命令,执行之后,就会有一些额外的命令可以使用:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。

android开发如何调试

能够在eclipse上运行调试应用程序之前,你必须为它创建一个启动项。启动项指定哪个工程将被启动,哪个activity开始工作,以及使用哪些模拟器选项等。
按照以下步骤为Eclipse版本的应用程序创建合适的启动项:
打开启动项管理工具。
在Eclipse 3.3 (Europa)的版本中,酌情选择 Run 》 Open RunDialog... or Run 》 Open Debug Dialog... 。
在Eclipse3.4 (Ganymede)版本中,酌情选择 Run 》 Run Configurations...or Run 》 Debug Configurations... 。
在左边的工程类型列表选择Android Application选择,双击(或者点击右键选择new),创建一个新的启动项。
输入启动项名称。
在Android标签中,浏览要开始的工程和Activity 。
在Target标签中,设置想要显示的屏幕及网络属性,以及其他任何模拟器启动选项。
你可以在Common标签中设置更多的选项.
按下Apply保存启动配置,或者按下Run或Debug()。
运行和调试应用程序
一旦你设定了工程和工程启动配置,你就可以按照以下的说明运行和调试应用程序了。
从eclipse主菜单,根据情况选择Run》Run 或者 Run》Debug,开始运行或者调试活动启动项。
注意,这里活动启动项是在运行配置管理中最最近一次选中的那个。它不一定就是在Eclipse Navigation 面板中选择的程序(如果有的话)
设置和修改活动启动项,可以使用启动项管理工具。如何获得启动项管理工具可以参考创建一个启动项
运行或调试应用程序将触发以下动作:
启动模拟器,如果他还没有开始运行。
编译工程, 如果在上次编译的基础上修改过代码,将重新编译。在模拟器上安装应用程序。
Run选项,开始运行程序。
Debug 在"Wait for debugger "模式下启动程序,然后打开调试窗口并将Eclipse Java调试器和程序关联。
利用其他IDEs和工具开发Android应用程序
通常我们使用安装有ADT插件的eclipse Eclipse with the ADT plugin.来开发Android程序,这个插件将,build和调试功能集成到IDE上。
然而,如果你想在其他的IDE上开发程序,例如IntelliJ,或者使用没有ADT插件的eclipse也可以。SDK提供了安装,编译,调试应用程序所需要的工具。
创建一个android工程
Android SDK包含一个activityCreator的程序,它将为工程产生多个stub文件和一个build文件。你可以用这个程序创建一个新的 Android工程或者在现有代码上创建工程,如SDK中包含的例子。对于Linux 和Mac系统,SDK提供activityCreator.py,一个 Python脚本,Windows上则是activityCreator.bat一个批处理脚本。无论是哪种平台,用法是一样的。
按以下步骤运行activityCreator创建Android工程:
在命令行下,切换到SDK下的tools/目录下,为你的工程文件新建一个目录。如果你是在现有代码上创建工程,切换到程序的根目录下。
运行activityCreator。在命令行下,你必须指定完全合格的类名作为参数。如果你是创建一个全新的工程,这个类代表的与它同名的stub类和脚本文件。如果是在现有代码上创建工程,必须指定软件包中其中一个Activity类的名称。命令选项的脚本包括:
--out 《folder》 设定输出目录。默认情况下输出目录为当前目录。如果你想为工程文件创建一个新的目录,可以使用这个选项来指向它。
--ide intellij, 在一个新的项目中生成IntelliJIDEA 工程文件。
这里有个例子:
~/android_linux_sdk/tools $ ./activityCreator.py --out myprojectyour.package.name.ActivityName
package: your.package.name
out_dir: myproject
activity_name: ActivityName
~/android_linux_sdk/tools $
activityCreator脚本生成以下文件和目录(但是不能重写已有文件):
AndroidManifest.xml 程序的清单文件,同时为工程指定Activity类。
build.xml 一个Ant文件,用来编译/打包应用程序。
src/your/package/name/ActivityName.java 你指定的输入Activity类。
your_activity.iml, your_activity.ipr, your_activity.iws intelliJ工程文件
res/ 资源目录.
src/ 源代码目录.
bin/ build脚本的输出目录.
现在你可以将开发文件夹移到任何地方,但是记住,必须使用tool/文件夹下的adb程序将文件发送到模拟器上。因此你需要在你工作环境和tools/文件夹之间活动。
当然你需要避免移动SDK目录,因为它将打断编译脚本。(再重新build之前需要手动更新SDK的映射路径)
编译 android应用程序
使用activityCreator生成的Ant文件build.xml来编译程序
如果你没有,你可以通过Apache Ant home page得到Ant文件。安装它,并确定它在你的可执行文件路径下。
呼叫Ant之前,你需声明JAVA_HOME环境变量,并将它设置为JDK的安装路径。
注 意:在windows上,JDK默认的安装路径为"ProgramFiles",这个路径将会引起Ant失败,因为路径中间有空格。解决这个问题,你可以像这样指定环境变量 JAVA_HOME:JAVA_HOME=c:\Prora~1\Java\ 然而简单的解决方法是将JDK安装在没有空格的目录下。例如:c:\java\jdk1.6.0_02. 
如果你还没有这么准备好,按照上面创建一个新的工程的介绍建立一个工程。
现在你可以为你的工程运行Ant编译文件,只需在build.xml同文件夹下输入ant即可。每次修改原文件或是资源,都需要重新运行ant,它将把最新版的应用程序打包以便deploy.
运行Android程序
运行一个编译好的程序,你需要用adb工具将.apk文件加载到模拟器的/data/app/目录下,用法如下面介绍。
启动模拟器(命令行下运行sdk目录下的/tools/emulator)。
模拟器切换到主画面(最好不要在程序运行的时候向模拟器安装程序,可以按home键离开应用程序)。
运 行adb,安装myproject/bin./《appname》.apk文件。例如,安装Lunar Lander 示例,命令行下,切换到SDK目录下的/sample/LunarLander子目录下,输入../../tools/adbinstall bin/LunarLander.apk
在模拟器中,打开可执行程序列表,卷动屏幕,选中并启动你的应用程序。
注意:当你第一次安装一个Activity时,你可能需要在启动项显示之前,或者其它程序调用它之前重新启动模拟器。因为软件包管理工具通常只有在模拟器启动时才能完全的审查manifests。
为程序附加调试器
这一节我们介绍如何在屏幕上显示调试信息(例如CPU使用率),以及如何将IDE和模拟器上运行的程序关联起来。
使用eclipse插件可以自动的生成调试器。但你也可以通过配置IDES来监听调试端口得到调试信息。
启动Dalvik Debug Monitor Server (DDMS) 工具 ,它在IDE和模拟器之间扮演着端口转换服务的角色。?
设置模拟器调试配置选项。例如,等到调试信息被加载后才启动应用程序。注意,很多调试选项无需DDMS也可以使用,例如模拟器上显示CPU的使用效率,或者屏幕的刷新频率。
配置IDE,使得调试时IDE与8700端口关联 .how to set up Eclipse to debug your project. 包含以下信息。
配置IDE附加调试端口
DDMS将为每一个虚拟机分配一个特殊的调试端口,这个端口在模拟器上可以找到。你必须将你的IDE与此端口(虚拟机上信息栏中有列出这些端口)关联或者是默认的端口8700。这样可以使IDE 连接到模拟器上程序列表中的任一个程序。
你的IDE需要能够关联模拟器上正在运行的程序,显示它的线程,并允许你挂起它,检查它的状态,设置断点。如果你在开发设置面板选择了“等待调试”,应用程序将等到Eclipse连接后才运行,所以你需要在连接之前设置断点。
修改正在调试的程序,或者在当前程序运行时选择“等待调试”将引起系统杀死这个应用程序。如果你的程序处于一种坏的状态,你可以使用方式杀死它,方法很简单,只需要设置和钩掉复选框。

怎样通过Eclipse运行APK文件,以达到可以单步调试Android源码的目的

Eclipse开发的Android程序可以直接在手机上运行。
运行方式:
1. 手机打开 USB调式模式(不同的手机操作可能打开方式不一样)。
2. 将手机连接到电脑。
3. 电脑上安装手机USB驱动程序。
4. 运行android 应用。
5.点击工程 run as android application后,系统就会查找已经连接到电脑的设备,选择已经连接的设备即可运行在手机上了。
单步调试就是点击工程debug run as android application 注意是选择debug run as android application ,然后当程序运行到断点处就会停下来。

如何在android studio中调试源程序

  • 原料

    • android studio

  • 步骤

    1. 按照图中所示,启动模拟器

    2. 模拟器启动完毕

    3. 把要调试的安卓项目源码点击运行

    4. 选择要运行的模拟器

    5. 安卓工程运行成功,可以开始调试

以上就是我们为大家找到的有关“android源码调试(如何调试Android Framework)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

android源码调试(如何调试Android Framework)

本文编辑:admin

更多文章:


第一视频教程网教育教学视频(怎么找相关大学生专业学习知识)

第一视频教程网教育教学视频(怎么找相关大学生专业学习知识)

大家好,今天小编来为大家解答以下的问题,关于第一视频教程网教育教学视频,怎么找相关大学生专业学习知识这个很多人还不知道,现在让我们一起来看看吧!本文目录怎么找相关大学生专业学习知识国家智慧教育平台官网 2022开学第一课回放完整版观看入口教

2025年7月19日 10:45

listen to the music(listen to the music 和 listen to music哪个对)

listen to the music(listen to the music 和 listen to music哪个对)

本篇文章给大家谈谈listen to the music,以及listen to the music 和 listen to music哪个对对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助

2026年7月1日 14:15

find 命令详解(linux使用find命令查找文件中a到c开头的字符)

find 命令详解(linux使用find命令查找文件中a到c开头的字符)

各位老铁们好,相信很多人对find 命令详解都不是特别的了解,因此呢,今天就来为大家分享下关于find 命令详解以及linux使用find命令查找文件中a到c开头的字符的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文

2025年7月26日 12:30

soccer是什么意思(soccer英文)

soccer是什么意思(soccer英文)

本篇文章给大家谈谈soccer是什么意思,以及soccer英文对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录soccer英文soccer是什么意思soccer是指什么意思soccer有什么意思soccer的中文翻译socce

2026年7月5日 22:00

xml有什么工作组开发(xml的用途)

xml有什么工作组开发(xml的用途)

本篇文章给大家谈谈xml有什么工作组开发,以及xml的用途对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录xml的用途xml文件是干什么的,

2025年12月3日 04:30

c语言strcat用法(c语言指针实现字符拼接函数strcat)

c语言strcat用法(c语言指针实现字符拼接函数strcat)

各位老铁们,大家好,今天由我来为大家分享c语言strcat用法,以及c语言指针实现字符拼接函数strcat的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本

2025年10月4日 12:30

数据库界面设计代码(数据库设计代码实现怎么写)

数据库界面设计代码(数据库设计代码实现怎么写)

本篇文章给大家谈谈数据库界面设计代码,以及数据库设计代码实现怎么写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录数据库设计代码实现怎么写c#winform设计的登录界面怎么根据sql数据库里的不同用户id跳转到不同页面用JS

2025年7月31日 21:00

intense什么牌子(香水什么牌子的好)

intense什么牌子(香水什么牌子的好)

本篇文章给大家谈谈intense什么牌子,以及香水什么牌子的好对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录香水什么牌子的好Biketoo

2026年5月11日 10:00

preference中文(do you have a preference)

preference中文(do you have a preference)

本篇文章给大家谈谈preference中文,以及do you have a preference对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文

2025年6月21日 05:45

小时代电影票团购(电影首映,电影票是不是特别贵)

小时代电影票团购(电影首映,电影票是不是特别贵)

今天给各位分享电影首映,电影票是不是特别贵的知识,其中也会对电影首映,电影票是不是特别贵进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录电影首映,电影票是不是特别贵请问明天美团网的团购电影票可以去看《小时代》首

2025年6月16日 12:15

java做小游戏的代码及思路(java小游戏编程)

java做小游戏的代码及思路(java小游戏编程)

这篇文章给大家聊聊关于java做小游戏的代码及思路,以及java小游戏编程对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录java小游戏编程用JAVA语言编写一个“猜数字游戏”的程序怎么用java写一个小游戏连连看java小游

2026年8月3日 17:00

coaster(杯垫英语 coaster与cupmat有区别吗)

coaster(杯垫英语 coaster与cupmat有区别吗)

“coaster”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看coaster(杯垫英语 coaster与cupmat有区别吗)!本文目录杯垫英语 coaster与cupmat有区别吗coaster是什么意思coast怎么读

2025年8月27日 08:15

javascript期末考试(javascript实现学生考试成绩的录入,找出成绩中最高分求代码)

javascript期末考试(javascript实现学生考试成绩的录入,找出成绩中最高分求代码)

这篇文章给大家聊聊关于javascript期末考试,以及javascript实现学生考试成绩的录入,找出成绩中最高分求代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录javascript实现学生考试成绩的录入,找出成绩中最

2026年2月18日 09:30

idea后面加to(it’s a good idea后面加什么)

idea后面加to(it’s a good idea后面加什么)

大家好,idea后面加to相信很多的网友都不是很明白,包括it’s a good idea后面加什么也是一样,不过没有关系,接下来就来为大家分享关于idea后面加to和it’s a good idea后面加什么的一些知识点,大家可以关注收藏

2026年5月4日 14:15

profile 简历(002-理解什么是profile)

profile 简历(002-理解什么是profile)

本篇文章给大家谈谈profile 简历,以及002-理解什么是profile对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录002-理解什么是profile英语个人简历模板3篇linkedin profile是什么意思如何写一

2025年8月4日 21:15

android未来发展趋势(Android开发的未来)

android未来发展趋势(Android开发的未来)

大家好,关于android未来发展趋势很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Android开发的未来的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本

2026年9月2日 08:45

摩洛哥2比1加拿大(加拿大和摩洛哥的比例)

摩洛哥2比1加拿大(加拿大和摩洛哥的比例)

“摩洛哥2比1加拿大”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看摩洛哥2比1加拿大(加拿大和摩洛哥的比例)!本文目录加拿大和摩洛哥的比例摩洛哥2:1加拿大比例是多少加拿大1-2摩洛哥是负胜吗加拿大对摩洛哥谁能赢摩洛哥1:

2026年8月3日 05:15

kemperor什么意思(king和emperor有什么不同)

kemperor什么意思(king和emperor有什么不同)

这篇文章给大家聊聊关于kemperor什么意思,以及king和emperor有什么不同对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录king和emperor有什么不同emperor是什么意思emperor是什么意思emper

2025年10月14日 22:45

dos命令行窗口怎么打开(如何打开dos命令窗口)

dos命令行窗口怎么打开(如何打开dos命令窗口)

“dos命令行窗口怎么打开”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看dos命令行窗口怎么打开(如何打开dos命令窗口)!本文目录如何打开dos命令窗口win7系统怎么进入DOS窗口Win7系统快速进入DOS窗口的两种方

2026年3月10日 06:45

美国参议院就针对特朗(美国和日本的地理环境对其经济贸易活动的影响)

美国参议院就针对特朗(美国和日本的地理环境对其经济贸易活动的影响)

其实美国参议院就针对特朗的问题并不复杂,但是又很多的朋友都不太了解美国和日本的地理环境对其经济贸易活动的影响,因此呢,今天小编就来为大家分享美国参议院就针对特朗的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录美国

2026年3月5日 09:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索