flyer0402 / zz

zzzz
0 stars 0 forks source link

Android 分析 #3

Open flyer0402 opened 5 years ago

flyer0402 commented 5 years ago

1、std::function简介 https://www.cnblogs.com/heartchord/p/5017071.html

2、std::future https://blog.csdn.net/lijinqi1987/article/details/78507623

3、线程的joinable和detached状态 https://blog.csdn.net/github_33736971/article/details/51457415

4、c++字节对齐 类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)

Char 偏移量必须为sizeof(char)即1的倍数 int 偏移量必须为sizeof(int)即4的倍数 float 偏移量必须为sizeof(float)即4的倍数 double 偏移量必须为sizeof(double)即8的倍数 Short 偏移量必须为sizeof(short)即2的倍数

字节边界数(即该结构中占用最大空间的类型所占用的字节数) 各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节VC会自动填充。同时VC为了确保结构的大小为结构的字节边界数的倍数 https://blog.csdn.net/sweetfather/article/details/78487563

attribute((packed))是GUN C上告诉编译器不要做对齐处理

5、lock_guard unique_lock 线程mutex锁,两个锁都是生命周期结束后,释放锁,只是unique_lock更加灵活,具体见下 https://blog.csdn.net/daaikuaichuan/article/details/71022824

6、jni JNIEnv不能在任意线程中使用。必须是原本就是Java线程(Java代码通过JNI调用native代码时,发起调用的那个肯定是Java线程),或者是让已有的native线程通过JNI来attach到Java环境。 你的每个“C++线程”里都应该要调用AttachCurrentThread()来确保它确实attach到Java环境里了。 https://hllvm-group.iteye.com/group/topic/33519

7、gl/gles与egl关系 1) egl是一个管理者的功能。包括管理所有的display , context, surface,config。可能有很多的display ,每个display有很多的configs,这个display上可以创建很多的context和surface。如果这些工作都有app去做,那就太麻烦了。

2) 系统调用应该是没有3d render context这样的概念的,所以必须有某个组件或者某一层中间件来做维护context这个事情。而且针对surface而言,egl分配出来的surface有些是不能给native的api(也就是系统提供的绘图操作)去render的, EGL的config 有一个flag就是native_renderable,指定是不是能够给native的api去render(估计是tiling什么的东西不兼容)。

3) gles是不能直接处理surface的,他没有这样的接口。gl或者gles是一组只和3d render相关的操作,软件架构上属于很高的level。和具体的下层的物理对应是无关的。所以gl或者gles没有surface这样的东西。只有FBO VBO PBO之类的对象的概念。

4) egl更多的角色属于3d api和native api的中间耦合连接组件。app的资源管理是通过egl去实现,包括维护包括系统相关的surface操作同时包括3drender相关的context的维护,app的绘图操作交给gl或者gles。3d core 和native api和egl这三个组件在架构上应该是属于同一个level的东西,而不应该是上下之分。

5) glx wgl agl egl其实都是做了资源管理的功能,真正的3d render的过程就给gl或者gles去做了。

https://blog.csdn.net/huiyihgy/article/details/46771599

8、hwcomposer 这个硬件源就是HWComposer,它一方面管理这composer的hal模块,composer模块是厂商定制UI合成的接口,通常不会直接操作HWComposer模块,而是通过surfaceflinger使用它;另一方面就是产生vsync信号 HardwareComposer,这东西的主要功能简单来说,就是把SurfaceFlinger准备好的各个layer data送到需要的地方去,以aosp中hardware/samsung_slsi/exynos5/libhwc 这个hwc为例,就是把layer data送到/dev/graphics/fb0去显示 https://blog.csdn.net/u012439416/article/details/79733414 https://blog.csdn.net/ear5cm/article/details/45080305 (Android HardwareComposer中的fence机制)

9、likely与unlikely在汇编层优化 gcc -fprofile-arcs -O2 -c test.c objdump -d test_builtin_expect.o https://blog.csdn.net/grublinux/article/details/37543489

10、std::filesystem::path与std::filesystem::canonical 路径规范化 https://zh.cppreference.com/w/cpp/filesystem/canonical

