Android
文章平均质量分 92
拿节
绳锯木断,水滴石穿,贵在坚持
展开
-
移动应用安全和证书相关知识总结
文章目录加密对称加密(AES/DES)非对称加密(RSA等)数字签名数字证书自签名证书和CA证书证书链私钥,公钥和证书如何保存?证书指纹Android & IOS安装包签名参考文献数据在互联网上分发,就会涉及到数据安全问题,主要包括防止数据泄露 - 加密防止数据被篡改 - 数字签名防止数据调包 - CA证书加密对称加密(AES/DES)优点: 算法公开、计算量小、加密速度...原创 2020-04-01 11:40:22 · 795 阅读 · 0 评论 -
ReactNative-如何引入ReactAndroid源码模块到主工程
文章目录如何集成so冲突解决如何集成以下内容基于RN 0.61.5版本在新建一个RN项目并安装完node模块依赖后,在根目录执行npm run android即可启动编译并安装到目标设备android工程依赖的本地maven库配置 maven { // All of React Native (JS, Obj-C sources, Androi...原创 2020-04-01 11:16:50 · 916 阅读 · 0 评论 -
Gradle编译时所有Task信息打印
Gradle工程编译的过程,就是执行目标task的过程,如果task存在依赖,则先执行依赖task,如此反复,直到触达无依赖的task就这样,从无依赖task -> 目标task的执行链即建立,接着依次执行task即可,每个task之间数据传输,主要是通过task inputs和outputs描述文件来完成的所以,gradle编译所有task信息的打印,应该包含按task执行顺序打印...原创 2020-04-01 11:14:44 · 2289 阅读 · 0 评论 -
Android WatchDog介绍
文章目录Android WatchDogWatchDog初始化HandlerChecker介绍WatchDog检测逻辑介绍参考文献WatchDog,在早期的嵌入式系统,设计它是为了防止软件系统跑飞后最后一个挽救措施,就是重启设备,虽然有点暴力,但是一般重启后,对于很多偶现的bug,基本都能临时解决WatchDog的设计基本都需要包含如下三个功能投喂机制dump异常日志异常修复投喂机...原创 2020-02-12 11:40:50 · 1100 阅读 · 0 评论 -
Android帧率统计及其相关基础知识介绍
文章目录Android帧率统计及其相关基础知识介绍VSync介绍Choreographer的作用Handler同步屏障帧率计算参考文献Android帧率统计及其相关基础知识介绍帧率,在App层面,就是UI界面每秒可重绘的次数,它的上限是运行手机的屏幕刷新率,也就是屏幕每秒刷新的次数,一般来说,刷新率超过60,人眼就感知不到了,所以一般手机的屏幕刷新率都为60,因为超过60一没多大意义,二更耗电...原创 2020-02-12 11:28:09 · 3158 阅读 · 0 评论 -
浅谈Android之Activity 窗口显示流程介绍(二)
7.3 Activity Décorview布局(layout)Measure确定Décor View以及child views的大小,layout则是确定child view在其parent view中的显示区域,只有layout结束,view的left,right,top,bottom值才会被设置,getWidth和getHeight两个函数才会返回view最终的宽高值 对Fram原创 2017-02-14 11:47:31 · 497 阅读 · 0 评论 -
浅谈Android之Activity 窗口显示流程介绍(一)
7 Activity 窗口显示流程介绍Activity 窗口显示,其实就是Décor View绘制并显示的过程,但是在绘制之前,Décor View需要先做下面两件事情:1) 确定Décor View的大小2) 对Décor View进行布局操作,也就是确定DécorView所有child views的显示位置 由于Décor View的LayoutParams中宽高默认设原创 2017-02-14 11:45:43 · 3223 阅读 · 0 评论 -
浅谈Android之Activity Decor View创建流程介绍
6 Activity DecorView创建流程介绍上头已经完整的介绍了Activity的启动流程,Activity是如何绑定Window,Window的décor view是如何通过ViewRootImpl与WMS建立关联的,也就是说,整个框架已经有了,唯一缺的就是Activity如何初始化创建DecorView了。 接下去通过相对不是那么复杂的LinearLayout,来完整的介绍原创 2017-02-14 11:40:19 · 2746 阅读 · 0 评论 -
浅谈Android之App窗口视图管理
5 App窗口视图管理WindowManagerGlobal负责管理App所有要添加到WMS的窗口,接口即为上头的addView 首先,对于App本地窗口来说,其最核心的数据无非就两个,一个是Window Parameters,另一个就是窗口的DécorView,一个负责描述窗口属性,另外一个描述窗口视图 窗口有很多种类型,比如Activity关联Window,PopupWin原创 2017-02-14 11:34:28 · 1548 阅读 · 0 评论 -
浅谈Android之Activity相关介绍
4 Activity相关介绍Activity是android四大组件之一,主要用于显示用户界面,通过上面的章节我们已经知道,App Client如果要向系统屏幕输出图形数据,需要通过Surface来实现,那在开发过程中,调用Activity的setContentView来设置自定义视图,这个视图的图形数据是如何关联到Surface的呢?接下去就对相关内容做简单介绍。 Android通过原创 2017-02-14 11:28:54 · 752 阅读 · 0 评论 -
浅谈Android之SurfaceFlinger相关介绍(三)
3.3 Surface Java层相关封装主要介绍三个类,对应如下:JavaC++SurfaceSession.javaSurfaceComposeClient对应JNI文件为:android_view_surfacesession.cppSurfaceControl.javaSurface原创 2017-02-14 11:18:06 · 1002 阅读 · 0 评论 -
浅谈Android之SurfaceFlinger相关介绍(二)
3.2 绘图表面相关(Surface& Layer & BufferQueue)App和SurfaceFlinger连接后,接下去就可以调用mClient->createSurface创建Surface, 然后SurfaceFlinger会对应的创建Layer,然后Layer内部会创建BufferQueueProducer和BufferQueueConsumer,一个负责生产graphic原创 2017-02-14 11:15:04 · 3435 阅读 · 0 评论 -
浅谈Android之SurfaceFlinger相关介绍(一)
SurfaceFlinger是GUI的核心,以系统服务的形式存在,负责将所有App的图形数据按照Z Order顺序混合并输出到FrameBuffer。根据图中描述,从下到上依次介绍:1) 这里的FrameBuffer指显示设备驱动和Gralloc帧缓冲区管理2) 面向SurfaceFlinger的Native Window3) 通过OpenGl ES图形库来处理图原创 2017-02-14 11:08:02 · 4087 阅读 · 0 评论 -
Android PackageManager Service详解 (5.1源码) (一)
android基于linux,所以当设备上电后,初期的启动流程跟linux系统并无二致,uboot引导,接着载入kernel代码,加载各种驱动,结束后,启动第一个用户级进程init,init接着解析init.rc后,按照配置启动各种linux后台进程。 整个linux系统底层已经Ready后,接着要干嘛,当然是启动android引导进程,装载android运行环境所需的代码和资源。原创 2016-09-02 11:14:31 · 1690 阅读 · 0 评论 -
浅谈Android之Activity触摸事件传输机制介绍
8 Activity触摸事件传输机制介绍当我们触摸屏幕的时候,程序会收到对应的触摸事件,这个事件是在app端去读取的吗?肯定不是,如果app能读取,那会乱套的,所以app不会有这个权限,系统按键的读取以及分发都是通过WindowManagerService来完成 在WMS中,它的管理单位是WindowState,当你点击屏幕时,它会根据Z-Order顺序找到top & focus Wi原创 2017-02-14 11:49:42 · 1674 阅读 · 0 评论 -
java追加写文件
File tofile = new File( "/data/local/1231111.txt"); FileWriter wri = null; try { wri = new FileWriter(tofile, true); } catch (IOException e1) { // TODO Auto-generated原创 2012-04-06 13:50:58 · 748 阅读 · 0 评论 -
Gradle - Android工程结构和编译相关介绍
文章目录Gradle - Android工程结构和编译相关介绍Gradle Wrapper构建流程gradle源码查看Gradle配置脚本介绍init.gradlebuild.gradle - rootsetting.gradlebuild.gradle - module构建变体-Build VariantModule库依赖 - Module Library dependenciesTasks创建...原创 2019-09-03 19:25:43 · 506 阅读 · 0 评论 -
Android ClassLoader介绍
文章目录Android ClassLoader介绍BaseDexClassLoaderPathClassLoader和DexClassLoader为什么要支持MultiDex?MultiDex打包安装加载Android ClassLoader介绍什么是class loader,对于Android来说,class loader主要做两件事情加载dex文件根据class path加载并返回对...原创 2019-08-27 15:44:51 · 529 阅读 · 0 评论 -
Android的注解处理器介绍
我们可以在java代码中添加很多的注解, 注解最终会绑定到target element上,每个注解我们都可以配置其retention policyCLASSAnnotations are to be recorded in the class file by the compiler but need not be retained by the VM at run time.RUNTIME...原创 2019-08-27 15:43:08 · 1216 阅读 · 0 评论 -
Android应用可执行文件的加载介绍(LoadedApk)
Android应用启动后可加载的代码文件有三种,按加载顺序依次如下:androidmanifest内uses-library指定的jarAPK包根目录的dex文件APK包lib目录下的so文件可以在manifest里随便指定想要加载的jar吗?当然不行,这个jar必须是在/etc/permissions/目录下的xml有过配置的,比如://截取/etc/permissions/pla...原创 2019-08-27 15:42:18 · 3640 阅读 · 0 评论 -
Android插件配置-Android Extension介绍
我们先来看一个普通app的build.grdle的定义apply plugin: 'com.android.application'android { compileSdkVersion 28 buildToolsVersion "28.0.3" defaultConfig { applicationId "com.harish.test.sample...原创 2019-08-27 15:38:55 · 2411 阅读 · 0 评论 -
Android Context总结
Context是什么?Android应用的上下文,既然是上下文,就说明其所拥有的功能,是要贯穿整个app的生命周期的,比如说APK资源,系统服务等在Android中,对于系统创建的对象,咱们能从其身上拿到Context的主要有5个,四大组件和Application对象Activity,Service,Application都派生自ContextWrapper,说明其本身就是一个代理Conte...原创 2019-04-21 10:28:02 · 332 阅读 · 0 评论 -
Activity的launchMode和taskAffinity介绍
我们都知道Android对Activity是通过分组来管理的,也就是说,每一个Activity都会存在于某一个分组,即Task内系统在启动Activity的时候,需要根据Activity的相关配置参数来决定将Activity置放于哪个Task中(CreateNew or Chose An Existing One)本文只是做一些重点总结,详细的可阅读SDK文档Launch Mode:...原创 2017-03-10 18:13:59 · 660 阅读 · 0 评论 -
浅谈Android之Binder原理介绍(三)
2.4 C++层传输数据封装使用ProcessState和IPCThreadState建立好binder运行环境后,后续要做的,就是对发送和接收数据的封装,先从基础接口和类开始:1:IBinder binder发送和接收基础功能接口,最终要的接口函数是transact,对应数据传输2:BpBinder 实现IBinder,对应于binder proxy,主要用于binder数据的发送,原创 2017-02-14 11:00:25 · 1016 阅读 · 0 评论 -
浅谈Android之Binder原理介绍(二)
2.2 ServiceManagerBinder Kernel提供命令BINDER_SET_CONTEXT_MGR来设置bindercontext manager:1) BINDER_SET_CONTEXT_MGR在binder kernel对应一个特殊的binder node,说其特殊,是因为这个bindernode没有binder对象相关数据(它本来就没有),只有设置进程(servi原创 2017-02-14 10:56:11 · 808 阅读 · 0 评论 -
Android Audio代码分析8 - AudioHardwareALSA::openOutputStream函数(下)
结构体alsa_device_t的定义:struct alsa_device_t { hw_device_t common; status_t (*init)(alsa_device_t *, ALSAHandleList &); status_t (*open)(alsa_handle_t *, uint32_t, int); status_t (转载 2012-09-12 09:31:46 · 2649 阅读 · 0 评论 -
转载:do...while(0)的妙用
MTK中有很多有关do...while(0)的应用,刚开始可能有很多人不太明白为什么使用do...while(0),似乎不加do...while(0),该部分的代码也会只执行一次,其实do...while(0)是出于优化代码考虑的.do...while(0)并不是程序员为了炫耀自己的技术而展示的奇巧淫技,而是有实实在在的功能用途的.兹转载一篇文章共同研究.转自:http://www.cnblo转载 2012-08-27 10:28:14 · 695 阅读 · 0 评论 -
linux 安装adb
第一步:启动开发板,进入android系统后,在linux终端输入lsusb命令查询USB总线上的设备,比如我这里查询结果如下:Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 00转载 2012-08-31 14:40:54 · 2905 阅读 · 1 评论 -
gbk, gb2312,big5,unicode,utf-8,utf-16之间的关系
最近和同事讨论unicode的相关知识,同事说unicode指utf-16,和utf-8相区别;而我的理解是unicode只是一种规范,而utf-16,utf-8等都是它的具体实现,互相也说不准。于是在网上搜索资料,最后发现其实双方都有道理,只是个人理解不一样罢了,的确通常来说的unicode是指utf-16的实现方式。这下面是搜索到的资料:转: gbk, gb2312,big5,unic转载 2012-07-18 15:15:31 · 3297 阅读 · 0 评论 -
C语言宏定义中的## 连接符与# 符
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所 谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#符是把传递过来 的参数当成字符串进行替代。下面来看看它们是怎样工作的。这是MSDN上的一个例子。 假设程序中已经定义了原创 2012-07-05 14:50:30 · 800 阅读 · 0 评论 -
Android权限之sharedUserId和签名
最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份。安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被转载 2012-03-17 13:50:36 · 634 阅读 · 0 评论 -
Android IMemory
Share memory using ashmem and binder in the android frameworkTo share memory between different processes in the android framework ashmem can be used. Ashmem is a android shared memory addon to the l转载 2012-02-02 15:32:03 · 1096 阅读 · 0 评论 -
Android Pmem介绍
基本原理 Android Pmem是为了实现共享大尺寸连续物理内存而开发的一种机制,该机制对dsp,gpu等部件非常有用。Pmem相当于把系统内存划分出一部分单独管理,即不被linux mm管理,实际上linux mm根本看不到这段内存。Pmem与Ashmem的区别 Pmem和Ashmem都通过mmap来实现共享内存,其区别在于Pmem的共享区域是一段连续的物理内存,而Ashmem的共转载 2012-02-02 15:40:59 · 820 阅读 · 0 评论 -
Android Input Event Dispatching
[First written by Steve Guo, please keep the mark if forwarding.]Input Event Detect and DispatchThe input event dispatch engine is in WindowManagerService.java. WindowManagerService.java creates a转载 2010-09-21 19:39:00 · 9608 阅读 · 0 评论 -
Android短信编解码方式
Android短信编码在Framework层实现。对于普通短信,其SmsHeader部分为空。Gsm:Gsm中,对于长短信,使用了SmsHeader类进行描述。SmsHeader.ConcatRef描述了长短信的refNumber(对于同一个短信,相同,使用SmsDispatcher.getNextConcatenatedRef方法获取一个索引值,将其或上0x00FF),seqNumb转载 2012-10-29 14:47:54 · 4179 阅读 · 2 评论 -
jni数组操作
保存下代码,供以后参考:使用数组参数:static jintusejniarray(JNIEnv *env, jclass clazz, jobjectArray fdArray, jintArray intArray){ jclass FileDescriptor = env->FindClass("java/io/FileDescriptor"); jfie原创 2013-01-06 16:16:28 · 783 阅读 · 0 评论 -
解决android sdk manager更新失败问题
最近在用android sdk manager 更新sdk的时候 发现无法更新了 查了相关的资料找到了原因,发现被GFW给屏蔽了。。。。。更新失败提示:Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-1.xml, reason: No route to host转载 2013-01-11 10:12:54 · 2074 阅读 · 0 评论 -
浅谈Android之系统概述
先来看下Android SDK第一篇文章 What is android中一张描述Android系统结构的图:基于这张图,可以很清晰的看出android的框架结构,最顶上是各种各样的应用,应用需要framework中各种各样的服务做支撑,然后就是各种各样的库文件(.so)被framework代码所引用,用来跟低层的各种Drivers做数据通信,从而实现对应的功能。相信很多人原创 2017-02-14 10:37:24 · 2414 阅读 · 0 评论 -
浅谈Android之Binder原理介绍(一)
Linux的进程间通讯进制(IPC)很多,比如管道,socket,共享内存等等,但是Android为什么不直接使用这些方式,主要原因是传统的IPC方式要么效率无法满足,要么设计理念不够现代,无法满足Android系统设计的要求; 比如管道和socket,会存在内存数据多次拷贝,这如果在APP级别,或许是够用的,但是如果上升到系统级别,系统内部通信频次是极高的,如果效率不够,用户体验肯定会很原创 2017-02-14 10:51:53 · 3438 阅读 · 1 评论 -
Android PackageManager Service详解(5.1源码)(三)
2:PackageManagerServiceAndroid既然基于linux,那我们能不能将c/c++代码交叉编译成可执行文件然后放到目标机器上跑呢?当然可以,不过前提你得有执行权限,事实上,android有一部分后台服务是纯linux程序(不需要davik虚拟机资源),比如service manager和media server等。Android应用没有权限启动linux程序,同样的也原创 2016-09-02 11:24:54 · 2627 阅读 · 0 评论