Android
文章平均质量分 88
Jalon007
臣之所好者道也进乎技矣.始臣之解牛之时所见无非牛者.三年之后未尝见全牛也.
展开
-
WebRTC服务器的配置
WebRTC 测试服务器apprtc的搭建原创 2017-01-19 10:36:19 · 6431 阅读 · 1 评论 -
安卓OTA升级系统解析中
在img_from_target_files中可以看到:if __name__ == '__main__': try: common.CloseInheritedPipes() main(sys.argv[1:]) except common.ExternalError, e: print print " ERROR: %s" % (e,) pri原创 2015-09-21 16:58:49 · 1828 阅读 · 0 评论 -
安卓OTA升级文件的制作
OTA刷机包制作整个项目编译完成后再执行make otapackage 生成的完整升级包会存放在out\debug\target\product[project name]\ 下 具体名字根据make otapackage的install来确定 生成的过程文件包在out/target/product/ardbeg/obj/PACKAGING/target_files_intermediat原创 2015-09-21 15:09:24 · 1955 阅读 · 0 评论 -
安卓的数字签名技术
什么是签名实际生活中我们自己的签名是为了证明签名的材料是出自于你手,是否有人更改,是辨别真假的一种最简单直接的方式。那么什么是数字世界的签名呢?其实和现实世界的签名一样,是为了保证数字内容的完整性,保证传输的内容没有经过非法的更改。在弄清楚签名之前,需要知道什么只摘要和什么是非对称加密。什么是摘要摘要是指采用单向Hash函数对数据进行计算生成的固定长度的Hash值,摘要算法有Md5,Sha1等,M原创 2015-09-19 15:09:42 · 1504 阅读 · 0 评论 -
服务的注册
Server获得了Service Manager远程接口之后,就要把自己的Service添加到Service Manager中去,然后把自己启动起来,等待Client的请求。本文将通过分析说明Server的启动过程是怎么样的。我们通过Android Binder实列篇中的实列来说明下服务启动的整个过程。 类的继承关系图: 从上图可以明显看出BnShareBuffer实际是继承了IShareB原创 2015-10-21 17:20:24 · 558 阅读 · 0 评论 -
ServiceManager远程代理的获取
ServiceManager管理着系统中所有的服务,无论是service 还是client只要跟系统中的服务打交道,必先获取ServiceManager的代理,才能获取ServiceManager提供的各项服务。在安卓系统中Service Manager远程代理是一个特殊的Binder引用,它的引用句柄一定是0。获取远程代理的方法defaultServiceManager()的实现在framewor原创 2015-10-21 15:02:58 · 686 阅读 · 0 评论 -
ServiceManager守护进程的注册
Service Manager是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能。Service Manager作为本地服务由Init进程启动。在Init.rc配置文件中有这么一段配置:service servicemanager /system/bin/servicemanager class core原创 2015-10-20 15:40:01 · 761 阅读 · 0 评论 -
Android Binder原理篇
继Android Binder实列篇之后对binder通信原理进行简洁的说明。 先上张图对整个机制有个全局的认识。 上图虚线表示代理 本系列文章将会按照上图过程进行讲解: 1. ServiceManager守护进程的注册 2. 服务的注册 3. 服务的使用 4. 服务与代理的交互原创 2015-10-19 18:08:13 · 518 阅读 · 0 评论 -
Android Binder实列篇
前言Binder是安卓应用最宽泛的进程间的通信方式,在分析安卓源码时少不了要和其打交道。对于一般开发人员而言只要知会其如何使用,如何实现进程间的通信即可,本文就是为了达到这个目的而写,一是给自己做一个备忘,二是让想了解binder通信的人员有个全局的认识。更深层次的研究请参考Android资料目录的Binder通信部分。 本文将通过实列的方式讲解如何实现binder通信,计划实现的列子框图如下:原创 2015-10-16 19:21:44 · 784 阅读 · 0 评论 -
Android Fragment
Fragment简介Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activ原创 2015-08-12 19:14:17 · 525 阅读 · 0 评论 -
安卓OTA升级系统解析上
在MTK安卓环境中只需要在alps 目录执行./mk otapackage即可打包ota升级包,下面我们来分析下这个过程中。 alps/mk代码片段sub chkDep{ my $module = $_[0]; my $string = $module; if (!$module) { $string = all; }# print "**************原创 2015-09-21 11:40:18 · 2450 阅读 · 0 评论 -
安卓OTA升级系统解析下
在安卓OTA升级文件的制作中提到updater-script的功能。这里详细介绍脚本是如何生成的。 updater-script是我们升级时所具体使用到的脚本文件,它主要用以控制升级流程的主要逻辑。具体位置位于更新包中/META-INFO/com/google/android/目录下,在我们制作升级包的时候产生。 前面有个介绍。/build/tools/releasetools/目录下的模块ed原创 2015-09-21 18:07:51 · 1119 阅读 · 0 评论 -
ReentrantLock同步
ReentrantLock同步用法详解原创 2017-02-09 14:19:45 · 539 阅读 · 0 评论 -
synchronized同步
synchronized既可以实现方法的同步,也可以配合Object对象的wait()/notify()/nitifyAll()一起使用实现更加高级的同步原创 2017-02-09 11:47:59 · 727 阅读 · 0 评论 -
WebRTC音频
对webrtc整个的音频,采集,编码,打包,发送,到接收,解包,解码,播放,整个过程做了详细的描述原创 2017-02-08 19:03:35 · 11305 阅读 · 3 评论 -
WebRtc 之P2C的建立
详细概述了webrtc p2p链接创建的过程原创 2017-02-08 18:54:05 · 4642 阅读 · 0 评论 -
WebRtc建立P2P链接的总体流程
初步介绍了webrtc建立p2p链接的大致流程!原创 2017-02-08 18:47:52 · 13213 阅读 · 6 评论 -
WebRtc重要概念
webrtc 通信重要概念,channel ,connect,transport,condidates原创 2017-02-08 18:40:20 · 3496 阅读 · 0 评论 -
AndroidStudio2.2.3 JNI
Android Studio NDK 开发原创 2016-12-22 17:28:54 · 1989 阅读 · 1 评论 -
Android Studio Gradle相关问题
AndroidStudio 如何快速打开工程?gradle怎么配置?原创 2016-12-22 10:42:08 · 10571 阅读 · 1 评论 -
AndroidStudio2.2.3设置
Android studio 设置相关问题原创 2016-12-22 10:32:58 · 8514 阅读 · 0 评论 -
USB之概述
最近在安卓系统上开发usb应用,刚开始并不顺利自己也走了不少弯路。网上的资料也是参差不齐,或是讲解不够详细看完还是一头雾水,为了给遇到usb问题的同仁快速得定位问题,同时也作为自己的备忘录,将这段时间自己对usb的认识加以总结。该系列文章将按照linux中的usb系统构架(下图所示)从下到上进行讲解。 总体目录如下:Usb DeviceUsb CoreUsb Host DriverUs原创 2015-04-21 14:48:08 · 563 阅读 · 0 评论 -
MTK效率最高编译命令
当修改一些代码时,使用什么编译命令可以提高编译效率!./mk n(r) kernel ./mk bootimage 当修改kernel相关代码时,要使用此命令,具体如下:alps/kernel/alps/mediatek/platform/mt65xx/kernel/alps/mediatek/source/kernel/alps/mediatek/coustom/mt65xx/kern原创 2015-03-14 18:27:03 · 1133 阅读 · 0 评论 -
BlueDroid代码分析之回调函数的注册与调用
BlueDroid协议栈是基于回调的机制,核心进程btif_task 和btu_task根据用户/BTE的事件,调用相应的回调过程,回调的注册请参考下图!点击查看大图原创 2015-01-13 18:13:09 · 1843 阅读 · 0 评论 -
BlueDroid代码分析之BlueDroid简介
BlueDroid简介Android4.2之前,Google一直使用的是Linux官方蓝牙协议栈,即知名老牌开源项目BlueZ。BlueZ实际上是由高通公司在2001年5月基于GPL协议发布的一个开源项目,该项目仅发布一个月后就被Linux之父Linux Torvalds纳入了Linux内核,并做为Linux 2.4.6内核的官方蓝牙协议栈。随着Android设备的流行,Blu原创 2015-01-09 17:21:25 · 7427 阅读 · 0 评论 -
Android系统java层次service介绍
service简介什么是服务:在安卓系统的服务总体来说可以理解成进程或者线程(理解而已但实际不是后面会加以区别),那么什么时候用进程服务什么时候用线程服务要根据实际情况定。根据服务的运行状态将服务分为本地服务和远程服务。本地服务运行于宿主app进程中,而远程服务是一个独立的进程。下面分别予以介绍:本地服务(Local Service):特点:该服务依附在主进程中原创 2015-01-27 16:06:27 · 1147 阅读 · 0 评论 -
Android系统java层次service实现
前言:在Android系统java层次service介绍已经安卓服务的种类,下面通过实列看如何实现各种服务!本地服务的实现步骤:第一步:新建一个Android工程,我这里命名为servicestudy.第二步:修改activity_main.xml代码,我这里增加了四个按钮,代码如下: <LinearLayout xmlns:android="htt原创 2015-01-27 16:10:06 · 1689 阅读 · 0 评论 -
Android 容量检测
前言:当下载或安装一个应用之前,我们往往会关心当前系统内存和SD卡上的剩余容量。在做文件拷贝,移动操作时,检测目标目录的空间大小也是必须的。Android系统提供了Environment和StatFs两个类,来实现Android系统容量检测。原创 2014-11-25 10:53:00 · 899 阅读 · 0 评论 -
安卓ashmem学习内核解析
Android系统的匿名共享内存Ashmem驱动程序利用了Linux的共享内存子系统导出的接口来实现,本文通过源码分析方式详细介绍Android系统的匿名共享内存机制。在Android系统中,匿名共享内存也是进程间通信方式的一种。相比于malloc和anonymous/named mmap等传统的内存分配机制,Ashmem的优势是通过内核驱动提供了辅助内核的内存回收算法机制(pin/unpin)。原创 2014-11-18 18:04:02 · 1399 阅读 · 0 评论 -
ashmem学习example篇
在阅读本文之前,请对binder通信和ling原创 2014-11-18 10:38:10 · 1789 阅读 · 0 评论 -
安卓ashmem学习native篇
前言:本文是基于这篇文章之上的:http://blog.csdn.net/u010657219/article/details/41243473先看看之前三个进程的关系:原创 2014-11-18 16:35:47 · 2010 阅读 · 0 评论 -
安卓msg handler looper详解
Message:frameworks\base\core\java\android\Os\Message.java消息,其中包含了消息ID,消息处理对象(Handler)以及处理的数据等,由MessageQueue统一列队,终由Handler处理。 Handler:frameworks\base\core\java\android\Os\Handler.java处理者,负责Messag原创 2014-11-11 14:14:57 · 2795 阅读 · 0 评论 -
BlueDroid代码分析之初始化
安卓蓝牙协议栈初始化bluedroid协议栈初始化过程如下图所示:Bluetooth.c是安卓蓝牙的硬件抽象,是BlueDroid的对外接口,供JNI直接调用。bluedroid编译出的库为bluetooth.default.so依赖于libbt-hci.so、libbt-utils.so、libbt-vendor.so等动态库。下面逐一分析安卓是怎原创 2015-01-10 16:15:54 · 5492 阅读 · 1 评论 -
BlueDroid代码分析之L2CAP
ACL 链路在 Bluetooth 中非常重要,一些重要的应用如 A2DP, 基于 RFCOMM 的应用,BNEP等都要建立 ACL 链路,发送/接收ACL 包。Mike 跟大家一起来分析 ACL 包发送/接收流程,以及涉及到的重要 command/event。ACL包发送下面的图(点击大图)是各种应用层使用 L2CAP 的 API:L2CA_DataWrite 发送数据流的过转载 2015-01-13 18:55:01 · 5392 阅读 · 0 评论 -
BlueDroid代码分析之数据传输过程
bluedroid支持的蓝牙profile有很多种,每种传输数据的方式都比较类似,下面以hid profile 的setReport接口来分析下整个过程。hid setreport 发送数据流程如下图所示:点击查看大图原创 2015-01-13 18:46:00 · 1926 阅读 · 1 评论 -
基于安卓的本地编译环境
或许您有过这样的需求,需要单独的编译一个c代码在安卓机器上运行,但又不想去编写Android.mk.对Android.mk情有独钟的您可以略过。因为linux的工具实在是太多,相比Android toobox较为完善, 有些工具能让事半功倍,大大提高工作效率。原创 2015-03-14 18:00:14 · 921 阅读 · 0 评论 -
MTK安卓第三方内核模块编译
在原生的linux环境中编译第三方驱动的资料比较多。只需要在驱动的makefile中指定交叉编译器和编译后内核的路径就可以开始编译了。具体可以参考linux驱动编译系统。 我不知道是安卓的原因还是变态的mtk不兼容原生驱动编译方式,导致花费了较长的时间去摸索如何编译驱动的问题。 在mtk8685SDK下,只能将原始驱动放入内核目录即mtkv1.33/kernel/drivers目录下。makef原创 2015-03-14 16:57:24 · 2157 阅读 · 0 评论 -
MTK平台定制化
Settings中相关信息的更改Settings中About Phone 的Model number等信息的修改:修改alps\build\tools\buildinfo.sh-修改echo "ro.build.display.id=$BUILD_DISPLAY_ID", 把 $BUILD_DISPLAY_ID 修改成其他的名称可改变 Build Nubmer. 注意此原创 2015-01-19 17:57:47 · 1958 阅读 · 0 评论 -
安卓JNI基础
JNI介绍JNI概念 : Java本地接口,Java Native Interface, 它是一个协议, 该协议用来沟通Java代码和外部的本地C/C++代码, 通过该协议 Java代码可以调用外部的本地代码, 外部的C/C++ 代码可以调用Java代码;C和Java的侧重 : -- C语言 : C语言中最重要的是 函数 function; --原创 2015-01-23 11:00:59 · 804 阅读 · 0 评论 -
安卓jni进阶
关于引用的生命周期1.JNI 支持三种引用:局部引用、全局引用、弱全局引用(下文简称“弱引用”)。2.局部引用和全局引用有不同的生命周期。当本地方法返回时,局部引用会被自动释放。而全局引用和弱引用必须手动释放。3.局部引用或者全局引用会阻止 GC回收它们所引用的对象,而弱引用则不会。 4.不是所有的引用可以被用在所有的场合。例如,一个本地方法创建一个局部引用并返回后,再对这个局部引原创 2015-01-23 17:12:47 · 1013 阅读 · 0 评论