
android-framework
文章平均质量分 92
lyf5231
Work with all of you to build the world we want!
展开
-
python—android编译中build_image.py分析
最近在学习python,基础知识学习了一遍。我的学习习惯是:了解了基础语法后,去阅读开源代码(掌握优秀程序员的一些写代码习惯和手法),最后结合项目实践,实践的过程对某些细节进行深化。 想起android编译系统中有一些python脚本,下面对build_image.py进行简单分析。编译系统中调用build_image.py生成系统镜像的target在build\core\Makefile中,#-原创 2017-02-24 12:57:34 · 6167 阅读 · 0 评论 -
seandroid 如何添加被denied的权限
security context policy rule 通过denied log添加policy rule security context /*When SEAndroid is enabled, the following occurs:a, All objects on the system are labeled with a security context.Objects原创 2016-04-12 10:16:41 · 6282 阅读 · 0 评论 -
android—调试命令service
在android中,可以利用service命令去做很多调试工作,例如service list命令显示系统当前所有在service manager注册的service,其命令具体使用如下,# serviceserviceUsage: service [-h|-?] service list service check SERVICE service cal原创 2016-02-23 15:21:57 · 3572 阅读 · 0 评论 -
android常用名词收集
AOSPStockNANDroidRom Mod FirmwareOTARoot Bootloader Fastboot recovery 持续学习,持续更新……AOSPAOSP stands for Android Open Source Project.StockStock Android is what Google provides in their Nexus devic原创 2015-10-28 09:11:28 · 1627 阅读 · 0 评论 -
android—匿名binder
前面的一篇文章《android—binder进程间通讯流程分析》 分析过,service一般都是需要先去service manager注册后,然后才能去使用。而匿名binder就是没有去service manager注册的service,既然没去注册,那么内核中就没有相应的binder_node和binder_ref结构,那么如何使用?下面以BufferQueue的mGraphicBufferAll原创 2016-02-19 12:38:27 · 6550 阅读 · 0 评论 -
android—binder进程间通讯流程分析
进程 binder的c实现 service manager 注册service client 使用service binder是android的基础,是学习android的重中之重,理解binder的运行机制,对阅读和理解android framework源代码非常有帮助,关于如何学习binder,建议首先不要去关注binder内核驱动的实现,先学会上层如何去使用,在熟悉后再进一步结原创 2016-02-18 15:11:41 · 2436 阅读 · 0 评论 -
android—如何添加一个系统服务
c中添加service java添加service前面分析过binder的实现流程,binder的实现包含了java和c++两部分,那么应该如何去添加一个service? c++中添加service下面以SurfaceComposer这个service为例, ① 首先提供接口文件ISurfaceComposer.h//frameworks\native\include\gui\ISurfaceC原创 2016-02-18 17:33:36 · 6009 阅读 · 0 评论 -
android进程间传递文件描述符原理
linux打开文件过程android binder传递文件描述符在linux中,进程打开一个文件,返回一个整数的文件描述符,然后就可以在这个文件描述符上对该文件进行操作。那么文件描述符和文件到底是什么关系?进程使用的是虚拟地址,不同进程间是地址隔离的,如何在两个进程中传递文件描述符,然后指向同一文件(binder传递文件描述符)?linux打开文件过程下图是linux内核中打开文件的结构体之间的关原创 2016-02-15 16:44:30 · 3862 阅读 · 1 评论 -
Parcel相关
java中的serialization Parcel的使用 AIDL中的inoutinout 学习android源代码,首先需要打好基础。binder是android的基础,而Parcel又是binder的基础。 java中的serialization java provides a mechanism, called object serialization where an object原创 2016-01-26 21:48:00 · 2298 阅读 · 0 评论 -
error: only position independent executables (PIE) are supported
PIE, position independent executables.android 4.1上开始支持PIE,所以4.1之前的版本不能使用PIE的executable,而之前开发的app一般都是非PIE的。Android 4.1 PIE (Position Independent Executable) support Read-only relocations原创 2016-04-12 17:18:51 · 9267 阅读 · 0 评论 -
HandlerThread的使用
为了方便在一个新线程中处理消息,android提供了HandlerThread,Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.其使用步骤如下,假设原创 2016-04-26 18:31:12 · 671 阅读 · 0 评论 -
android—进程间通信之Messenger
Messenger类 Messenger类利用Binder实现进程间通信,public final class Messenger implements Parcelable { private final IMessenger mTarget; /* server端Messenger构造函数,输入为一个Handler,用来处理消息 */ public Mes原创 2016-10-18 14:53:41 · 907 阅读 · 0 评论 -
android—给app指定网络接口原理分析
java层利用JNI和C库进行交互 android支持多种网络类型(WAN口),例如WIFI、3G等。目前android的实现是,WIFI和3G只能同时存在一个(优先级),例如当WIFI连接后,数据通路就从3G切换到WIFI。对上层app而言,这时候数据通路也就从3G切换到WIFI上。考虑一个特殊的需求,某app只能通过WIFI接口去传输数据,是否可以实现?较新版本的andro原创 2016-10-13 11:29:03 · 13997 阅读 · 2 评论 -
android—init.rc中on property的触发
init中的处理过程 设置属性时发生了什么 在前面的文章《android—init.rc的读取 》中主要介绍了init.rc文件的读取,本文主要分析init针对on property类型的属性触发的原理。 init中的处理过程 在init.c的main()中,int main(int argc, char **argv){ //添加property相关的action queu原创 2016-09-22 10:34:31 · 12082 阅读 · 0 评论 -
android—init.rc的读取
initrc的构成 initrc的读取 initrc中service和action下命令的执行 结构体关系图 init.rc的构成 在系统启动时,内核启动完成后会去启动init程序,在init中会去解析init.rc文件。/* ---system/core/init/init.c--- */int main(int argc, char **argv){ //将init.rc中原创 2016-09-21 17:48:24 · 3843 阅读 · 0 评论 -
android—init进程如何重启service
在《android—init.rc的读取》中介绍过,init进程会启动很多native的service,这些service如果不是oneshot的,当service出现异常挂掉后,init需要将其重新启动起来,那么具体是如何操作的?其实主要是借助了信号和socket来实现。在init的main()函数中,首先进行了signal相关的初始化,设置了init对SIGCHLD(native的service原创 2016-09-23 11:27:45 · 3952 阅读 · 0 评论 -
常用网址汇总
Android oracle JNI文档 高通android侧代码 Linux Kernel 持续更新Android oracle JNI文档 oracle的JNI官方文档 http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html高通android侧代码 https://us.codeaurora.原创 2016-04-18 15:14:42 · 975 阅读 · 0 评论 -
Keeping Your App Responsive(ANR)
It’s possible to write code that wins every performance test in the world, but still feels sluggish, hang or freeze for significant periods, or take too long to process input. The worst thing that can转载 2016-04-20 15:08:17 · 621 阅读 · 0 评论 -
Security Enhancements for Android
What is SE for Android Merge Status Getting Started Policy Addressing Hidden Denials Running the CTS External Tools 转自:http://seandroid.bitbucket.org What is SE for Android? Security Enhanc转载 2016-04-11 10:25:28 · 2748 阅读 · 0 评论 -
深入理解android卷1—java调用native代码
frameworks中关于media的代码 java和jni函数对应关系 SystemloadLibrary libmedia_jniso 最近在阅读深入理解android卷1,把一些重要的思路记录下来,当然是书中没有细述的一些东西,便于后续翻阅。该书中jni是借助media相关代码展开。frameworks中关于media的代码 build/core/pathmap.mk中hard code原创 2015-12-07 17:19:23 · 2727 阅读 · 0 评论 -
为何使用java反射机制
反射机制如何使用 android实例 android中一些代码都使用了java的反射机制,那么为什么要去使用反射机制? 反射机制如何使用 反射一般使用的方式如下,对于类A来说,假设其类名为classNameStringA,则 A a = (A)Class.forName(“classNameStringA”).newInstance(); 这和A a = new A(); 是一样的效果,那么原创 2016-01-07 09:57:10 · 2702 阅读 · 0 评论 -
android looper和handler
android中很多地方都能看到消息处理的代码,其实现主要借助looper和handler来完成。 在类looper的注释中,有最基础的消息处理使用方法: class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare原创 2016-01-06 16:12:44 · 591 阅读 · 0 评论 -
android编译分析之2—envsetup.sh
envsetupsh 执行lunch函数时发生了什么 check_product get_build_var 一般android编译时,会先执行下面的命令,source build/envsetup.shsource作用就是在当前bash环境下读取envsetup.sh,然后执行其中的命令。而envsetup.sh其实包含了很多的shell函数和一些命令,那么具体发生了什么? envse原创 2015-11-24 15:46:56 · 2478 阅读 · 0 评论 -
android编译分析之3—pathmap.mk
pathmap.mk就是集中定义path的地方,为了避免在Android.mk中的hard code,在这里hard code了一些目录路径。## A central place to define mappings to paths, to avoid hard-coding# them in Android.mk files.## TODO: Allow each project to原创 2015-11-24 15:58:28 · 2340 阅读 · 0 评论 -
android用户和AID
linux用户和组android UIDadb进入手机,执行ps,如下图所示,在USER一栏除了有system,root以外,还有类似media_rw,u0_a78这种名字,那么这些字符串到底代表了什么?linux用户和组android是在linux基础上构建的,而用户和组是linux中很重要的概念。linux系统允许多用户同时操作,用户和组主要是为了多用户同时工作来服务的。同时,linux还定义原创 2015-11-12 16:47:09 · 11169 阅读 · 0 评论 -
如何导出android系统中的某一分区
1. 先用mount命令看分区的具体信息 /dev/block/bootdevice/by-name/modem /firmware vfat ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=437,iocharset=iso8859-1,shor原创 2015-10-14 14:22:21 · 6329 阅读 · 0 评论 -
Android 5.1 AppOps总结
什么是AppOps涉及的类常用名词权限管理是如何触发的系统默认应用权限AppOps Policy 文件AppOpsService准备工作详细分析权限管理的触发应用层对权限的设置什么是AppOpsAndroid App在AndroidManifest.xml中申请了很多运行时需要获取的权限,例如 <uses-permission android:name="android原创 2015-10-14 14:24:59 · 21246 阅读 · 20 评论 -
android 安装内核module,提示Required key not available
最近在调试一个驱动的时候,用insmod加载.ko的时候,提示Required key not available,第一反应是签名有问题,内核模块也开始使用类似apk的签名了吗?查资料后果然是这样。这个问题可以说不算是android的问题,而应该是linux系统的问题,android本身就是个linux系统。下来一步一步分析问题的所在。内核配置内核从3.7后开始支持模块签名,这个功能使能以后,内核只原创 2015-10-21 15:38:26 · 9858 阅读 · 0 评论 -
kernel module signing
============================== KERNEL MODULE SIGNING FACILITY ==============================CONTENTSOverview.Configuring module signing.Generating signing keys.Public keys in the k转载 2015-10-21 15:48:28 · 5432 阅读 · 0 评论 -
android 5.1 如何添加一个系统service
Intro:This article explains how to add a new service and associated application APIs to Android Lollipop 5.Starting from a stub HAL object, we’ll tie Java application APIs to low level operations, expl转载 2015-10-15 09:24:03 · 2785 阅读 · 0 评论 -
android编译分析之4—product.mk
android编译系统中有两个概念product和device,product.mk是关于product相关的函数和变量。 下面的函数找到编译系统中的AndroidProducts.mk,在AndroidProducts.mk中一般都定义了具体产品相关makefile的文件。## Functions for including AndroidProducts.mk files# PRODUCT原创 2015-11-24 16:29:16 · 10887 阅读 · 0 评论 -
android编译分析之1—概述
编译前的准备 编译 最近在研究android的编译,顺着编译命令一步一步学习了具体makefile中的某些函数功能,记录了命令执行过程中系统到底发生了什么,对android系统编译的整体框架有个大概的了解。 在我认为,android相当于一个非常庞大的嵌入式软件,我们没有那么多的时间和精力去研究透彻android的方方面面,但是嵌入式软件的编译系统将会为我们提供整个软件的轮廓,软件由哪些部分组原创 2015-11-24 14:07:34 · 1388 阅读 · 0 评论 -
android常用同步类
原子操作android中原子操作的函数Mutex锁Autolock锁Condition variable原子操作对于CPU,最小执行单元为一条指令,单条指令在执行过程中是肯定不会打断的。 但是在两条指令之间是可以被打断的,比如中断。而原子操作就类似于单条指令,在原子操作执行期间,不会被其他外部事情打断。 例如对于++运算符, ++i; 执行这条指令大概包括三个步骤:原创 2016-01-06 15:02:02 · 924 阅读 · 0 评论 -
android中的sp和wp
C中指针存在的问题 最近在读深入理解android内核设计思想这本书,感觉作者写作思路清晰,从设计者的角度解释了很多问题,分析问题知其然又知其所以然,把看到的一些重要思路记录下来。 C++中指针存在的问题 我们知道,java中是没有指针这个概念的,而C/C++中在使用指针的时候,如果编程不规范,会造成很多不必要的麻烦,而android的sp和wp正是为了解决这些问题而设计的原创 2016-01-18 22:46:40 · 5128 阅读 · 0 评论 -
android编译分析之6—device.mk
首先定义了几个device相关的变量,_device_var_list := \ DEVICE_NAME \ DEVICE_BOARD \ DEVICE_REGIONdevice和product类似,也有很多的DEVICES,不同的device v通过DEVICES..v进行区分,其中为makefile的全路径。define dump-device$(info ==== $原创 2015-11-24 17:32:11 · 8261 阅读 · 0 评论 -
android编译分析之10—config.mk
config.mk可以说是android编译系统中关于配置环境的一个总的makefile,定义了编译环境的方方面面。首先,定义了一些变量和目录,# Only use ANDROID_BUILD_SHELL to wrap around bash.# DO NOT use other shells such as zsh.ifdef ANDROID_BUILD_SHELLSHE原创 2015-11-25 14:56:51 · 2766 阅读 · 0 评论 -
android编译分析之9—dumpvar.mk
dumpvar.mk,顾名思义就是打印某个变量的makefile,结构比较简单。 调用时,分为两种: 如果make的目标为dumpvar-TARGET_OUT这种类型,就是打印TARGET_OUT这个变量的值; 如果make的目标为dumpvar-abs-HOST_OUT_EXECUTABLES这种类型,就是要打印HOST_OUT_EXECUTABLES的绝对路径。 所以这个makefile原创 2015-11-25 16:34:14 · 1769 阅读 · 0 评论 -
android编译分析之7—product_config.mk
顾名思义,product_config.mk为产品相关的配置makefile。原创 2015-11-24 17:35:24 · 5298 阅读 · 0 评论 -
android编译分析之5—node_fns.mk
我理解这个makefile名字的意思就是node相关functions的函数,在android编译系统中,可以包含很多的产品,对于特定的一个产品都会定义一个makefile,例如对于aosp_arm而言,既是build/target/product/aosp_arm.mk,一种产品就是一个node。 node_fns.mk主要就是将一种产品的makefile中定义的相关变量导入到系统的全局变量原创 2015-11-24 16:13:44 · 1635 阅读 · 1 评论 -
android编译分析之8—envsetup.mk
envsetup.mk主要是对编译环境的设置,其实就是设置一些全局的变量(以lunch aosp_arm-eng,编译器ubuntu 64bit为例)。首先包含了版本相关的makefile,# Set up version information.include $(BUILD_SYSTEM)/version_defaults.mk下面这个变量还没研究具体用法,# ----------------原创 2015-11-25 13:42:20 · 4695 阅读 · 0 评论