赞
踩
目录 | 子目录 | 子目录 | 描述 |
---|---|---|---|
android/frameworks/base | core | java/com/android/ 和 java/android/view/ | 音量调节的代码位置;涉及部分关机逻辑代码;android 的核心源代码 |
- | packages | SystemUI | SystemUI 目录是亮度调节、WiFi状态改变的代码;android 系统界面代码 |
- | policy | src/com/android/internal/policy/impl | 系统关机界面的部分代码 |
Note:具体 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/
编译后的文件路径如下图所示:(图片仅供参考,实际情况实际考虑)
Note:上图编译的路径是: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
在推送或拉取时,可能报 read-only 的错误,这个表示设备没有挂载成功,执行命令挂载即可:
adb remount
这是个大坑,测试的时候,程序崩溃,查看日志有错误日志,但是跟我修改的代码没有半毛钱的关系,开始不太在意,后来折腾了一个下午,抱着最后的希望,将所有能推的 jar 包和 apk 文件都推送了一遍,卧槽槽槽,居然成了~~我一脸懵逼的状态…
后来琢磨出来,可能是从新编译的包,其他地方的一些资源引用不成功导致。还是上面的例子,如果你修改了 android/frameworks/base/core/res/res/layout/ 目录下的布局文件,编译完 res/ 目录后,还需要编译 base/ 目录,然后两次编译生成的 jar 包和 apk 文件,都要推送,才能确保万无一失。
这是上一个问题的升级版,如果你只推送你需要测试的 jar 包或 apk 文件,你也会一脸懵逼的,设备会有莫名的错误日志,正在你怀疑系统出问题的时候,就差说出 wtf 的时候,你把所有修改过的 jar 包和 apk 文件都进行推送后,bug 好了。。。好吧,我错了,系统赢了。
由于公司测试设备很紧俏,你测试的时候,不一定就是上次测试的设备,这个时候,如果你只 push 你需要测试的 jar 包,系统 jar 包之间互相引用的时候,会出现找不到资源的错误,so,你要将所有修改过的 jar 包和 apk 文件都进行 push,目前文件列表如下:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。