11、从 pthread 转换到 std::thread 最后总结下std::thread对比于pthread的优缺点: 优点:

  1. 简单,易用
  2. 跨平台,pthread只能用在POSIX系统上(其他系统有其独立的thread实现)
  3. 提供了更多高级功能,比如future
  4. 更加C++(跟匿名函数,std::bind,RAII等C++特性更好的集成) 缺点:
  5. 没有RWlock。有一个类似的shared_mutex,不过它属于C++14,你的编译器很有可能不支持。
  6. 操作线程和Mutex等的API较少。毕竟为了跨平台,只能选取各原生实现的子集。如果你需要设置某些属性,需要通过API调用返回原生平台上的对应对象,再对返回的对象进行操作。 https://www.jianshu.com/p/f4251ce0322e http://www.cplusplus.com/reference/condition_variable/condition_variable/?kw=condition_variable

12、Debug java new Exception("print stack").printStackTrace();

c++ debug: 为了在native查看函数调用栈可以在需要的地方添加如下代码。

include <utils/CallStack.h>

android::CallStack stack; stack.update(); String8 strtemp = stack.toString(""); ALOGD("\t%s", strtemp.string());

addr2line工具 cd aosp-7.0.0-r1/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin ./aarch64-linux-android-addr2line -e /work/ARMNative/aosp-7.0.0-r1/out/target/product/generic_arm64/symbols/system/bin/VmiAgent https://www.jianshu.com/p/6dba42c022a9 (开机优化)

13、抓log方法 这里提下如何看kernel的log, 开机后用命令:adb shell dmesg > dmesg.txt抓取Log log里面搜关键字"Bootloader start count"-->LK 启动 “Bootloader end count”-->LK 结束 "Kernel MPM timestamp"-->bootloader运行完成 作者:小草凡 链接:https://www.jianshu.com/p/6dba42c022a9 来源:简书

14、单例模式对象释放 利用程序结束时会调用静态成员变量的析构函数,来实现单例模式对象的释放。 https://www.cnblogs.com/cs-jin-note/archive/2012/11/01/2750250.html

15、ADD_BAD_SUBWINDOW_TOKEN http://www.apkbus.com/forum.php?mod=viewthread&tid=311443

16、Android疑难问题分析 https://blog.csdn.net/a332324956/article/details/60150016

17、线程调度 https://blog.csdn.net/CringKong/article/details/79994511

18、virtual 析构函数 从上面结果我们看到,尽管派生类中定义了析构函数来释放其申请的资源,但是并没有得到调用。 原因是基类指针指向了派生类对象,而基类中的析构函数却是非virtual的,之前讲过,虚函数是动态绑定的基础。 现在析构函数不是virtual的,因此不会发生动态绑定,而是静态绑定,指针的静态类型为基类指针, 因此在delete时候只会调用基类的析构函数,而不会调用派生类的析构函数。这样, 在派生类中申请的资源就不会得到释放,就会造成内存泄漏,这是相当危险的:如果系统中有大量的 派生类对象被这样创建和销毁,就会有内存不断的泄漏,久而久之,系统就会因为缺少内存而崩溃。 https://www.cnblogs.com/liushui-sky/p/5824919.html

19、C++指针加整数、两个指针相减的问题 当指针加整数时,指针向后偏移的距离看的是声明该指针的类型 void类型的指针加整数,即为指针实际向后偏移的字节数 https://blog.csdn.net/zz460833359/article/details/47999775

20、Activity到底是什么时候显示到屏幕上 https://blog.csdn.net/dongge825/article/details/54412723

21、RenderThread https://blog.csdn.net/guoqifa29/article/details/45131099

22、c++函数只执行一次 std::call_once https://www.cnblogs.com/moodlxs/p/10111859.html 或者static bool dummy = (fun(), true)

23、Android机器启动不了 https://www.2cto.com/kf/201501/374228.html

24、leetcode https://leetcode-cn.com/problemset/all/

25、Android 硬件 OpenGL ES 模拟设计概述 https://www.jianshu.com/p/df6308a127a9

26、Android启动图 https://blog.csdn.net/wangzaieee/article/details/84774298

27、epoll原理 https://blog.csdn.net/zhaobryant/article/details/80557262

28、watchdog https://blog.csdn.net/fu_kevin0606/article/details/64479489

29、C++段错误调试 https://www.jianshu.com/p/66e9bc3b4988

30、linux I/O模型,Proactor/Reactor https://blog.csdn.net/u013074465/article/details/46276967

31、anbox i/o模型 https://blog.csdn.net/tq08g2z/article/details/79037764

