![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术总结
文章平均质量分 77
小二哥m
这个作者很懒,什么都没留下…
展开
-
androidQ/R lmkd介绍
一、简介lmkd(Low Memory Killer Daemon)是低内存终止守护进程,用来监控运行中android系统内存的状态,通过终止最不必要的进程来应对内存压力较高的问题,使系统以可接受的水平运行。二、背景之前Android 使用内核中的 lowmemorykiller 驱动程序来监控系统内存压力,该驱动程序是一种依赖于硬编码值的严格机制。从内核 4.12 开始,lowmemorykiller 驱动程序已从上游内核中移除,用户空间 lmkd会执行内存监控以及进程终止任务。用户空间 lmkd原创 2020-11-28 15:04:55 · 19326 阅读 · 7 评论 -
Zygote pre-fork线程池源码分析
前言在Android Q上,google为了加快应用的启动速度。在zygote fork阶段,采用了线程池的方式,来加快fork的过程。首先,如果让我们自己做,肯定会选择java的线程池模型,先创建N个进程,当需要fork的时候,取出来一个来bindapplication,同时进行补充进程池。但是google的做法并不是这样,google的思路是:**同时fork N个进程,监听同一个socket fd,当收到消息的时候,只有一个进程会被唤醒,来处理这个消息。**google利用了这样的一个机制,来进原创 2021-01-25 13:00:20 · 882 阅读 · 0 评论 -
android dumpsys命令源码分析
初始化* frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java* ServiceManager.addService("meminfo", new MemBinder(this), /* allowIsolated= */ false, DUMP_FLAG_PRIORITY_HIGH);ServiceManager.addService("gfx原创 2020-09-28 15:32:52 · 1771 阅读 · 0 评论 -
android synchronized原理分析(二) Monitor
public class SyncLock { public void testBolokCode(){ Thread thread1 = new Thread(new Runnable() { @Override public void run() { synchronized (SyncLock.this){ try{原创 2020-07-30 21:24:31 · 1427 阅读 · 0 评论 -
android synchronized原理分析(一) java HotSpot
public class SyncLock { public void testBolokCode(){ synchronized (SyncLock.this){ } } public synchronized void testBolokMethod(){ } public static synchronized void testStaticBolokMethod(){ }}执行javac SyncLock.java原创 2020-08-01 14:12:52 · 620 阅读 · 0 评论 -
android性能分析之内存优化
命令android性能分析之常用命令查看系统内存状态cat /proc/meminfoadb shell procrank (pid)adb shell dumpsys meminfo/cpuinfo <package_name>/pid内查看本地层程序top -t -m 5 -n 2 查询Cpu/内存的基本使用adb shell cat /proc/buddyinfoadb shell cat /proc/meminfo // 查看更加详细的内存信息adb shell c原创 2021-01-25 13:00:30 · 535 阅读 · 0 评论 -
AndroidP/Q/R/S编译系统
Android编译环境的初始化过程,在编译环境初始化完成后,我们就可以用m/mm/mmm/make命令编译源代码了。当然,这要求每一个模块都有一个Android.mk文件。Android.mk实际上是一个Makefile脚本,用来描述模块编译信息。Android编译系统通过整合Android.mk文件完成编译过程。mmm命令的编译过程,需要依赖会make命令全部模块编译完成,下面使用编译mmm.........原创 2020-05-11 18:15:47 · 35119 阅读 · 13 评论 -
Android Hidl笔记
HAL 类型在 Android 8.0 及更高版本中,较低级别的层已重新编写以采用更加模块化的新架构。搭载 Android 8.0 或更高版本的设备必须支持使用 HIDL 语言编写的 HAL,下面列出了一些例外情况。这些 HAL 可以是绑定式 HAL 也可以是直通式 HAL。Android R 也支持使用 AIDL 编写的 HAL。所有 AIDL HAL 均为绑定式。绑定式 HAL。以 H...原创 2020-04-16 12:21:35 · 2956 阅读 · 0 评论 -
Openssl android编译静态库
准备编译脚本到 https://github.com/leenjewel/openssl_for_ios_and_android 下载别人写好的编译环境配置脚本build-openssl4android.sh 中,默认的OpenSSL 版本是 openssl-1.1.0f,改成最新的即可。LIB_NAME=“openssl-1.1.0f”脚本会自动下载 openssl 1.1.1e,需要...原创 2020-01-17 17:23:29 · 926 阅读 · 0 评论 -
Java笔记-JNI各种签名
生成java方法的JNI签名javap -p -s org.jemen.test.Test签名:类描述符开头的’L’与结尾的’;'必须要有;数组描述符,开头的’['必须有;方法描述符规则: “(各参数描述符)返回值描述符”,其中参数描述符间没有任何分隔符号基本类型签名引用数据类型的转换...原创 2020-01-02 17:55:37 · 176 阅读 · 0 评论 -
安全策略
app加固1、混淆策略代码混淆、资源混淆2、应用的签名校验在应用application中校验app签名,如果不正确测退出3、反调试异常检测防止so和应用被调试4、应用的加固策略a、dex加固:dex加壳、函数抽取、指令抽取、字符串加密b、so加固:section加密、函数加密FOTA加固对FOTA包做签名运算,然后对签名做加密对FOTA包整体做加密,然后在计算签名(...原创 2019-12-02 11:01:14 · 267 阅读 · 0 评论 -
APP加固总结
dx工具:转换class未dex,在build-tools/*/dx目录下执行命令 : dx --dex --output=Hello.dex Hello.class原创 2019-11-29 16:46:00 · 1923 阅读 · 0 评论 -
Selinux Rule
Selinux Code:platform/external/sepolicy查看Selinux状态adb shell getenforceroot@E2303:/ # getenforceEnforcingroot@SGP321:/ # getenforcePermissive关掉Selinux, 查看问题是否和Selinux相关device/qcom/xxx/Bo...原创 2019-10-27 14:44:56 · 546 阅读 · 0 评论 -
repo使用
Repo使用命令repo init –u <URL> [<OPTIONS>]初始化命令-u: 指定连接到的manifest仓库地址-m: 选择仓库中某个manifest文件,如果没有设置,就使用default.xml-b: 选择一个maniest仓库中的一个特殊的分支或修正版本repo init -u “ssh://zhangzhihao@172.30.3....原创 2019-10-22 09:51:59 · 1198 阅读 · 0 评论 -
android studio ndk使用
下载:NKD-build在Android studio3.0版本以后就不能再用了,必须使用CMkeSettings -> Appearance & Behavior -> System Settings -> Android SDK ->SDK Tools 勾选 NDK,CMake,LLDB配置工具:javahProgram: JDKPathJDKPath...原创 2019-06-11 21:08:49 · 3660 阅读 · 0 评论 -
Android GPS模块总结
重要概念星历表(英文为Ephemeris):星历表本来是用来记录天体特定时刻的位置的。而在GNSS中,星历表则记录了卫星的一些运行参数,它使得我们通过星历表就可以计算出任意时刻的导航卫星的位置和速度。星历表包含了非常详细的卫星轨道和位置信息,所以其数据量较大,传输时间较长。为了克服这个问题,人们设计了星历表的简化集,即历书。历书(英文为Almanac):历书也包含了卫星的位置等相关信息,不过它...原创 2019-06-12 09:49:08 · 5435 阅读 · 0 评论 -
热修复和动态加载
热修复目前存在比较好的解决方案是热修复技术,即生成差一补丁包后,直接将更新补丁上传到云端,此时App从云端下拉补丁直接应用生效,即直接在用户已安装的程序中修复bug,准确而言它是一个亡羊补牢的措施。比较有代表性的的App是阿里系的优酷和支付宝,腾讯系的微信,两者使用的都是自行研发的方案。可解决的典型问题:刚发布的应用出现闪退、ANR等bug,及时修复 。及时推送一些小的功能给用户使...原创 2019-07-01 13:55:43 · 497 阅读 · 0 评论 -
Android编译环境搭建
修改/etc/apt/source.list,添加源deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiversedeb...原创 2019-08-26 18:32:59 · 1206 阅读 · 0 评论 -
C++11总结
nullptr空指针由新关键字nullptr[④]表示,类似于Java中的null。Raw字符串Raw是为了解决正则表达式里那些烦人的转义字符\而提供的解决方法在C++中,如果使用转义字符串来表达,则变成(’(?:[ˆ\\’]|\\.)∗’|"(?:[ˆ\\"]|\\.)∗")|。使用转义字符后,整个字符串变得很难看懂了。如果使用Raw字符串,改成R"dfp((’(?:[ˆ\’...原创 2019-09-05 21:03:15 · 2781 阅读 · 0 评论 -
android逆向总结
签名signapk.jar是Android源码包中的一个签名工具。 代码位于Android源码目录下的/build/tools/signapk/SignApk.java文件中,源码编译后可以在/out/host/linuxx86/framework目录中找到它。 Android源码中提供的签名文件testkey.pk8与testkey.x509.pem,它们位于Android源码的build/t...原创 2019-09-22 12:25:46 · 143 阅读 · 0 评论 -
Android Studio签名配置方法
签名配置方法一:通过项目配置界面配置签名1)点击 File —— Project Structure… 进入项目配置界面2)选择 app —— Singing —— Add 添加签名相关信息;3)选择 Build Types —— Singing Config 创建签名配置方法二:通过 build.gradle 文件配置签名1)在项目app目录下的build.gradle里配...原创 2019-06-13 11:42:40 · 16495 阅读 · 0 评论