
android
好吧我随便改的
抓住最后的机会~
展开
-
Android进程间文件描述符传递原理-初
Android进程间文件描述符传递原理-初1.进程表2.进程控制块状态存储文件3.文件描述符4.进程间共享文件描述符a.binder驱动将调用进程传入的文件描述符使用fget内核函数后去file对象b.binder驱动在被调用进程中创建新的文件描述符与该file对象关联c.binder修改调用进程传入的文件描述符,改为该被调用进程中创建的新的文件描述符1.进程表操作系统为了了一张表格,即进程表,每个进程占用一个表格项。2.进程控制块每个进程在进程表中占有的表格项目被称为进程控制块,进程控制块中的内容原创 2020-11-28 21:56:38 · 486 阅读 · 0 评论 -
【Android】dumpsys activity package $packagename
具体作用后续跟进检讨补全原创 2020-08-12 16:12:32 · 369 阅读 · 0 评论 -
Android AIDL中支持的数据类型
AIDL支持的数据类型分为如下几种:八种基本数据类型:byte、char、short、int、long、float、double、boolean String,CharSequence 实现了Parcelable接口的数据类型 List 类型。List承载的数据必须是AIDL支持的类型,或者是其它声明的AIDL对象 Map类型。Map承载的数据必须是AIDL支持的类型,或者是其它声明的AIDL对象链接:https://www.jianshu.com/p/29999c1a93cd...转载 2020-08-05 16:39:42 · 2110 阅读 · 0 评论 -
Android原生壁纸加载日志
05-01 00:00:01.049 3008 3008 V WallpaperManagerService: bindWallpaperComponentLocked: componentName=ComponentInfo{com.android.systemui/com.android.systemui.ImageWallpaper}05-01 00:00:01.049 3008 3008 V WallpaperManagerService: Binding to:ComponentInfo...原创 2020-07-22 10:27:01 · 386 阅读 · 0 评论 -
[Android]系统启动时序
最近公司的群里面有大佬分享了一张自己总结的系统启动时序,觉得画的非常清晰简练,因此在这里分享一下:原创 2020-03-11 13:38:09 · 728 阅读 · 0 评论 -
《深入解析Android虚拟机》Dalvik和Art基础:读书笔记
1.Dalvik虚拟机和普通java虚拟机的区别: a.dalvik虚拟机基于寄存器,java虚拟机基于栈 b.dalvik会通过dx将所有的class打包到dex文件,普通的java虚拟机将所有的class打包到jar文件 c.dalvik和普通java虚拟机使用的字节码不同,即class文件的格式不同,无法互通2.每一个Android应用都运行在一个Dal...原创 2020-01-31 22:29:15 · 365 阅读 · 0 评论 -
jni编写时的教训(函数签名不对应)
最近由于项目结构上的调整原先我的模块位于APP层,通过aidl,hidl调用到native层的c++的服务的接口,用于更新EMMC上的文件内容,需要改为C++服务更新EMMC上文件内容的代码封装成jni的so库,由我的模块去调用。由于jni仓库是由我去创建,因此,我需要创建jni仓库,增加Android.mk,同时添加cpp文件,完成jni的so中的接口函数的空实现以及native方法...原创 2020-01-20 11:32:14 · 498 阅读 · 0 评论 -
Android原生壁纸设置时序
最近在阅读Android原生的壁纸设置流程,查找可以确定WallpaperManagerService已经完成壁纸设置的信号或者通知,并且整理出设置壁纸中的fail safe流程,因此,自己一边阅读代码一边整理了两张主要的壁纸设置的时序,在此保存...原创 2019-11-28 20:51:04 · 476 阅读 · 0 评论 -
Android CE DE加密小结
1.全盘加密 数据在空闲的时候进行加密 每个设备只有一个用户可以被全盘加密进行保护 那个用户在做任何工作前必须登录 2.文件级别加密 使用ext4文件系统 使用AES-256方式对文件内容进行加密 文件名也需要进行加密 文件级别加密的性能要稍微好于全盘加密f2fs文件系统用于支持nand flashDE(device en...原创 2019-10-15 12:28:46 · 5454 阅读 · 0 评论 -
Android签名概述
一、Android签名概述我们已经知道的是:Android对每一个Apk文件都会进行签名,在Apk文件安装时,系统会对其签名信息进行比对,判断程序的完整性,从而决定该Apk文件是否可以安装,在一定程度上达到安全的目的。给定一个Apk文件,解压,可以看到一个META-INFO文件夹,在该文件夹下有三个文件:分别为MANIFEST.MF、CERT.SF和CERT.RSA。这三个文件分别表征以下...转载 2019-09-17 19:56:24 · 183 阅读 · 0 评论 -
Android墓碑以及ANR跟踪文件路径
ANR:/data/anr/墓碑:/data/tombstones/转载 2019-08-28 18:20:48 · 3631 阅读 · 0 评论 -
AndroidStudio内各个模拟器的安装位置
As中,下载的本地模拟器的位置位于:~/.android/avd目录下当该目录被删除后,打开AndroidStudio的AVD,会发现所有的下载过的模拟器都没有了原创 2019-08-01 12:02:37 · 3940 阅读 · 0 评论 -
Android所有系统权限定义的文件
所有的android系统定义的Permission都在资源文件中,具体路径:/frameworks/base/core/res/AndroidManifest.xml这个文件中还包含了系统ACTION,系统Service,Activity等原创 2019-07-10 19:10:42 · 730 阅读 · 0 评论 -
android c++层获取系统属性的方法
今天在阅读init进程代码中的ueventd.cpp中看到了具体的做法,在此记录:#include <android-base/properties.h>auto hardware = android::base::GetProperty("ro.hardware", "");...原创 2019-04-29 12:19:08 · 4827 阅读 · 1 评论 -
创建新用户时PackageManager的动作
PackageManagerService.createNewUser Settings.createNewUserLI for(PackageSetting ps : packages) { ps.setInstalled(ps.isSystem, userHandle); } installer.createApp...原创 2019-03-12 14:35:28 · 398 阅读 · 0 评论 -
android 编译时显示Android.bp,Android.mk中所有target项目的编译细节进度
修改/build/soong/ui/build/ninja.go将其中的这行:cmd.Environment.Set("NINJA_STATUS", "[%p %f/%t] ")改为cmd.Environment.Set("NINJA_STATUS", "\n[%p %f/%t] ")原创 2019-03-20 12:18:13 · 1441 阅读 · 0 评论 -
android APP调用系统方法
一般来说,有些系统方法是不提供在SDK中的,这种情况下,需要把app的源码放到系统源码的目录下编写Android.mk进行编译,使其能访问到@hide的系统方法。但是,即使编译通过,在系统中运行的时候,仍然会碰到权限被拒绝的问题。昨天,我在APP的service中调用了registerBroadcastAsUser,这是一个隐藏的系统方法,此时,需要在Android.mk中加入LOCAL_...转载 2018-10-23 10:05:53 · 553 阅读 · 0 评论 -
Android(8.0treble)多用户问题整理
多用户问题整理1.模块图上的虚线和实现分别的含义A:虚线代表的是模块间的IPC调用,包括binder,socket,intentB:实现代表的就是直接的函数调用或者消息通知(不包括intent,指的是MessageQueue)2.每个用户下的package list是否一样package.list文件位置在/data/system/目录下,和用户独立。3.packages.list 的...原创 2018-11-23 21:25:09 · 2065 阅读 · 0 评论 -
Andrid WiFi响应多用户切换
由于管理wifi的service(WifiService)是属于java framework的systemserver中的服务,继承于 SystemService。因此,WIfiService也可以在用户切换的过程中,由AMS回调onStartUser和onSwitchUser。可以看到WifiService实现了onSwitchUser函数@Overridepublic void onSw...转载 2018-12-04 17:01:18 · 307 阅读 · 0 评论 -
UserDataPrepare创建系统以及应用APP的ce和de目录的流程
入口在UserDataPrepare的 prepareUserData函数void prepareUserData(int userId, int userSerial, int flags) { synchronized (mInstallLock) { final StorageManager storage = mContext.getSystemService(S...原创 2018-11-30 15:27:23 · 3683 阅读 · 0 评论 -
android新用户会创建的目录
新建一个用户主要会创建和加密如下目录system:ce:/data/system/users/${userid}/data/misc/user/${userid}/data/system_ce/${userid}/data/misc_ce/${userid}/data/media/${userid}UserDataPath:0用户:/data/data/非0用户:/da...原创 2018-12-03 15:53:42 · 1932 阅读 · 0 评论 -
Android平台生成二维码(by google.zxing)
查了大部分的资料,发现android平台下生成二维码的例子都是使用谷歌的zxing类,因此仿照某一个帖子编写了一个demo进行测试,仿照的帖子:https://blog.csdn.net/myname_kk/article/details/77649477例子中主要用到了BitMatrix,QRCodeWriter两个类,BitMatrix类对象用来存放文本转换好的01二进制数组,QRCode...转载 2018-12-17 18:08:12 · 307 阅读 · 0 评论 -
AndroidManifest.xml作用
今天在看到一篇博客是对于博主对于AndroidManifest.xml文件的作用的理解深感赞同。AndroidManifest.xml文件就是在安装的时候用来给PackageManagerService进行解析,分析出这个APK的package,application以及四大组件的信息,分别对应了PackageInfo,ApplicationInfo,ActivityInfo,ServiceIn...转载 2018-12-28 12:24:53 · 1445 阅读 · 0 评论 -
android代码获取当前package的de目录
获取de目录首先要获取DE_CONTEXTContext deContext = getApplicationContext().createDeviceProtectedStorageContext();然后通过DE_CONTEXT获取de目录String sDePath = deContext.getDataDir().toPath().toString(); ...转载 2018-12-29 16:39:17 · 826 阅读 · 0 评论 -
Android存储空间知识整理
Android的文件存储分为内部存储和外部存储1.内部存储位于一个很特殊的位置,在内部存储中的文件只能被自己的应用访问到,每个应用的文件和数据都存储在内部存储中与自己应用包名相同的文件目录中。2.当应用卸载后,其位于内部存储中的数据就被清除了。3.app直接可以互相访问对方在内部存储中的数据,前提是要直到对方app的完整包名。4.内部存储是系统本身和系统应用存储数据的重要位置,一旦内部存储...转载 2019-01-21 14:46:50 · 388 阅读 · 0 评论 -
Android存储加密
文件系统是一种组织存储设备上的数据和元数据的方式将文件系统和存储设备联系起来的方式就是挂载(mount)全盘加密)1.YAFFS文件系统的eMMC卡无法支持全盘加密2.全盘加密使用AES-128算法进行加密3.主要有四种加密方式: 默认 PIN码 密码 解锁图案4.首次启动系统会创建一个随机128位主密码,然后使用默认密码(为default_pas...转载 2019-01-31 15:29:34 · 1417 阅读 · 0 评论 -
Android系统删除用户时的清理动作
删除用户时最后一步是清理用户的数据,代码在UserManagerService中的removeUserStateLocked函数该函数的执行步骤分为如下几步:1. PackageManagerService执行清理,其中最重要的一个动作是通过Installer调用native层的installdnativeservice的reuser该方法会执行如下几个步骤a.删除data_pat...原创 2019-02-05 17:04:17 · 1046 阅读 · 0 评论 -
linux系统/proc目录下的子目录功能
/proc是一个虚拟文件系统,其下面的文件不是真实存在的,不占用实际存储空间。/proc/cmdline:显示内核启动的命令行。/proc/cpuinfo:显示系统cpu的信息。/proc/filesystems,显示当前注册了的文件系统列表,nodev表示为虚拟文件系统。/proc/interrupts:显示当前系统的中断信息./proc/ioports:被占用的输入/输出地址范围列表...转载 2019-02-11 14:00:27 · 389 阅读 · 0 评论 -
android系统清理应用内部存储和外部存储
一个android应用的数据有两个存储路径:内部存储,外部存储内部存储:/data/users/${userid}/${packagename}/外部存储:/storage/emulated/${userid}/清理内部存储:ActivityManager类提供了clearApplicationUserData方法让一个应用可以任意清除当前用户下的其他应用的内部存储数据,该方法需要ro...原创 2019-03-02 17:04:10 · 701 阅读 · 0 评论 -
android java代码输出调用堆栈
RuntimeException e = new RuntimeException("scheduleTraversalLocked is here");e.fillInStackTrace();Log.d(TAG, "scheduleTraversalLocked ", e);转载 2018-10-17 10:54:22 · 669 阅读 · 0 评论