
android 学习及系统开发
1、android 应用层面接口分析及调用
2、android 系统层面源码分析
3、android 编译相关及问题解决
andyhuabing
这个作者很懒,什么都没留下…
展开
-
android2.3权限问题
android2.3相对于2.2来说,有个最大的变化就是权限管理模块的更新,导致明明有root权限,但是无法执行很多底层命令和api,举例:在终端上su到root用户,执行ls等命令都会报没有权限。该问题引发的问题包括:A 大多数PC客户端(包括91助手、豌豆夹等)都无法自动安装daemon程序B 很多需要root权限执行的程序无法正常运行那么就到底是什么原因导致的呢? 这些权原创 2011-12-01 11:40:32 · 7307 阅读 · 6 评论 -
android2.3 鼠标输入集成
Android系统对鼠标的支持并不好,因为Android系统原本是为手机量身定做的,手机系统基本上是不需要鼠标的。但是随着Android系统移植到其他领域,对鼠标的支持也越来越有意义。在android中鼠标的绘制代码在:\frameworks\base\services\java\com\android\server\WindowManagerService.java ,原创 2011-12-13 11:31:26 · 6543 阅读 · 17 评论 -
Android系统与数字电视之我见
Android系统与数字电视之我见本文将与您一起探讨如下的话题1、数字电视的现状与未来2、移植到数字电视面临的挑战数字电视的现状与未来数字电视使用不同的操作系统,中间件,CA及应用程序,使得整个软件架构出现极大的差异。面对用户不断升级的需求,消费者不仅可收看节目,还可将电视作为登录浏览器的入口平台,搜索更多节目内容,安装各种应用程序,并自行开发、共享各种程序原创 2011-11-16 10:20:07 · 3525 阅读 · 6 评论 -
android系统移植(一) 总述
一、先说明一下平台要求平台硬件要求•RAM: 512MB•FLASH:256MB•CPU: ARM平台指令集要求 ARM9 Family以上,ARMv5以上指令集, mips平台指令集要求 MIPS32 revision 2 - Little-Endian, O原创 2011-07-08 16:58:34 · 13552 阅读 · 3 评论 -
Android Service 两种编写及应用
最近在编写系统级service,借此也同时编写了java应用级service,感觉流程有点重要,编写还是没有太大问题。很多情况下,一些与用户很少需要产生交互的应用程序,我们一般让它们在后台运行就行了,而且在它们运行期间我们仍然能运行其他的应用。为了处理这种后台进程,Android原创 2011-07-29 14:35:56 · 2902 阅读 · 0 评论 -
Wifi移植文档 - android2.2及android2.3版本
不久前移植过ranlink公司的wifi无线网卡,发现网上的一些文档不完整或者对一些碰到的问题没有说明,在此详细说明一,本人将其移植到android系统上碰到了不少的问题,修改了驱动及框架代码,费了两周多的时间才完全搞好。一. Android平台Wifi的基本代码路径1. Wpa_supplicant源码部分external/wpa_supplicant_6/原创 2011-11-23 15:36:39 · 5124 阅读 · 4 评论 -
Android 2.3 input输入事件处理
linux内核提供了一个Input子系统来实现的,Input子系统会在/dev/input/路径下创建我们硬件输入设备的节点,一般情况下在我们的手机中这些节点是以eventXX来命名的,如event0,event1等等,可以利用EVIOCGNAME获取此事件结点名称。这就是android中对于input事件处理数据的来源点,至于驱动写入数据这块就不说了。首先,简而言之的介绍一下android事原创 2011-11-24 11:44:54 · 8546 阅读 · 7 评论 -
Sensor 代码流程分析
本文针对android 2.3 版本的sensor从应用到hal层接口进行逐层分析。4.0的代码也拿到了,不过还没有来得及进行分析。一、应用程序,一般的应用程序写法:package com.sensors.testSensor; import android.app.Activity;import android.os.Bundle; import android.ut原创 2011-11-24 17:09:23 · 9147 阅读 · 6 评论 -
写binder客户端与服务端碰到的编译错误
调试C++使用binder进行两个进程通讯的代码编译错误,记录下来给朋友们作为参考:1、BpBInder端客户端函数未定义,如target SharedLib: libgui (out/target/product/generic/obj/SHARED_LIBRARIES/libgui_intermediates/LINKED/libgui.so)out/target/prod原创 2011-11-28 11:50:47 · 5367 阅读 · 0 评论 -
Skia 的图像编解码部分
今天在调试一个png图片时,发现解码出来的效果很差,显示出一个个模糊块,后来查看代码发现原来使用的解码是RGB565,所以就查证一下代码,修改成ARGB8888解码及输出,希望对需要的朋友有所帮助。Skia 是 Google一个底层的图形、图像、动画、SVG、文本等多方面的图形库,是 Android 中图形系统的引擎。Skia 作为第三方软件放在 external 目录下: external/原创 2011-12-13 18:08:23 · 7148 阅读 · 4 评论 -
JoyStick for android2.3 游戏手柄功能开发
买了个Logitech 的游戏手柄Gamepad F310需要移植到android系统中,所以花了两天时间详细预研一下需要主要开发的逻辑过程。1、首先在pc和linux上测试: pc上需要安装Logitech公司的驱动程序 针对普通linux平台上安装情况:ubuntu 下使用游戏手柄:1, 安装手柄驱动:# modprobe joydev2. 安装手原创 2011-12-24 14:55:54 · 10499 阅读 · 6 评论 -
Android -- SurfaceFlinger 合成主线程 系列 (三)
SurfaceFlinger 属于system_server进程,在system_init.cpp中利用SurfaceFlinger::instantiate()启动,在此加入到service manager中,所以本身提供service服务功能。首先看下SurfaceFlinger的类声明:class SurfaceFlinger : public Bind原创 2012-02-25 15:51:41 · 5946 阅读 · 0 评论 -
android 图形系统加速学习系列 (二)
上一节介绍下android 2D&3D库加载的过程,节绍下软件实现的libagl库并重点介绍一下copybit 2D图形加速部分。如果处理器只有2D硬件加速而没有3D硬件加速,则可以利用opengl中的libagl,实现封装在libagl里的copybit,因为相对3D API来说,这个模块的封装基本是做好的,只要去实现一个copybit HAL即可;如果处理器2D/3D硬件加速均原创 2012-01-06 17:54:16 · 7226 阅读 · 0 评论 -
android 图形系统加速学习系列 (一)
Android 系统使用OpenGL的标准接口来支持3D图形功能,包含框架层及本地代码两个主要部分,这里先介绍本地代码部分。 源代码目录为:frameworks\base\opengl\libs 在这个代码路径下面会编译生成三个库: libEGL , libGLESv1_CM.so , libGLESv2.so ,那么这三个库之间是个什么关系呢? 首先说明一下主要实现的功能:原创 2012-01-04 19:55:05 · 12121 阅读 · 2 评论 -
android系统硬件OpenGL 3D 移植
通过前面两篇文章: http://blog.youkuaiyun.com/andyhuabing/article/details/7176049http://blog.youkuaiyun.com/andyhuabing/article/details/7177757大家应该对于OpenGL的框架层有个完整的理解了,而这一篇文章将是基本总结android系统中对于OpenGL的处理流程,这也是原创 2012-03-12 16:45:06 · 6242 阅读 · 3 评论 -
Android2.3 MediaPlayer系统祥解系列(概述)
Android 的mediaplayer包含audio及video两部分的播放功能上,单独的音频或视频都是一个系统中的重要组成部分,另外一个就是显示系统部分在,在android系统最核心的就是SurfaceFlinger组件了。而音视频也同时存在核心部分:AndioFlinger及Stagefright(OpenCore)做具体的视频处理工作。1、代码位置 需要从代码阅读了原创 2012-08-13 19:42:34 · 8770 阅读 · 4 评论 -
andorid- 利用非ui线程绘图方法
Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行,常用的方法是利用Handler来实现UI线程的更新的,其本质就是利用ui主线程发送消息由另外一个非ui线程进行具体的绘制工作。使用方法非常简单,下面的例子就是利用一个Handler的handleMessage复写方法收取Message对象发送的消息进行绘制一个运行于蓝色直线上的滚动的圆形。package原创 2012-06-13 17:57:02 · 2939 阅读 · 1 评论 -
Android- NDK编译APK中native死机调试
以前在服务器编译android源码在盒子上运行死机,可通过文章: android 动态库死机调试方法 ,我们这里说的是利用eclipse+NDK编译apk的native代码如何调试http://blog.youkuaiyun.com/andyhuabing/article/details/7074979众所周知,调试android java程序可以直接在eclipse上进行单步调试,但原创 2012-06-15 11:02:58 · 5759 阅读 · 0 评论 -
Android - 动态库双向依赖解决方法
问题:昨天调试一个CA库link失败的问题:ca厂商一般提供的都是静态ca库,这样子你直接将其与你的库link在一起即可使用,但由于apk在ndk中编译器:android-ndk-r6b\arm-linux-androideabi-4.4.3而ca库使用hisi编译器:arm-eabi-4.4.0_hisi 两者使用的编译不同,所以需要在linux android环境下将ca静态库原创 2012-06-16 10:59:10 · 4179 阅读 · 5 评论 -
Android -- Parcelable 序列化操作数据(上篇)
序列化数据原理:序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机。简单说就是将数据对象存入字节流当中,在需要时重新生成对象。Android中的序列化机制:首先android系统利用Binder进行IPC通讯,且定位为针对内存受限的设备,所原创 2012-06-29 18:17:05 · 4286 阅读 · 0 评论 -
Android系统开发中LOG的输出与使用
在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录。在Android系统中,提供了简单、便利的LOG机制,开发人员可以方便地使用。在平时开发过程中经常需要与log打交道,所以很有必要了解log的使用方法及简单的原理。1、linux内核的log输出 在标准的linux内核开发过程中,使用 printk ,这是一个与原创 2013-01-28 09:46:08 · 22665 阅读 · 0 评论 -
Android 日志系统logcat内核代码分析
前一篇文章:http://blog.youkuaiyun.com/andyhuabing/article/details/8547719 简要介绍了log系统的上层使用方法,本文重点分析其log内核驱动代码,使得我们对Android日志系统有一个深刻的认识。内核代码路径:kernel/drivers/staging/android/logger.hkernel/drivers/st原创 2013-01-28 14:17:01 · 5497 阅读 · 3 评论 -
linux --- inotify 文件系统变化通知机制
linux --- inotify 文件系统变化通知机制在linux下开发过程中,用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行原创 2013-06-08 10:08:32 · 8731 阅读 · 1 评论 -
Android应用程序 --- WakeLock 保持后台唤醒状态
一些手机app(如微信、QQ等)有新消息来到达,手机屏幕即使在锁屏状态下也会亮起,并提示用户有新消息。但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,Android系统中CPU会保持在一个相对较低的功耗状态,而收到新消息必定有网络请求,而网络请求是消耗CPU的操作,那么如何在锁屏状态乃至系统进入休眠后,仍然保持系统的网络状态以及通过原创 2013-05-29 10:28:24 · 29647 阅读 · 1 评论 -
Android RecoverSystem 类
昨天开会讨论IP网络升级时,需要一个后台服务做升级检测及下载数据,最后在定义下载的数据存放位置及如何做开机标志时,突然发现一个很好用的上层java类对象。frameworks\base\core\java\android\os\RecoverySystem.java那么这个类做了什么事情呢?又是如何做到的。RecoverySystem类,可以帮助我们调用系统还原等操作:an原创 2013-07-02 11:41:33 · 7664 阅读 · 0 评论 -
android 4.2 系统编译小结
android 4.2 系统编译小结1、InputManager.java 类问题由于 InputManager 类路径及函数都发生了变化,所以用法有所不同long now = SystemClock.uptimeMillis();KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, eve原创 2013-10-10 14:31:11 · 8111 阅读 · 0 评论 -
学习webView控件使用
WebView 对象用于网页显示使用,简单的学习并使用了一下。1、首先在 layout 中摆一个全屏的 webview 控件 (main.xml ) android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="f原创 2013-10-10 17:38:04 · 4263 阅读 · 2 评论 -
Android 画图类View与SurfaceView之学习
在开发游戏开发中,android相应的提供了几个重要的模块:1、显示界面的视图: Android 提供 View 和 SurfaceView 2、控制游戏整体结构: android 提供 Activity 3、逻辑控制类:专门用于处理游戏的逻辑计算4、处理游戏界面与用户交互事件 : 利用 View 类提供的 onKeyDown onKeyUp onTounchEvent等方法原创 2013-10-12 16:40:32 · 8486 阅读 · 0 评论 -
android recovery 系统代码分析 -- 选择进入
最近做Recovery的规范及操作指导文档,花了一些时将此流程搞清。Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级。而在进入Recover前面其实还有升级检测,数据下载,启动检查等等操作。系列文章将会将整个流程梳理清楚。1、Android启动流程简要的流程图示,升级到新的版本或指定版本:系统上电时的详细检测流程图:原创 2013-07-03 12:44:16 · 15367 阅读 · 5 评论 -
android recovery 主系统代码分析
阅读完上一篇文章: http://blog.youkuaiyun.com/andyhuabing/article/details/9226569 我们已经清楚了如何进入正常模式和Recovery模式已有深刻理解了,假设进入了Recovery模式,那么其核心代码是怎么做的呢?代码路径在 android 源码的根路径: bootable\recovery 其入口文件就是 recovery.c 中原创 2013-07-05 14:05:09 · 31201 阅读 · 0 评论 -
Android 中 AsyncTask 的使用
项目中存在复杂的后台操作且不能影响ui线程显示效果,因些就有很多事情需要后台处理。因此android中提出单线程模型开发。在开发Android应用时必须遵守单线程模型的原则: Android UI 操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则:1、不要阻塞UI线程 2、确保只在UI线程中访问Android UI工具包原创 2013-09-23 10:37:05 · 5902 阅读 · 1 评论 -
android启动--深入理解启动HOME
ok, 通过前面讲解,系统已经从 init 进程 --> 启动 zygote --> 启动 SystemServer --> ??? 那么现在应该启动什么呢?从前面分析来看,基本的native及 java 世界的环境都已建立完成,那么还差一个HOME主页显示? 可视化系统下面即将开始了。在讲解 Zygote 中,有一个函数:main @ frameworks\base\cor原创 2012-03-14 17:34:14 · 7441 阅读 · 0 评论 -
android启动--深入理解zygote (II)
上一节说到 使用 Zygote.forkSystemServer 利用 fork 生成 SystemServer进程,那个这个进程到底干了哪些事情呢?下面从 handleSystemServerProcess 处理流程开始讲解代码片段如下:/* Request to fork the system server process */pid = Zygote.forkSy原创 2012-03-14 09:54:57 · 2532 阅读 · 0 评论 -
android启动--深入理解zygote
前一篇文章介绍了init进程的启动过程,其中就有解析init.rc脚本,而根据其内容配置启动了很多重要的服务:Servicemanager和zygote进程就奠定了Android的基础,建立了真正的android空间。 进程名称 进程路径zygote /system/bin/app_processservicemanager原创 2012-03-13 18:05:30 · 4711 阅读 · 0 评论 -
android启动--深入理解init进程
init是一个进程,它是linux系统中用户空间的第一个进程,其进程PID是1,父进程为linux系统内核的0号进程。所以其被赋予很多极其重要的职责,linux内核初始化完成后就开始执行它。代码路径:\system\core\init\init.c下面就分析一下先吧,只分析重点的函数功能:int main(int argc, char **argv){原创 2012-03-12 19:55:28 · 6319 阅读 · 0 评论 -
android SystemUI 流程分析
android4.0 -- SystemUI 流程分析什么是SystemUI?对于Phone来说SystemUI指的是:StatusBar(状态栏)、NavigationBar(导航栏)。而对于Tablet或者是TV来说SystemUI指的是:CombinedBar(包括了StatusBar和NavigationBar)。启动后Phone界面上的信号,蓝牙标志,Wi原创 2013-10-18 14:00:23 · 36919 阅读 · 5 评论