编译安卓源码慢-修改框架代码的经验以及遇到的坑

修改框架代码的经验及遇到的坑1经验目录子目录子目录说明

安卓/框架/基础

java/com/android/ 和 java/android/view/

音量调节的代码位置; 涉及的部分崩溃逻辑代码; 安卓核心源码

系统用户界面

SystemUI目录是光照调节和WiFi状态改变的代码; android系统接口代码

政策

src/com/android/internal/policy/impl

系统崩溃界面部分代码

注:具体的java文件和布局文件位置稍后解释。 以下命令均在android目录下执行。

第一次进入Ubuntu系统时,或者切换用户后编译安卓源码慢,需要重新配置编译环境。 命令如下:

source build/envsetup.sh
lunch mgm-eng

mmm命令只能编译有Android.mk文件的目录,它有一个功能,我称之为最小单元编译。 什么意思呢,就是最小单位编译。 。 。

啊、、、啊,强者编译安卓源码慢,请放下手中愤怒的香蕉刀! ! ! 让我解释...

所谓最小单元编译是指如果你改变了一个目录的代码,比如改变了android/frameworks/base/core/res/res/layout/目录下的布局文件,而在这个路径下,base/目录和第一个 res/ 目录包含 Android.mk 文件。 这时候就必须编译res/目录。 命令如下:

mmm frameworks/base/core/res/

编译后的文件路径如下图:(图片仅供参考,需考虑实际情况)

注:上图中的编译路径为:frameworks/base/packages/SystemUI/

代码编译后,会生成jar文件或apk文件。 这时候就可以推送到设备上进行测试了。 然而,但是来了,必须先拉取再推送,并且先下载设备中对应的文件。 备份并保存,命令如下:

//拉取 framework.jar 和 framework2.jar 进行备份保存
adb pull /system/framework/framework.jar
adb pull /system/framework/framework2.jar
//拉取 SystemUI.apk 进行备份保存
adb pull /system/priv-app/SystemUI.apk

对于拉取文件路径的问题,请参考上一步图中的路径,它们都对应:/system/...

拉完保存后就可以放心推了,哈哈:

adb push out/target/product/.../system/priv-app/SystemUI.apk /system/priv-app/

推送完成后,您可以重启设备并查看更改的效果。 命令如下:

adb shell
stop && start
//查看设备log的命令:logcat
//退出命令:exit

2个令人不愉快的陷阱

当推或拉时,可能会报告只读错误。 这说明设备没有挂载成功。 只需执行命令即可挂载它:

adb remount

这是一个坑。 测试过程中,程序崩溃了。 我查看日志的时候有错误日志,但是和我改的代码没有关系。 一开始我并没有在意,但是经过一夜的挣扎,抱着最后的希望,终于解决了。 所有可以推送的jar包和apk文件都已经推送过一次了。 我妈的,原来是这样啊~~我陷入了迷茫之中......

后来想了想,可能是重新编译包导致的,其他地方的一些资源引用不成功。 还是里面的例子,如果你改变了android/frameworks/base/core/res/res/layout/目录下的布局文件,编译完res/目录后,还需要编译base/目录,然后再编译生成的jar两次 包和apk文件都必须推送以确保不会出现问题。

这是上一个问题的升级版。 如果你只推送需要测试的jar包或者apk文件,你也会感到困惑。 设备会有莫名其妙的错误日志。 当你怀疑系统有问题的时候,就当你说wtf的时候,你push所有改过的jar包和apk文件后,bug就没有了。 。 。 好吧,我错了,系统赢了。

因为公司的测试设备紧缺,当你测试的时候,可能不是你之前测试的设备。 这时候如果只推送需要测试的jar包,系统jar包互相引用的时候就会出现问题。 资源未找到错误,因此需要推送所有更改的jar包和apk文件。 当前文件列表如下:

framework.jar
framework2.jar
framework-res.apk
android.policy.jar
services.jar
SystemUI.apk

电源电流不够,无法带设备

USB连接线太长,电阻大,电流不够

音量调节和定位java文件,约740行:

android/frameworks/base/core/java/android/view/VolumePanel.java(280行)

布局文件:

core/res/res/layout/volume_adjust_item.xml 
core/res/res/layout/volume_adjust.xml 

调光:

android/frameworks/base/packages/SystemUI/src/com/android/systemui/settings/ToggleSlider.java
packages/SystemUI/res/layout/status_bar_toggle_slider.xml
packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml 

关机界面:

android/frameworks/base/policy/src/com/android/internal/policy/impl/GlobalActions.java
android/frameworks/base/core/java/com/android/internal/app/AlertController.java
base/services/java/com/android/server/power/ShutdownThread.java
base/core/res/res/values/symbols.xml

无wifi浮层小技巧:

frameworks/base/services/java/com/android/server/wifi/WifiNotificationController.java
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 编译安卓源码慢-修改框架代码的经验以及遇到的坑 https://www.wkzy.net/game/200661.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务