我的私人博客:www.mrloveqin.top 可以查看更多内容
电话靠近手机熄屏幕
在updateProximitySensorMode函数中,判断是否开启基于距离传感器的亮灭屏功能,设置screenOnImmediately。
如果是通话中,并且screenOnImmediately 为false,则开启距离传感器的亮灭屏功能。否则关闭距离传感器功能,则靠近屏幕不会息屏。
Log分析
系统根据log类型,分为main,radio,events,system,crash
frameworks/base/core/java/android/util/Log.java //用于记录main log
frameworks/base/core/java/android/util/Slog.java //用于记录framework log
frameworks/base/telephony/java/android/telephony/Rlog.java //用于记录radio log
frameworks/base/core/java/com/android/internal/os/RuntimeInit.java //内部记录了crash log
aapt linux配置
#Add Android build-tools AAPT variable
AAPT_HOME=/home/developer/android-sdk-linux/build-tools/26.0.2参考路径
export AAPT_HOME
export PATH=$PATH:$AAPT_HOME
合入patch
注意事项:要确定patch是属于公共目录还是订单私有目录,如果是其他订单的私有目录需要找到本订单的对应目录进行修改合入
根据给定的patch list清单
从gerrit 上查找patch
cherry-pick
1 identity tree 其他人已经合入不用处理
2 merge conflict 存在冲突需要本地解决冲突
3 找不到patch 需要从本地对应目录 切换分支 gitk . 进行查找
4 本地合入 可以选择右上角cherry-pick 通过 在对应目录打开终端执行复制的代码产生冲突然后本地解决.解决后cherry-pick --continue 不需要commit 可以直接push <<<<<< 旧 = ====== 新>>>>>>>
Android源码编译报错集合
一
build/core/base_rules.mk:238: error: external/googletest/googletest: MODULE.TARGET.STATIC_LIBRARIES.libgtest already defined by external/googletest/googletest. 16:57:43 ckati failed with: exit status 1
在编译过程中多次遇到这个问题,问题说的是某些东西重定义了,后来多方查找,原来是我在mac的环境变量中设置过NDK_ROOT和SDK_ROOT,也就是NDK和SDK的路径,然后后面编译Android源码时会与它们产生冲突,所以暂时把设置过的NDK和SDK环境变量取消掉,就可以解决这个问题了
禁止ODX
LOCAL_DEX_PREOPT := false
Android 9.0 Settings 定制
首先,最重要的一点要知道,Settings的布局文件解析是从AndroidManifest.xml中加载的,因此我们新加的子项要定义在Manifest中。
Settings 菜单追溯
打开Settings看到有一个Connected devices选项,那么我们去源码package下面的Settings目录下面搜索grep -nr “Connected devices”,然后会发现定义在strings.xml里面。values/strings.xml:6940:
Connected devices
接下来我们用同样的方法寻找connected_devices_dashboard_title。
xml/connected_devices.xml:21: android:title="@string/connected_devices_dashboard_title">
继续找引用该xml文件的java文件connected_devices.xml
src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java:67: return R.xml.connected_devices;
接下来找到ConnectedDeviceDashboardFragment在哪里被引用
会发现AndroidManifest文件引用到了,然后是SettingGateway.java中引用了。
再看Settings的主java文件Settings.java,打开后发现它只做了一些内部类的空定义,然后继承于SettingsActivity.java。
打开SettingsActivity发现是在这里做的界面选择处理,加载不同的布局。
里面switchToFragment()方法中会判断AndroidManifest中的Fragment类型的子项是否在SettingGateWay中的两个数组中进行了定义,定义过才会加载。
并且如果采用Fragment加载子项布局,则需先在Settings.java中先定义内部类初始化。Activity加载子项布局则不需要。
现在我们得到关键的几个相关文件:Settings.java、SettingGateWay.java、SettingsActivity.java、AndroidManifest.xml。
接下来我们开始定义自己的子项。
首先打开AndroidManifest文件
<activity android:name=“Sett