AOSP_LOG
而如果选择学习C++,则非常推荐你学习Standford的CS106B/CS106X.
https://hackway.org/docs/cs/map/#-c%E6%88%96java
安卓巴士Android系统定制十八-修改系统APP后进行编译-科技-高清完整正版视频在线观看-优酷
安卓巴士Android系统定制十九-Dalvik&ART的区别及ODEX文件介绍-教育-高清完整正版视频在线观看-优酷
安卓巴士Android系统定制二十-编译时odex化的原因-教育-高清完整正版视频在线观看-优酷
安卓巴士Android系统定制二十一-修改Calclator.apk代码并运行-教育-高清完整正版视频在线观看-优酷
安卓巴士Android系统定制二十二-Framework定制及Mac环境介绍-教育-高清完整正版视频在线观看-优酷
安卓巴士Android系统定制二十五-liblog.so(native层)的修改与编译-科技-高清完整正版视频在线观看-优酷
time: 8:00
1 |
|
FILE Permission
安卓巴士android系统定制四常见Linux命令介绍-下-教育-高清完整正版视频在线观看-优酷
start flow 启动流程
AOSP下的系统开发第一个方向:以前是搞android应用开发,现在负责系统application开发,这样就会上手非常 - 掘金
在packages/apps找到需要修改的相应app。在该app目录中是属于java的部分,与android应用的开发语言相同。但是与平常的app在androidstudio编写不同,在源码环境中,需要利用编辑器来进行编辑。并且在源码中的编译就需要利用make编译系统进行编译。源码的编译是以模块进行。利用mm命令进行编译。编译完成之后,会生成odex以及apk。与普通的apk的结构不同,系统编译生成的application分成了两部分:
- apk包括了签名,资源,AndroidMannifest清单文件,资源的二进制文件。
- 而原本的classes.dex则被放在了odex这一部分中。
为什么apk分成了两个文件,这就是Dalvik与art虚拟机的区别:
Dalvik:
JIT(just in time)实时编译,运行的时候将字节码翻译成机器码,所运行的目标文件与硬件平台无关,app运行效率低
ART:
AOT(Ahead of time)预先编译,运行前将字节码翻译成机器码,所运行的目标文件(oat)与硬件平台相关.app运行效率高。但会占用空间。APK安装所需时间增加
2.1 odex是干什么的
- Dalvik时代:apk运行的时候,会把apk的classes.dex解压出来并通过dexopt优化为.odex文件,缓存在/data/dalvik-cache目录下,提高后续执行的效率。这也是android被诟病的比较卡。
- ART时代:apk安装的时候,会把apk的classes.dex解压后,通过dex2oat工具转化为.odex文件(ELF格式,与Dalvik时代的.odex文件完全不同,只是为了和以前的Dalvik时代的命名相同,内容完全不同),存储在apk所在目录的oat目录下。用空间换时间
2.2 为什么在源码环境编译生成了odex文件
ROM:apk,jar,bin,so等组成
优点:
- 降低系统更新后启动的时间:
未做odex的Rom,首次开机的过程会执行odex操作。编译时做,开机时候就不用做了 - 减少在设备上进行odex操作所造成的空间浪费:
编译时进行dexopt/dex2oat,会直接将apk资源与代码拆开。如果在设备上安装时进行dexopt/dex2oat,apk的大小不会减少,但又会多一个odex文件占据磁盘空间
缺点:
- 增加开发的编译时间
- 不能直接执行apk的install操作,需要将apk和odex都sync到设备上
2.2.1 如何在开发阶段关闭dex2oat
- 在当前module的Android.mk里增加:
LOCAL_DEX_PREOAT = false
- 在build/core/main.mk中关闭所有module的dex优化:
链接:https://juejin.cn/post/6872647317393145864
Application change
change App Calender
AllInOneActivity
1 |
|
replace app
1 |
|
check logs
1 |
|