32、opengl es egl理解 EGL——因此被独立的设计出来,它作为OpenGL ES和本地窗口的桥梁。 https://blog.csdn.net/qiuyun0214/article/details/54614997

33、ANR流程 https://blog.csdn.net/yelangjueqi/article/details/52622080

34、Android系统图形库 https://blog.csdn.net/xiaoguaihai/article/details/8771076 https://segmentfault.com/a/1190000020535134?utm_source=tag-newest http://www.voidcn.com/article/p-qqxnstwv-kz.html

https://www.douban.com/note/715419148/

老罗: https://www.kancloud.cn/alex_wsc/androids/473755

jvm内存模型 https://www.jianshu.com/p/76959115d486 https://www.cnblogs.com/fnlingnzb-learner/p/7365969.html

flyer0402 commented 4 years ago

java jit https://www.jianshu.com/p/169d6a50284a https://www.cnblogs.com/msymm/p/9395234.html

Java 开源项目 https://blog.csdn.net/cowbin2012/article/details/103466779

JVM 中 native memory https://www.cnblogs.com/duanxz/p/3738858.html

flyer0402 commented 4 years ago

Android源码: https://www.androidos.net.cn/android/10.0.0_r6/xref http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/jni/AndroidRuntime.cpp#register_jni_procs https://cs.android.com

flyer0402 commented 4 years ago

android renderthread https://www.bbsmax.com/A/o75NLOGXzW/

flyer0402 commented 4 years ago

surface与surfaceflinger https://blog.csdn.net/freekiteyu/article/details/79483406

SurfaceFlinger启动及图层合成送显过程 https://www.jianshu.com/p/d4c37793edeb

flyer0402 commented 4 years ago

音频 https://source.android.com/devices/audio https://www.twblogs.net/a/5c35a6f1bd9eee35b3a55dba/zh-cn https://blog.csdn.net/yangwen123/article/details/39502689

Android 现状 https://www.jianshu.com/p/b345ed579b99

多窗口 https://blog.csdn.net/fu_kevin0606/article/details/81191078 https://blog.csdn.net/guoqifa29/article/details/54863237 https://blog.csdn.net/qidabing/article/details/73548911 https://www.jianshu.com/p/d82de5313458 (ams管理activity)

反编译 https://www.jianshu.com/p/6c4f19331284

inputflinger: https://blog.csdn.net/u010479969/article/details/48803757 https://www.jianshu.com/p/b09afd403f71

Android 共享内存 https://blog.csdn.net/luoshengyang/article/details/6651971

性能优化 功耗:https://blog.csdn.net/StevenDuan17/article/details/100538332

flyer0402 commented 4 years ago

ams 主要数据类分析: 1、ActivityStackSupervisor ActivityStackSupervisor是ActivityStack的管理者,内部管理了mHomeStack、mFocusedStack和mLastFocusedStack三个ActivityStack。其中,mHomeStack管理的是Launcher相关的Activity栈, stackId为0;mFocusedStack管理的是当前显示在前台Activity的Activity栈;mLastFocusedStack管理的是上一次显示在前台Activity的Activity栈。并且包存在ActivityDisplay的SparseArray变量mActivityDisplays,通过ActivityDisplay可以对某一显示屏中的Activity 管理。 2、ActivityDisplay ActivityDisplay可以直接理解成为一个屏幕,保存着该屏幕的ActivityStack的数组mStacks,并对其进行管理操作。同时也保存了该屏幕下单特殊ActivityStatck,如mHomeStack、mRecentsStack、mPinnedStack、mSplitScreenPrimaryStack。 3、ActivityStatck 维护的是一个TaskRecord的List mTaskHistory;在其构造函数中会将其通过ActivityDisplay的addChild添加到自己的ActivityDisplay.mStatck中,并获得一个WMS中的StackWindowController的变量。ActivityStack决定是否需要启动新的进程 4、TaskRecord 一个Task栈,用于记录Activity的开启顺序。 5、ActivityRecord ActivityRecord是Activity在system_server进程中的镜像,Activity实例与ActivityRecord实例一一对应。ActivityRecord用来存储Activity的信息 https://www.jianshu.com/p/058e287b2a2d https://www.jianshu.com/p/94816e52cd77

WINDOWING_MODE_PINNED RECENTS_ACTIVITY_TYPE

flyer0402 commented 4 years ago

