借鉴笔记

我的私人博客: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值