Android开发概要记录
1..o文件、 .ko和.so文件的路径
\kernel\out\mediatek---------------.o文件
.c/.cpp文件编译生成的目标文件
\out\target\product\hsimobile77_ics2\system\lib\modules----.ko文件
\out\target\product\hsimobile77_ics2\system\lib------------.so文件
2.用Ctrl+C停止正在进行的编译操作
3.如何快速编译单个驱动和调试?
4.adb logcat > logo.txt可以抓取调试信息
adb shell
cat /proc/kmsg也可以抓调试信息。
5./dev下通过ls -l可以查看设备文件更多详细的信息,比如主设备号和次设备号。
6.adb shell setprop service.adb.root 1 设置权限。
7.linux下fastboot使用
adb reboot bootloader
fastboot flash boot \out\target\product\msm8909\boot.img
fastboot reboot
8.svn一些常用的命令
svn status查看有更新的文件
svn log查看更新记录
svn co svn://192.168.XX.XXX/源代码目录
获取指定版本
svn checkout http://siphon.googlecode.com/svn/trunk/siphon -r r791
svn up获取新版本代码
svn commit -m "解决DC无法充电及显示问题"
svn status可知道修改的文件、和增加的文件。
svn add file提交增加的文件
提交某些指定的文件
svn commit kernel/drivers/input/keyboard/A.c kernel/drivers/input/keyboard/A.h -m "1.优化按键驱动 2提交按键代码"
删除文件
svn info获取当前版本信息
svn update -r10030-------更新到指定版本,也可以用于回退到哪个版本做测试验证
r后面紧跟版本号
递归删除目录下.svn文件
find和xargs结合
find . -name "*.svn" | xargs rm -rf
9.Android 性能分析工具dumpsys的使用
Android提供的dumpsys工具可以用于查看感兴趣的系统服务信息与状态,手机连接电脑后可以直接命令行执行adb shell dumpsys 查看所有支持的Service但是这样输出的太多,可以通过dumpsys | grep "DUMP OF SERVICE" 仅显示主要的Service的信息
也可以单独列出某个系统服务的,比如battery,命令:dumpsys battery,如果想知道具体可以做哪些操作可:dumpsys battery -h来查看,比如我们想设置电量百分比,可以
dumpsys battery set level 5。
10. /sys/kernel/debug/msm_otg
调试路径
11.编译和替换framework部分
比如修改\frameworks\base\services\core\java\com\android\server\BatterySevice.java
编译命令,编译命令mmm frameworks/base/services/
user版本。Jar中的部分被编译程序优化成了odex文件和jar文件,请看log最后一行。
但是user你们应该没有权限push进去的。
如果你们要调试,请编译eng版本的jar,这样jar应该就是完整的2m大小了。
adb remount
adb push services.jar /system/framework/
adb reboot
11.手动设置电池容量
echo 50 > sys/modules/qpnp_bms/parameters/bms_fake_battery
13.linux主要目录的一样
/proc/devices文件可以获知系统中注册的设备,第1列为主设备号,第2列为从设备名
14.快递定位问题
(1) 通过logo定位具体的地方
看日志,在差不多的地方加个dump_stack() 就很容易看出来调用关系
15.系统属性
(1) msm8909系统属性文件
device/qcom/msm8909/system.prop
16.测试模式
从2016.0115日开始系统,默认关闭测试模式,相对之前默认打开测试默认,有以下变化:
(1) 接入USB线,需要选择才能打开USB debug模式
(2) USB模式默认为MTP,之前为charging模式
(3) 开机后,我们刷机软件QFIL识别不到端口(但关机状态下同时按下两个侧按键+power按键,还是可以正常刷机)
17.vmlinux
位于\out\target\product\msm8909\obj\KERNEL_OBJ文件夹下,
vmlinux是未压缩的内核,vmlinux 是ELF文件,即编译出来的最原始的文件。用于kernel-debug,产生system.map符号表,不能用于直接加载,不可以作为启动内核。只是启动过程中的中间媒体
vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制
以是我在CSDN中看到的,可以使用反汇编查看这个文件:
arm-eabi-objdump -d kernel/vmlinux > 1.S
18. 关机充电部分编译
比如修改system\core\healthd文件夹的代码,用make bootimage编译即可,此文件夹生成的healthd在out\target\product\msm8909\symbols\sbin文件夹下
20.ROM助手可编辑img文件
21. 设备树dt.img中的entry数量由dts和dtsi文件的"compatible"条目数量决定
22.编译命令
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory, but not their dependencies.
- mmm: Builds all of the modules in the supplied directories, but not their dependencies.
To limit the modules being built use the syntax: mmm dir/:target1,target2.
- mma: Builds all of the modules in the current directory, and their dependencies.
- mmma: Builds all of the modules in the supplied directories, and their dependencies.
23.croot命令可直接回到代码根目录
24.system\core\init打印调试信息
比如init.c下main():
KLOG_ERROR(LOG_TAG,"main() test --->error\n");//串口打印出来
KLOG_DEBUG(LOG_TAG,"main() test --->DEBUG\n");//串口打印不出来
编译boot.img即可
26./proc/cpuinfo、cmdline对应硬件信息和内核启动参数
27.获取属性值,比如getprop ro.build.product
28.系统属性文件,在\bionic\libc\include\sys\_system_properties.h定义
#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"
#define PROP_PATH_SYSTEM_BUILD "/system/build.prop"
#define PROP_PATH_SYSTEM_DEFAULT "/system/default.prop"
#define PROP_PATH_VENDOR_BUILD "/vendor/build.prop"
#define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"
#define PROP_PATH_FACTORY "/factory/factory.prop"
29.查找代码
技巧:
在调试或理解系统的工作原理的时候,我们经常要去找服务程序对应的源码。
寻找c或c++程序的源码文件:
例如:以寻找init程序对应的源码为例。
find ./ -name Android.mk -exec grep -l init {} \;
注:通过find命令查找所有的Android.mk, 通过grep从中查找程序字符串,得到其路径,然后去路径下找源码即可,这么做的原因是,c或c++代码都是通过Android.mk来指导编译的。
寻找java源码文件:
java源码的特点是和类名一致,所以如果我们知道一个类名,找其java源码就直接加上java后缀即可。
例如:寻找com.android.internal.os.ZygoteInit类的代码。
find ./ -name ZygoteInit.java
30.system\core\rootdir\init.rc
需要注意的是,各个trigger的加载顺序,先加入的先执行,后加入的后执行,要特别注意,尤其是要修改init.rc文件的时候,不了解这个容易因为前后依赖关系造成问题。
31.Android属性服务
Android为了存储全局系统设置信息,提供了一个系统属性共享内存区,这个共享内存区的内容是一些键值对的列表,对外提供get和set方法读写属性。系统启动时由init初始化并开启属性服务。
32.system/build.prop
build.prop和上节说得根文件系统中的default.prop文件格式一样,都称为属性配置文件。它们都定义了一些属性值,代码可以读取或者修改这些属性值。属性值有一些命名规范:
ro开头的表示只读属性,即这些属性的值代码是无法修改的。
persist开头的表示这些属性值会保存在文件中,这样重新启动之后这些值还保留。
其它的属性一般以所属的类别开头,这些属性是可读可写的,但是对它们的修改重启之后不会保留。
33.MPSS和APSS
APSS指应用子系统,Application subsystem
MPSS是指modem应用子系统,Modem Application susbsystem
34.策略文件,比如init.te,te是指TypeEnforcement Access Control(简称TEAC,一般用TE表示)
35 frameworks\base\packages\SettingsProvider\res\values\defaults.xml
有很多开机默认的设置,比如开机不锁屏<bool name="def_lockscreen_disabled">false</bool>
36.framework层的JNI源代码:frameworks\base\core\jni
frameworks\base\services\core\jni
37.编译so并快速打包到system.img中
用mmm命令编译,用make snod打包到system.img中。
Android开发概要记录的更多相关文章
- [置顶] Android开发实战记录(三)---HelloWorld
1.新建Android项目,选择Android Project,然后Next 2.填写项目名称HelloWorld然后next,这里注意下,Java开发的命名规范 3.选择Android SDK版本, ...
- 移动应用产品开发-android开发项目记录
今天主要在做app前端开发,做了一个资讯列表和资讯详情,主要模仿网易新闻来做,页面布局简单,但java代码和实现比较麻烦 毕竟才开始做,研究的不那么透彻,也不是很熟练 用心去做,专注开发,今天也算作出 ...
- android开发之记录ListView滚动位置
这个问题本身不难,但是由于项目中的需求太过于复杂,结果导致这个问题变得不是那么容易实现.在网上一搜,结果如下: 我不知道是who copy who?反正介绍的所谓的三种方法,第一种都是无法运行的,很明 ...
- Android开发—错误记录1:W/System.err: java.net.ConnectException: Connection refused
W/System.err: java.net.ConnectException: Connection refused 前台访问后台时,出现访问被拒绝情况:W/System.err: java.net ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- 一些android开发实用性网站记录
android开发一些有用的网站有很多,可以方便我们开发,记录一下哈. 1.Android源代码在线阅读:https://www.androidos.net.cn/sourcecode 2.在线Jso ...
- Android开发-Android Studio问题以及解决记录
[Android开发] Android Studio问题以及解决记录 http://blog.csdn.net/niubitianping/article/details/51400721 1.真 ...
- Android开发 MVP模式的规范记录(个人总结)
前言 首先,这篇文章不在讲解什么是mvp模式,如果需要请自行搜索mvp模式文章了解.这个文章里我只记录mvp模式的创建和mvp各自层的界限.另外这个博客属于个人使用mvp模式后一些经验总结与记录.并不 ...
- Android开发技术周报182学习记录
Android开发技术周报182学习记录 教程 App安全二三事 记录 为什么要安全 App的移动安全主要包括下面几种: 密钥破解,导致本地加密数据被盗取. 通信密钥破解,导致接口数据被盗取. 伪造接 ...
随机推荐
- Matlab 2015b 启动时崩溃 MATLAB crashes during startup on Ubuntu 16.04
Matlab 启动时崩溃 MATLAB crashes during startup on Ubuntu Matlab 2015B Ubuntu 16.04 之前解决过,更新后问题又来了. 出 ...
- Appium移动自动化测试(三)--安装Android模拟器(建议直接连手机,跳过此步)
转自虫师,亲测有效,留备后用. 本文中如果直接安装时不出现错误,则可以忽略(一.二.三.四.五),我安装的是5.1.1,直接成功,就是有点慢,要有耐心. 如果到最后一步,启动不起来,报错: emula ...
- com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) 1.1.1. 前言 近期在使用ObjectMapper对象将jso ...
- 【Netty源码分析】客户端connect服务端过程
上一篇博客[Netty源码分析]Netty服务端bind端口过程 我们介绍了服务端绑定端口的过程,这一篇博客我们介绍一下客户端连接服务端的过程. ChannelFuture future = boos ...
- Android 深入理解Loader机制 让APP轻装上阵
本文简书同步发布,谢谢关注. http://blog.csdn.net/sk719887916/article/details/51540610 Android开发者都经历过APP UI开发不当 会造 ...
- mapdb的一些性能测试
jdk1.6,8g,64位,Intel Core i5-4210U CPU @ 1.70GHz 2.40GHz 使用memorydb 100个htreemap,每个htreemap对应50条线程操作, ...
- 【java虚拟机系列】java中类与对象的加载顺序
首先了解一下Java虚拟机初始化的原理. JVM通过加装.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.类型的生命周期如下图所示: 装载和连接必须在初始化之前就要完成. 类 ...
- 再谈机器学习中的归一化方法(Normalization Method)
机器学习.数据挖掘工作中,数据前期准备.数据预处理过程.特征提取等几个步骤几乎要花费数据工程师一半的工作时间.同时,数据预处理的效果也直接影响了后续模型能否有效的工作.然而,目前的大部分学术研究主要集 ...
- OC语言编写:为视图添加丝滑的水波纹
先看一下最终效果图: 首先我们可以把如此丝滑的水波纹拆分一下下: 一条规律的曲线. 曲线匀速向右移动. 曲线下方的位置用颜色填充. 于是先来一条曲线吧. 对于需要产生波动如此规律的曲线,我们首先想到的 ...
- Android项目-高考作文项目架构(二)
1, 普通的http json请求 请看下面架构草图: 这样就抽象出了其他Activity可能需要的Http Json请求的功能. 只要其他Activity有Http Json请求的需求都可以继承Ba ...