开发和调试Android系统源码,开发环境如何搭建!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发和调试Android系统源码,开发环境如何搭建!相关的知识,希望对你有一定的参考价值。

情况是这样的:我今天刚刚下载了android 4.0.1的源代码,并且在linux上编译成功,但是接下来我想修改Framework里的系统API,例如:我要更改获取手机IMEI的方法getDeviceId(),那么应该如何对android源码进行编辑,目前我不知道如何将android源码导入eclipse,实在是太大了,大家开发android源码修改FrameWork时是怎么配置开发环境的,配置好后又是如何进行调试的?求解,跪求路过高手指点,小弟感激不尽!

参考技术A 在ubuntu下面编译吧在eclipse下面没法编译framework层的东西的 这些都是打包成jar的 而且有关联性如果是仅仅调试 倒是的确可以用eclipse但是需要你手机上面的system.img的编译源码和你导入的源码是一样的 否则会出现错位甚至eclipse档掉 参考技术B 在linux终端编译, . /build/envsetup.sh choosecombo mmm android源码不能在eclipse里编译,系统apps导入到eclipse里直接报错!调试你可以打log调试,在终端编译你不能用debug! 参考技术C 还是要用eclipse调试的,导入eclipse只需要导入自己需要的部分 参考技术D 其实很简单,只需找到本地FrameWork源码就OK了。-——按ctrl点击后找不到源码,点击change attached source按钮,然后在选择源码文件夹就OK了,打断点调试吧!

搭建Spark源码研读和代码调试的开发环境

转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md

搭建Spark源码研读和代码调试的开发环境

工欲善其事,必先利其器,第一篇笔记介绍如何搭建源码研读和代码调试的开发环境。 一些必要的开发工具,请自行提前安装:

  • scala 2.11.8
  • sbt 0.13.12
  • maven 3.3.9
  • git 2.10.2
  • IntelliJ IDEA 2016.3 (scala plugin)

本人使用macOS 10.12,所有笔记都基于这个系统,但是其他系统也可以很容易找到对应的解决方案,比如IDE的快捷键。

源码获取与编译

从Github上获取Spark源码

可以直接从Spark官方Github仓库拉取。本系列笔记基于Spark 2.1.0这个版本,所以先checkout这个tag,再进行之后的步骤:

$ git clone [email protected]:apache/spark.git
$ cd spark
$ git tag
$ git checkout v2.1.0
$ git checkout -b pin-tag-210

如果想要push自己的commits,也可以fork到自己的Github账号下,再拉取到本地,可以参考我之前的文章:Reading Spark Souce Code in IntelliJ IDEA

编译Spark项目

参考官方文档,编译很简单,这里使用4个线程,跳过tests,以此加速编译。这个编译会产生一些必要的源代码,如Catalyst项目下的,所以是必要的一步:

$ build/mvn -T 4 -DskipTests clean package
# 编译完成后,测试一下
$ ./bin/spark-shell

技术分享

源码导入与代码运行

导入源码到Intellij IDEA 16

现在IDEA对scala支持已经比较完善,导入Spark工程非常简单:

Menu -> File -> Open -> {spark dir}/pom.xml -> Open as Project

技术分享

运行实例代码

导入工程后,介绍一下如何运行Spark项目自带的实例代码,在{spark dir}/examples/目录下,这里以LogQuery为例:

command + o -> 输入LogQuery打开

技术分享

1. 配置运行参数:

Menu -> Run -> Edit Configurations -> 选择 + -> Application

参数配置如下: 技术分享 VM options: -Dspark.master=local代表使用本地模式运行Spark代码,也可以选择其他模式。 保存配置后,可以看到LogQuery在运行选项里了: 技术分享

2. 添加缺失的flume sink源代码

首次运行LogQuery会报错,因为IDE找不到flume依赖的部分源码: 技术分享 解决方案如下:

Menu -> File -> Project Structure -> Modules -> spark-streaming-flume-sink_2.11 -> Sources

  1. 把 target目录加入Sources(点击蓝色Sources)
  2. 把子目录sink也加入Sources

参考下图,注意右边的Source Folders列表: 技术分享

3. 添加运行依赖的jars

再次运行,这次会花费比较长的时间,因为已经可以成功编译LogQuery啦,但是还是没能运行成功,报错如下: 技术分享 不要慌,这说明你的代码编译已经成功啦,运行出错的原因是,运行Spark App一般都是通过spark-submit命令,把你的jar运行到已经安装的Spark环境里,也就是所有的Spark依赖都已经有啦,现在你用IDE的方式,就会缺少依赖。

解决方案如下:

Menu -> File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/

技术分享

有两点需要注意:

  • jars/*.jar: 这些依赖jars是在第一步编译打包Spark项目的时候产生的,如果这个目录是空的,或者修改了源代码想更新这些jars,可以用同样的命令再次编译Spark:
$ build/mvn -T 4 -DskipTests clean package
  • 从上图中右侧的Scope一栏可以看到,基本上所有依赖jars都是Provided,也就是说默认都是提供的,因为默认都是用spark-submit方式运行Spark App的。

4. 成功运行实例代码

终于再次运行LogQuery的时候,可以看到输出啦: 技术分享

单步调试源代码

千辛万苦地终于让实例代码在IDE里跑起来了,是不是很有成就感。其实做了那么多的铺垫工作,在IDE里面运行代码的最大福利是可以单步调试! 很简单,选择断点,然后Run -> Debug,可以看到中间变量值等等,其他的自行探索吧: 技术分享

以上是关于开发和调试Android系统源码,开发环境如何搭建!的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Android Studio开发/调试Android源码

搭建Spark源码研读和代码调试的开发环境

Android开发环境搭建

如何在不同平台上搭建Flutter开发环境

搭建开发板的测试环境

如何调试跟踪Android Framework源代码