Android 官网stack描述 https://developer.android.com/guide/components/activities/tasks-and-back-stack

flyer0402 commented 4 years ago

java 线程安全 https://blog.csdn.net/GavinZhera/article/details/86471828 concurrenthashmap分析 https://www.jianshu.com/p/5dbaa6707017

JAVA虚拟机 详细 https://blog.csdn.net/qq_41701956/article/details/81664921

JAVA内存模型/直接内存 https://www.jianshu.com/p/2d8bc4d4c181 https://www.cnblogs.com/qq289736032/p/9185964.html https://www.jianshu.com/p/76959115d486

flyer0402 commented 4 years ago

PhoneWindowManager截取事件/定制特殊组合 https://blog.csdn.net/wjky2014/article/details/100938970?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

flyer0402 commented 4 years ago

android service/binderservice https://blog.csdn.net/freekiteyu/article/details/79785720

android 图片内存大小(core/jni/android/graphics/BitmapFactory.cpp) 内存读取图片会进行缩放 scale = (float) targetDensity / density (设备dpi / 目录对应的dpi) https://www.jianshu.com/p/3c5ac5fdb62a

flyer0402 commented 4 years ago

图片 https://blog.csdn.net/wlong610/article/details/51246220

图片加载内存优化 第一种方式,大约能减少一半的内存开销。Android默认是使用ARGB8888配置来处理色彩,占用4字节,改用RGB565,将只占用2字节,代价是显示的色彩将相对少,适用于对色彩丰富程度要求不高的场景。 第二种方式,和图片的具体分辨率有关,建议开发中,高分辨率的图像应该放置到合理的资源目录下,注意到Android默认放置的资源目录是对应于160dpi,目前手机屏幕分辨率越来越高,此处能节省下来的开销也是很可观的。理论上,图片放置的资源目录分辨率越高,其占用内存会越小,但是低分辨率图片会因此被拉伸,显示上出现失真。另一方面,高分辨率图片也意味着其占用的本地储存也变大。 第三种方式,理论上根据适用的环境,是可以减少十几倍的内存使用的,它基于这样一个事实:源图片尺寸一般都大于目标需要显示的尺寸,因此可以通过缩放的方式,来减少显示时的图片宽高,从而大大减少占用的内存。BitmapFactory.Options inJustDecodeBounds = true

链接:https://www.jianshu.com/p/3f6f6e4f1c88 https://www.jianshu.com/p/e00dce838fb2

flyer0402 commented 4 years ago

计算view可见区域百分比:主要是getLocalVisibleRect(相对坐标:相对view自己)和getGlobalVisibleRect(绝对坐标:相对屏幕的坐标) https://blog.csdn.net/ChrisSen/article/details/84065243

flyer0402 commented 4 years ago

React Native使用 https://reactnative.cn/

flyer0402 commented 4 years ago

RN(React Native) 热修复 https://www.jianshu.com/p/ab79eb18d17d https://linkrober.github.io/bookshelf/2017/10/react-native%E5%A6%82%E4%BD%95%E9%9B%86%E6%88%90%E5%88%B0%E7%8E%B0%E6%9C%89%E9%A1%B9%E7%9B%AE%E4%B8%AD/

xposed Dexposed,Andfix http://weishu.me/

flyer0402 commented 4 years ago

开屏广告 https://blog.csdn.net/Json111/article/details/79973246 https://blog.csdn.net/rmcgogo/article/details/77236894

flyer0402 commented 4 years ago

调试工具 https://blog.csdn.net/zhangcanyan/article/details/84556934

flyer0402 commented 4 years ago

内存泄露 https://blog.csdn.net/fulinwsuafcie/article/details/38595677 https://blog.csdn.net/b1480521874/article/details/81671143

flyer0402 commented 4 years ago

SIGSEGV信号问题处理 https://www.jianshu.com/p/9215bc884edc https://blog.csdn.net/hl09083253cy/article/details/78534968?locationNum=8&fps=1

flyer0402 commented 4 years ago

mediasession框架 https://www.jianshu.com/p/a6c2a3ed842d

flyer0402 commented 4 years ago

events log解析 https://www.jianshu.com/p/528303e3afba

flyer0402 commented 4 years ago

