
Android
一抹夕阳815
这个作者很懒,什么都没留下…
展开
-
Android系统启动流程 二--bootloader启动
无论是PC还是嵌入式设备,系统上电后都会从一个固有地址开始运行程序。在PC上,这个程序就是BIOS,存储于主板的flash上。在嵌入式设备上,处理器会调用reset向量从flash/ROM上的固定地址开始执行。 高通平台的Bootloader资料较少,需要与底软同事一起完成。System startupOn an embedded p原创 2016-11-30 11:43:46 · 1287 阅读 · 0 评论 -
Android O 亮度调节
Android O 亮度调节相比Android N的亮度调节改变不是很大,但是以前没有分析过背光亮度调节,最近遇到了一个问题,背光亮度调节没有反应,因此把流程从上到下梳理了一下。 1.设置里设置背光亮度 packages\apps\Settings\src\com\android\settings\BrightnessPreference.javapackage com.android.sett原创 2017-08-24 13:50:03 · 1928 阅读 · 0 评论 -
Android 应用冻结流程分析
Android 的这些组件有两种状态,禁止的和正常激活 ,默认为激活状态。Android应用冻结主要是调用PMS来实现应用冻结。用户可以通过命令 PackageManager接口的方法实现或者通过pm命令来实现。1.客户端调用PackageManager如下接口: int getComponentEnabledSetting(in ComponentName componentName); /原创 2017-07-27 11:53:28 · 14520 阅读 · 0 评论 -
Android 获取资源的过程分析
Android获取Resources有两种方法,第一种是通过Context,第二种是通过PackageManager。 1. 通过Context获取 在以往的程序开发时,大家经常使用getResources.getXXX()方法获取XML文件中定义的资源,比如getDrawable()、getString()、getBoolean()等。这些是怎么访问的呢?流程是怎么样的呢?原创 2017-08-02 19:27:57 · 1718 阅读 · 0 评论 -
Android 包管理(PackageManagerService)
程序包管理主要包含三个部分内容。提供一个能够根据intent匹配到具体的Activity、Provider、Service。即当应用程序调用startActivity(intent)时,能够把参数中指定的intent转换成一个具体的包含了程序包名称及具体Componet名称的信息,以便Java类加载具体的Componet。进行权限检查。当应用程序调用某个需要一定权限的函数调用时,系统判断调用者是原创 2017-08-03 17:40:58 · 6847 阅读 · 1 评论 -
Android 修改framework下资源文件后如何编译
在framework/base/core/res/res 下添加资源文件后需要先编译资源 然后编译framework 才可正常引用进入项目根目录 cd frameworks/base/core/res/ 执行mm命令(原生或高通), 编译 framework-res.apk或 ./mk mm frameworks/base/core/res(mtk 依据各平台编译命令有所不同)原创 2016-11-30 14:22:03 · 7182 阅读 · 2 评论 -
Android adb 命令
ADB 常用命令 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 可以通过下列几种方法加入adb: 在设备上运行shell命令 通过端口转发来管理模拟器或设备 从模拟器或设备上拷贝来或拷贝走文件 下面对adb进行了介绍并描述了常见的使用. Contents 概要发出adb命令查询模拟器/设备实例给特定的模拟器/设备实例发送命令安装软件转原创 2016-11-30 15:42:54 · 934 阅读 · 0 评论 -
Android adb 连不上手机解决方案
ADB连接不上手机,解决方案手机连接电脑,右键点击电脑管理——>设备管理器,连接不上会出现黄色的提示,点击右键查看设备属性 ,查看硬件id此时进入你的sdk路径的D:\Android\sdk\extras\google\usb_driver(我的路径),打开android_winusb.inf文件,在[Google.NTamd64]字段下面加入: ;C206 %SingleAdbInte原创 2017-02-07 16:20:48 · 3148 阅读 · 0 评论 -
Android 预编译模块
在实际的开发过程,并不会像Android一样将所有的源码一起编译,有很多的APK、Jar包等都是预先编译好的,编译系统时需要将这些二进制文件复制到生成的image文件中. 常用的方法是通过PRODUCT_COPY_FILES变量将这些文件直接复制生成的image文件中,但是有些APK文件和jar包,需要使用系统的的签名文件才能正常运行,这样复制的方式就不痛了,另外,一些动态库文件可能源码中原创 2017-09-04 16:56:55 · 2923 阅读 · 0 评论 -
Android 编译系统二
一、Android系统目标 Android build 系统的缺省编译目标是droid。droid目标会依赖其他目标,所有的目标共同组成了最终产品,下面是droid目标的定义:droid :droidcore dist_filesdroid core : files\ systemimage\ $(INSTA原创 2017-09-04 18:11:25 · 468 阅读 · 0 评论 -
Android Gmail签名客制化
最近几天做海外项目,需要定制email的签名,比如send by xx;也就是预制厂商的签名,由于用的是gms 里面的gmail.apk 没有源码,只要apk文件,这个问题困扰了两天,想办法也要搞定。因此需要反编译gmail .apk 当时第一种思路就是 运行时资源替换,发现只能替换string里面的资源,替换其他的会出现crash,因此第一种是行不通的 ,第二种方法就是网数据库里面改值,由于...原创 2018-04-04 16:59:09 · 2159 阅读 · 9 评论 -
Android 底部虚拟按键颜色修改
最近做相见发现一个bug, 如图 底部虚拟按键出现了半透明的颜色 和相机底部重叠了,因此需要修改 ,方法如下: Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | Wind...原创 2018-04-04 16:38:10 · 10321 阅读 · 0 评论 -
Android chrome浏览器的定制
最近在做海外项目需要定制chrome浏览器的书签和主页,在8.1的项目上实现,当时手机还没有预制GMS,只能下载chrome 这个apk做实验,出现了很多问题,书签没有作用,安装了gms里面的chrome,主页又没生效,六神无主,经过网上的文档发现,GMS必须预制才能生效。1.预制书签。预制书签很简单 ,只需要改系统自带的原生代码的目录下.\packages\providers\Par...原创 2018-03-24 10:56:32 · 8896 阅读 · 7 评论 -
Android studio JNI开发
前些天要写Android 双摄打包工作,由于任务紧,要实现调用底层so库功能 ,因此需要写jni来实现。如下:1.先应用需要导入so库,定义方法 :public class Compress { static { System.loadLibrary("compress_jni"); } public native static by...原创 2018-03-24 10:26:09 · 426 阅读 · 0 评论 -
Android手势滑动(左滑和右滑)
最近想实现Android左滑弹出菜单框,右滑消失菜单这个个功能。了解了一下Android 的滑动事件,必须是在view组件或者Activity上实现,同时必须实现OnTouchListener, OnGestureListener这个两个接口。public class MyRelativeLayout extends RelativeLayout implements GestureDetector原创 2017-11-13 09:53:38 · 13617 阅读 · 0 评论 -
Android 模块编译
1.编译一个APK文件LOCAL_PATH :=$(call my-dir)include $(CLEAR_VARS)LOCAL_JAVA_LIBRARIES:= #指定依赖的共享java类库LOCAL_STATIC_JAVA_LIBRARIES= #指定依赖的静态java类库#指定源码列表,这里使用系统定义的函数搜寻src目录下的文件形成列表LOCAL_SRC_FILES=$(call原创 2017-09-01 17:57:45 · 779 阅读 · 0 评论 -
Android 抓日志的各种命令
getting logcat,radio,events,system,properties,env,dmesg,last_kmsg,ps,cmdline,userdata_check … adb logcat -d -v threadtime > logcat.txt logcat日志adb logcat -d -b radio -v threadtime > radio.txt rad原创 2017-09-01 14:50:13 · 4508 阅读 · 0 评论 -
Java数组实现栈
能存储任意类型的数据。import java.lang.reflect.Array;public class GeneralArrayStack<T> {private static final int DEFAULT_SIZE = 12; private T[] mArray; private int count; public GeneralArrayStack(Cla原创 2017-09-05 16:54:01 · 356 阅读 · 0 评论 -
Android find 和grep命令的使用
在使用Linux(xshell)时,经常需要进行文件查找,其中查找命令主要有find和grep。 区别: (1)、find命令是根据文件的属性进行查找文件。文件属性如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。 (2)、grep命令是根据文件的内容进行查找。会对文件的每一行按照给定的模式进行匹配查找。 find命令 基本格式:find path expression原创 2017-02-07 16:27:52 · 6412 阅读 · 0 评论 -
Android DropBoxManager服务分析
一、启动流程 DropBoxManagerService(简称DBMS) 记录着系统关键log信息,主要功能用于Debug调试。 Android系统启动过程SystemServer进程时,在startOtherServices()过程会启动DBMS服务,如下:1.1 启动DBMS [-> SystemServer.java]private void startOtherServices() {原创 2017-06-02 10:52:26 · 6103 阅读 · 0 评论 -
Android pm 命令
一、Pm命令 命令格式:pm 命令列表:命令 功能 实现方法 list packages 列举app包信息 PMS.getInstalledPackages install [options] 安装应用 PMS.installPackageAsUser uninstall [options] 卸载应用 IPackageInstaller.unins原创 2017-06-02 11:26:21 · 1492 阅读 · 0 评论 -
Android 打印trace方法
Android 开发语言主要分为3类:Java、C++、c,分别对应的是应用层、framework层、native层、内核层。在进行调试的时候需要打印出调用栈是非常有必要的。下面分别列举出来三个语言的用法:Java: 1. RuntimeException stack = new RuntimeException(); stack.fillInStackTrace(); 2.原创 2017-06-02 11:10:31 · 3739 阅读 · 0 评论 -
Android Framework 编译流程
framework的编译是对framework目录下所有的子目录的编译。framework在编译后会生成几个重要的jar包。他们是framework.jar、core.jar、ext.jar、framework-res.jar。framework.jar包是framework层Java源文件编译的。core.jar是dalvik虚拟机运行时所需要的java运行库文件。ext.jar包含了一些可扩展的原创 2017-02-07 10:51:21 · 4942 阅读 · 1 评论 -
Android编译系统(一)
Andoid 编译系统一 一、 编译命令。.build/envsetup.shlunchmake –j16/8执行Android系统的编译,必须运行envsetup.sh脚本,这个脚本会建立android 的编译环境,envsetup.sh文件定义了很多shell命令,这些命令在envsetup.sh脚本之后就可以从shell环境中调用了。编译中执行的lunch命令就是在envsetup.sh脚原创 2017-02-04 18:23:44 · 394 阅读 · 0 评论 -
Android系统启动流程 五--zygote
我们知道,Android系统是基于Linux内核的,而在Linux系统中,所有的进程都是init进程的子孙进程,也就是说,所有的进程都是直接或者间接地由init进程fork出来的。Zygote进程也不例外,它是在系统启动的过程,由init进程创建的。启动过程如下:•创建一个进程,初始化一个Dalvik 虚拟机实例•加载类并且监听请求(收到请求后生成新的虚拟机实)•根据请求创原创 2016-11-30 14:26:37 · 560 阅读 · 0 评论 -
Android系统启动流程 七--launcher
Android系统的Home应用程序Launcher是由ActivityManagerService启动的,而ActivityManagerService和PackageManagerService一样,都是在开机时由SystemServer组件启动的,SystemServer组件首先是启动ePackageManagerServic,由它来负责安装系统的应用程序,具体可以参考前面一篇文章Andro原创 2016-11-30 14:28:22 · 771 阅读 · 0 评论 -
Android系统启动流程 四--init进程
一切都始于init,bootloader 加载了内核,内核启动了init 进程。Linux系统中的init进程(pid=1)是除了idle进程(pid=0,也就是init_task)之外另一个比较特殊的进程,它是Linux内核开始建立起进程概念时第一个通过kernel_thread产生的进程,其开始在内核态执行,然后通过一个系统调用,开始执行用户空间的/sbin/init程序,期间Linux内核也原创 2016-11-30 14:25:04 · 1101 阅读 · 0 评论 -
Android系统启动流程 三--linux内核启动
当内核与体系架构相关的汇编代码执行完毕,即跳入start_kernel。这个函数在kernel/init/main.c中。由于这部分涉及linux众多的初始化,包括设置中断、内核命令行解析,内存缓冲区建立初始化,页面分配和初始化,虚拟文件系统建立,根文件系统挂载,驱动文件挂载,调用kernel_thread创建init进程,并在kernel_init中进行启动那个。最后,启动IDLE进程并在进程中原创 2016-11-30 14:23:54 · 754 阅读 · 0 评论 -
Android Am命令用法
一、概述 作为一名开发者,相信对adb指令一定不会陌生。那么在手机连接adb后,可通过am命令做很多操作:(1) 拨打电话10086adb shell am start -a android.intent.action.CALL -d tel:10086 (2) 打开网站www.gityuan.comadb shell am start -a android.intent.action.VIEW原创 2017-06-02 11:27:46 · 1128 阅读 · 0 评论 -
Android ps进程命令
ps进程命令 在adb shell终端,输入 ps,可查看手机当前所有的进程状态,其中ps的英文全称是Process Status。ps命令参数 -t 显示进程里的所有子线程 -c 显示进程耗费的CPU时间 -p 显示进程优先级、nice值、调度策略 -P 显示进程,通常是bg(后台进程)或fg(前台进程) -x 显示进程耗费的用户时间和系统时间,格式:(u:0, s:0),单位:秒(原创 2017-06-02 11:30:39 · 4278 阅读 · 0 评论 -
Android dumpsys用法
一、 dumpsys命令 1.1 服务列表 不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前手机所支持的dump服务,先进入adb shell,再执行如下命令:dumpsys -l。 这些服务名或许你并看不出其调用的哪个服务,那么这时可以通过下面指令:service list。表一:服务名 类名 功能 activity ActivityManagerService原创 2017-06-02 10:58:33 · 826 阅读 · 0 评论 -
Android编译系统
从大的方面讲,Android的Build系统可以分成3大块:第一块是位于build/core目录下的文件,这是Android Build系统的框架和核心;第二块是位于device目录下的文件,存放的是具体的配置文件;第三是各模块的编译文件:Android.mk位于模块的源文件的目录下。 Repo命令 (1)Repo init 命令 Repo命令可以有很多参数,-u参数用来表示初始化软件仓库,e原创 2017-08-10 09:11:21 · 584 阅读 · 0 评论 -
Android APK的存储结构
应用程序最终都是以一个APK方式发布。首先看看apk的编译流程。 apk本身是一个zip文件,这就像jar包一样,都是一个zip文件,因此我们可以使用unzip解压出来。具体包含一下文件目录。AndroidManifest.xml:该文件与开发的时候文件基本上相同,不同的是这个是一个二进制的XML文件。查看该文件可以使用AXMLPrint.jar工具包,可以转换成正常的XML文件。META原创 2017-08-02 16:38:42 · 658 阅读 · 0 评论 -
Android开发规范
一、 命名规范 1. 包命名 规则:包名全部小写,才用反域名命名规则,一级包名是顶级域名,通常为com, edu, gov, net, org等,二级包名,通过为公司名或部门名或者个人名,三级包名通常为项目名,四级包名为模块名或者层级名。以下是从层级包名来划分android项目中采用的包划分结构.com.domain.xxx.activity //用户界面中所有的Activity类原创 2017-08-02 14:28:28 · 400 阅读 · 0 评论 -
Android 进程管理
在Android中,进程(process)的概念被弱化,传统的进程是程序执行的载体,进程退出意味着应用的关闭。但是在Android中进程知识一个运行组件的容器,当系统需要运行一个组件时,启动包含它的进程,当组件不在使用时,进程也会被关闭。例如一个APK文件中的两个service,可以运行在一个进程中,也可以运行在各自的进程中。 虽然在Android的应用开发中,不再强调进程的概念,但是在AMS中,原创 2017-08-09 16:31:53 · 2820 阅读 · 1 评论 -
Android三指截屏的实现
三指截屏是用户三个手机点击屏幕向下滑,最终调用systemui的截屏服务实现截屏。所以其他只是做一个策略的实现。目前很多不少手机都实现了该功能,因此自己也尝试着实现该功能。 1.首先是注册事件,监听用户是否设置打开了三指截屏功能。if(Feature.FEATURE_THREE_FINGER_SCREENSHOT){ resol原创 2017-07-27 14:26:49 · 7931 阅读 · 5 评论 -
Android 程序的运行过程
首先,ActivityThread从main()函数中开始执行,调用prepareMainLooper()为UI创建一个消息队列(MessageQueue)。 然后创建一个ActivityThread对象,在ActivityThread的初始化代码会创建一个H(Handler)对象和一个ApplicationThread(Binder)对象。其中Binder负责接收远程AMS的IPC调用,接收原创 2017-07-31 20:01:17 · 752 阅读 · 0 评论 -
VirtualAPK的特性
VirtualAPK的特性VirtualAPK是滴滴出行自研的一款优秀的插件化框架,主要有如下几个特性。功能完备支持几乎所有的Android特性; 四大组件方面 四大组件均不需要在宿主manifest中预注册,每个组件都有完整的生命周期。Activity:支持显示和隐式调用,支持Activity的theme和LaunchMode,支持透明主题; Service:支持显示和隐式调用,支持Serv原创 2017-07-06 15:57:16 · 843 阅读 · 0 评论 -
U盘OTA升级
最近在做安卓设备,考虑到一个问题,设备到达现场,需要更新系统,但是拆机刷机有很麻烦,并且数据丢失,为了解决这个问题,考虑到两个方式,第一个就是OTA在线升级、第二个U盘升级,其实原理差不多,但是如果设备内存有点小,可以使用U盘升级系统、我们这个采用的是是全包升级,当然也可以差分别升级系统。1. 制作全量升级包 1.source build/envsetup.sh ...原创 2019-07-11 10:52:34 · 3221 阅读 · 0 评论