native signal捕捉并并打印堆栈 https://www.cnblogs.com/lidabo/p/4545639.html 栈被撑破 android Process exited due to signal (11) 没有堆栈 https://zhuanlan.zhihu.com/p/53885988 https://blog.csdn.net/csdnvr/article/details/80130549 https://www.jianshu.com/p/1a955e0d9454

flyer0402 commented 4 years ago

native内存泄露方案 https://www.cnblogs.com/amap_tech/p/11199813.html

linux检查内存泄漏工具 https://www.cnblogs.com/mered1th/p/10799832.html

flyer0402 commented 4 years ago

oom killer oom lmk https://blog.csdn.net/tankai19880619/article/details/50112003 https://blog.csdn.net/woshihuawuque/article/details/104044034

flyer0402 commented 4 years ago

http://www.aoaoyi.com/archives/456.html 保活

flyer0402 commented 4 years ago

surfaceflinger https://www.cnblogs.com/blogs-of-lxl/p/11272756.html

flyer0402 commented 4 years ago

https://www.jianshu.com/p/15d0e71bbe74 高德内存优化方案

https://www.jianshu.com/p/9058f0514416

flyer0402 commented 4 years ago

二、DropBox工作 当发生以下任一场景,都会调用AMS.addErrorToDropBox()来触发DBMS工作。

crash: 文章理解Android Crash处理流程 [小节4]的AMS.handleApplicationCrashInner过程 anr: 文章android ANR原理分析[小节3.1]的AMS.appNotResponding()过程; watchdog: 文章WatchDog工作原理 [小节3.1]的Watchdog.run()过程; native_crash: 当调用NativeCrashReporter.run()的过程; wtf: 当调用Log.wtf()或者Log.wtfQuiet()的过程; lowmem: 当内存较低时,触发AMS.reportMemUsage()过程;

https://blog.csdn.net/u011139711/article/details/81129293

flyer0402 commented 4 years ago

https://blog.csdn.net/weixin_30402343/article/details/97705503 (Segmentation Fault产生根本原因)

flyer0402 commented 4 years ago

VM知识 https://mp.weixin.qq.com/s/K3JFUIKYfO4hrqLA-4BqfA?utm_source=androidweekly.io&utm_medium=website

flyer0402 commented 4 years ago

https://mp.weixin.qq.com/s/cm349YsZZzO9aBaJgA7-JA?utm_source=androidweekly.io&utm_medium=website android 模拟器

flyer0402 commented 4 years ago

systrace查看Binder 锁竞争分析 https://androidperformance.com/2019/12/06/Android-Systrace-Binder/?utm_source=androidweekly.io&utm_medium=website

高ye: https://www.zhihu.com/people/gracker/posts 作者知乎论坛 https://juejin.im/user/557b0590e4b052e031453d76/shares 作者掘金论坛

skia原理 https://blog.csdn.net/hgl868/article/details/45583667

flyer0402 commented 4 years ago

ZARM SWAP https://www.jianshu.com/p/0c8bcd7bd1fb

flyer0402 commented 4 years ago

有赞 Android 编译进阶之路——全量编译提效方案 https://mp.weixin.qq.com/s/lPNXk4SyuhhSOi1APMsgDg?utm_source=androidweekly.io&utm_medium=website

flyer0402 commented 4 years ago

图片 https://www.curious-creature.com/

flyer0402 commented 4 years ago

/dev/binder、/dev/vndbinder、/dev/hwbinder

https://blog.csdn.net/yangwen123/article/details/79854267

/system/libhidl/transport/include/hidl/HidlTransportSupport.h hidl 服务注册 https://blog.csdn.net/shift_wwx/article/details/86514997

flyer0402 commented 4 years ago

Android分区 https://blog.csdn.net/sunweixiang1002/article/details/80923784

flyer0402 commented 3 years ago

android cpu 内存调试 http://www.360doc.com/content/14/0811/10/18578054_400973582.shtml adb bugreport > xxx.log 如果失败,一般是权限问题:setenforce 0 https://blog.csdn.net/cs729298/article/details/81906375 strace使用 https://www.jianshu.com/p/84e20b38d43c bugreport日志分析

https://www.jianshu.com/p/18f16aba79dd 例子 https://www.jianshu.com/p/62d1af61d73f 性能优化

https://blog.csdn.net/pxy139/article/details/96733097 native内存泄漏分析实例 https://www.imooc.com/article/252500

https://www.cnblogs.com/wainiwann/p/6065798.html glreadpixels

https://www.jianshu.com/p/dd0b38832346/ gralloc与graphicbuffer

https://blog.csdn.net/cigogo/article/details/90548079 native内存泄漏工具libc_debug

flyer0402 commented 3 years ago

画图工具: ProcessOn https://www.processon.com/;jsessionid=672F14D7B62D0FC0655834D9171AC3D3.jvm1 Draw.io https://github.com/jgraph/drawio-desktop/releases/tag/v12.9.3

surfaceflnger: https://www.jianshu.com/p/9dac91bbb9c9

高德native内存泄漏检查方法 https://www.cnblogs.com/amap_tech/p/11199813.html

hal实践 http://www.max-shu.com/blog/?p=1075

binder死亡通知源码细节 https://xiaozhuanlan.com/topic/7583140269

Android 合成 https://www.jianshu.com/p/824a9ddf68b9?utm_source=oschina-app

Anr抓trace方法 java:adb shell kill -3 pid (源码也是这么生成trace文件) native: adb shell debuggerd –b pid

flyer0402 commented 3 years ago

h/w composer state: h/w composer present and enabled result.appendFormat(" h/w composer %s and %s\n", hwc.initCheck()==NO_ERROR ? "present" : "not present", (mDebugDisableHWC || mDebugRegion || mDaltonize || mHasColorMatrix) ? "disabled" : "enabled"); 只要init成功,就是present;而是否enable则由众多debug选项决定. mDebugDisableHWC我们很熟悉,就是我们在开发者选项里勾选的禁用硬件叠加. mDebugRegion是开发者选项里面的开发者选项中的显示屏幕更新,也可以通过属性debug.sf.showupdates来控制. mDaltonize被1014号命令控制,暂时先不研究. mHasColorMatrix被1015号命令控制.

上述四个选项有任意一个打开,就composer的状态就会使disable.

https://blog.csdn.net/xct841990555/article/details/89111581 (dumpsys SurfaceFlinger)

https://www.jianshu.com/p/824a9ddf68b9 (Android P 图形显示系统(一)硬件合成HWC2) https://blog.csdn.net/vviccc/article/details/104787749 理解DisplayDevice https://www.codeleading.com/article/60252106046/ Android P图形架构之三屏异显实现 https://blog.csdn.net/liumf2005/article/details/25214623?locationNum=10&fps=1 OpenGL ES EGL & TLS(线程局部存储) & G3D

http://clmirror.storage.googleapis.com/index.html codelabs网址 https://mp.weixin.qq.com/s/dFAVVXUu1FkY7taZbNKCjQ?utm_source=androidweekly.io&utm_medium=website (如何通过 Systrace 查看 GPU 渲染花费的时间?) https://www.jianshu.com/p/64496066c4c3 用Glide加载Gif导致的卡顿,优化方法 https://www.jianshu.com/p/af5858c06d5d (SurfaceFlinger中Buffer的创建与显示)

https://www.jianshu.com/p/27ba2759b221 (Battery Historian 耗电分析) https://mp.weixin.qq.com/s/GE3uXM5h_EfmzzQ3n9nCCA?utm_source=androidweekly.io&utm_medium=website (记一次简单的耗电发热问题排查过程) https://blog.csdn.net/scau_zhangpeng/article/details/80919277 (Battery Historian安装) https://blog.csdn.net/sinolover/article/details/94380049 (ubuntu安装chrome)

https://www.jianshu.com/c/ee975ac51200 (Android 专题) https://www.jianshu.com/p/72494773aace (Android开发人员不得不收集的工具代码)

https://source.android.google.cn/devices/tech/perf/pgo android代码差异 https://developer.android.google.cn/about/versions/11 aosp版本差异

https://www.jianshu.com/p/9f379c5ff66e CPU与GPU工作流程 https://www.jianshu.com/p/cf4455021fd5 hwc合成模式

flyer0402 commented 3 years ago

1.device/ecarx/IHU509G/device.mk +#PRODUCT_PACKAGES += EcarxCsdUpdate +PRODUCT_PACKAGES += EcarxCsdUpdateUtil +PRODUCT_BOOT_JARS += EcarxCsdUpdateUtil +PRODUCT_PACKAGES += ecarx.csdupdate.util +PRODUCT_BOOT_JARS += ecarx.csdupdate.util +PRODUCT_PACKAGES += android.hardware.csd_update-V1.0-java +PRODUCT_BOOT_JARS += android.hardware.csd_update-V1.0-java +PRODUCT_PACKAGES += ecarx.csdupdate.util.impl +PRODUCT_BOOT_JARS += ecarx.csdupdate.util.impl 2.预编译成jar,将system/framework下的jar拷贝到此目录 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ecarx.csdupdate.util LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := ecarx.csdupdate.util.jar LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_MODULE_SUFFIX := .jar LOCAL_CERTIFICATE := platform include $(BUILD_PREBUILT)

Android动态加载之ClassLoader详解 https://www.jianshu.com/p/a620e368389a

Android动态加载基础 ClassLoader工作机制 https://segmentfault.com/a/1190000004062880

热修复 https://blog.csdn.net/Chen_dSir/article/details/109843412 https://www.cnblogs.com/popfisher/p/8543973.html (热修复实现方案)

java反射原理图 https://blog.csdn.net/a745233700/article/details/82893076

flyer0402 commented 3 years ago

Linux线程挂掉对整个进程的影响 https://blog.csdn.net/paradox_1_0/article/details/105515319

关于单例模式实现 https://www.cnblogs.com/sunchaothu/p/10389842.html

Android 使用了先进的内存分配和垃圾收集,先进在哪里,要搞清楚

flyer0402 commented 3 years ago

Android MultiMedia框架完全解析 - ACodec详细解析 https://www.pianshen.com/article/9358313389/

人工智能、机器学习和深度学习的书籍 https://www.zhihu.com/question/57770020

Java里一个线程调用了Thread.interrupt()到底意味着什么 https://www.zhihu.com/question/41048032

你会在实际工作中使用 rxjava 吗 https://www.zhihu.com/question/53151203

系统调试 https://blog.csdn.net/zhangbijun1230/article/details/79776599

flyer0402 commented 3 years ago

Android基础开发实践:如何分析Native Crash https://cloud.tencent.com/developer/article/1192001

flyer0402 commented 3 years ago

android::Thread std::thread pthread_create 使用和区别 https://blog.csdn.net/armwind/article/details/52627316 https://blog.csdn.net/vviccc/article/details/91043132 分析mCanCallJava为true的目的 它创建的新线程将: 在调用用户线程函数之前会attach到JNI环境中,这样线程函数就可以直接使用JNI函数了。 线程函数退出后,它会从JNI环境中detach,释放一些资源。 同时,进程退出前,dalvik虚拟机会检查是否有attach了,但是最后未detach的线程如果有,则会直接abort(这样并不好),如果关闭JNI check选项,就不会做这个检查,但这个检查和资源释放有关系。建议还是重视JNIcheck。如果直接使用POSIX的线程创建函数,那么凡是使用过attach的,最后就都需要detach!保证资源被正常释放。

flyer0402 commented 3 years ago

自线程更新ui,windowmanager.addview放在自线程实现,viewrootimpl在此过程中创建,即在自线程new viewrootimpl出来,然后更新ui也在此线程即可。 https://blog.csdn.net/qq_28210079/article/details/109469761

详解内部类 https://www.cnblogs.com/chenssy/p/3388487.html

广播发送和接收 https://www.cnblogs.com/linghu-java/articles/10307915.html

fcm https://www.jianshu.com/p/b50f5aee4403

packagemaangerservice以及权限管理 https://blog.csdn.net/yiranfeng/article/details/103941371 https://blog.csdn.net/lmpt90/article/details/92796960

flyer0402 commented 3 years ago

Android 源码下载源. https://lug.ustc.edu.cn/wiki/mirrors/help/aosp/ https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ https://www.zhihu.com/question/20738613 http://aospxref.com/ 据说速度快 https://zhuanlan.zhihu.com/p/234390474 android-9.0.0_r42
android-9.0.0_r41
android-9.0.0_r40 android-11.0.0_r3 android-10.0.0_r45

flyer0402 commented 3 years ago

performTraversals过程 https://xyang.blog.csdn.net/article/details/80931556 https://blog.csdn.net/xxzxxzdlut/article/details/103205047 wms

flyer0402 commented 3 years ago

lambda表达式,语法描述 https://www.cnblogs.com/jimodetiantang/p/9016826.html

flyer0402 commented 3 years ago

杂谈Android线程优先级 https://blog.51cto.com/14557669/2479722