android
文章平均质量分 77
andy_android
本人接触android从2010年至今,能力有限,如果博客有什么错误,希望大家原谅,只是希望把android知道的分享出来,大家一同进步,主要以应用,framework为主,像驱动也接触,如果大家有什么问题可以qq我,在我能力范围内,必告之 QQ:813126419
展开
-
Android输入法框架
/frameworks/base/services/java/InputMethodManagerService.java这是整个系统当中,一切与输入法有关的地方的总控制中心。它通过管理下面三个模块来实现系统的输入法框架。1、/frameworks/base/services/java/WindowManagerService负责显示输入法,接收用户事件。2、/frameworks转载 2012-01-13 17:45:13 · 2732 阅读 · 0 评论 -
Webkit for Android
一、WebKit简介WebKit是一个开源的浏览器网页排版引擎,包含WebCore排版引擎和JSCore引擎。WebCore和JSCore引擎来自于KDE项目的KHTML和KJS开源项目。Android平台的Web引擎框架采用了WebKit项目中的WebCore和JSCore部分,上层由Java语言封装,并且作为API提供给Android应用开发者,而底层使用WebKit核心库(W转载 2012-02-03 12:27:02 · 1255 阅读 · 0 评论 -
Android启动过程的深入研究
对于关注Android底层的朋友来说,其具体的启动过程应该是比较吸引我们的。但是很多启动文件什么的,都得adb push到host上来看,挺不方便的,都怪Android自带的Toolbox太简略了。所以在深入了解Android的启动流程之前,我们来把Busybox安装到Android上去,这样,就有很多工具供我们使用了。 首先去busybox主页 下载最新版本的源代码,然后用arm的交叉编译原创 2012-02-02 12:40:04 · 1330 阅读 · 0 评论 -
Android SimpleAdapter,SimpleCursorAdapter,ArrayAdapter的区别
数据源不同而已1. String[]: ArrayAdapter2. List>: SimpleAdapter3. 数据库Cursor: SimpleCursorAdapter使用ArrayAdapter(数组适配器)顾名思义,需要把数据放入一个数组以便显示。android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字Simpl原创 2011-12-21 09:39:21 · 1566 阅读 · 0 评论 -
Android 自动化测试之Monkey
前言:最近开始研究Android自动化测试方法,对其中的一些工具、方法和框架做了一些简单的整理,其中包括android测试框架、CTS、Monkey、Monkeyrunner、benchmark、其它test tool等等。因接触时间很短,很多地方有不足之处,希望能和大家多多交流。 一、 什么是MonkeyMonkey是Android中的一个命令行工具,可以运行在模拟器里或实际设原创 2012-02-08 12:41:44 · 1486 阅读 · 0 评论 -
android自动化测试之CTS
根据Android官网给出的android-cts-manual 配置好了device后,开始测试。首先配置软件环境:1、下载Android-2.1系统,并编译。$ . build/envsetup.sh //配置选项,并编译android源码$ make cts //android源码编译好后,在编原创 2012-02-08 12:46:08 · 1870 阅读 · 0 评论 -
android自动化测试之Benckmark
一、Android设备上的Benckmark测试概述同PC相比,在Android设备上的性能测试还没有一个公认的标准。也没有PC上那么多的测试程序集。但我们可以通过一些工具所得到的信息更好的了解设备的特性,毫无疑问,这也是非常有价值的参考信息。Benchmark Test的关键就在于如何找到这一个标准以及能够提供测试各种性能的功能强大的程序集。二、目前Android平台上的测试工具收集原创 2012-02-08 12:47:31 · 1755 阅读 · 0 评论 -
Android自动化测试之monkeyrunner
前言:最近开始研究Android自动化测试方法,对其中的一些工具、方法和框架做了一些简单的整理,其中包括android测试框架、CTS、Monkey、Monkeyrunner、benchmark、其它test tool等等。因接触时间很短,很多地方有不足之处,希望能和大家多多交流。一、什么是monkeyrunnermonkeyrunner工具提供了一个API,使用此API写出的原创 2012-02-08 12:43:30 · 1740 阅读 · 1 评论 -
Android PackageManagerService详细分析
概要本篇主要分析了系统启动阶段包管理服务的启动流程,其中的几个接口在 apk 安装时也会被调用。包管理服务启动时主要做的工作大致有如下几方面: 1. 建立 java 层的 installer 与 c 层的 installd 的 socket 联接,使得在上层的 install,remove,dexopt等功能最终由 installd 在底层实现 2. 建 立 Pac原创 2012-02-09 16:00:46 · 16666 阅读 · 10 评论 -
Android 编码规范 | 代码风格指南
一、异常1.不要忽视异常处理如果像下面的代码这样,对catch后的异常作空处理,就像埋下地雷一样让人感觉到毛骨悚然:错误的做法: void setServerPort(String value) { try { serverPort = Integer.parseInt(value); } catch (NumberFormatExcep原创 2012-02-15 11:12:14 · 1402 阅读 · 0 评论 -
Android设备上安装busybox
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。也包含了 And原创 2012-02-23 17:50:57 · 2082 阅读 · 0 评论 -
android build 过程 (ramdisk.img、sytem.img、userdata.img)和 启动过程简单分析
首先下载下android源码并编译,网上的资料特别多,可以参考一下这个http://blog.csdn.net/andy_android/article/details/6925460按照上面网址的步骤,将android内核编译成功,如果不出意外的话,在out/target/product/generic目录下会生成三个文件,分别是ramdisk.img、sytem.img、userdat原创 2012-02-02 12:54:45 · 2505 阅读 · 0 评论 -
Android 开发中Parcel存储类型和数据容器
在android中使用Parcel(存储基本数据类型和引用数据类型的容器)通过IBinder来绑定,这种方法的作用是让数据在进程间传递数据,Parcel定位就是轻量级的高效的对象序列化和反序列化机制。在Framework中有parcel类,源码路径是:Frameworks/base/core/java/android/os/Parcel.java典型的源码片断如下:/Write原创 2012-02-01 17:13:58 · 1090 阅读 · 0 评论 -
Android系统架构
android系统架构图android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。 1.应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是原创 2012-01-19 16:15:08 · 999 阅读 · 0 评论 -
全面认识Android手机 (MIUI ROM适配之旅第一天——认识Android手机 )
在MIUI论坛里读了读“MIUI ROM的适配教程",觉得很不错,我觉得对大家很有帮助,我就转载了原文章论坛地址 :http://www.miui.com/forum-forumdisplay-fid-38-page-1.html总共六部分:第一部分:先认识一下Android手机的软件结构,介绍一些基本概念。第二部分:准备工作,包括一些工具和环境的搭建。第三部分:反转载 2012-01-19 16:44:15 · 2214 阅读 · 0 评论 -
全面认识Android手机(MIUI ROM适配之旅第二天——准备工作)
1. 搭建移植环境 “工欲善其事,必先利其器”。在制作自己的ROM之前我们必须做好准备工作,搭建好移植环境。 我们这个系列的主旨是如何基于原厂ROM修改。我们所涉及的修改理论上说是不需要源码的,对源码开发感兴趣的可以参照http://source.android.com。对于ROM制作者来说,我们建议你下载一份google发布的android源代码,这不是必需的,但是对转载 2012-01-19 16:45:54 · 1875 阅读 · 0 评论 -
全面认识Android手机(MIUI ROM适配之旅第三天——反编译)
首先说句抱歉,今天事情比较多,教程出来的比较晚,请包含。今后几天也会稍晚一点,但是我会每天更新的。 今天我们来详细的看看反编译,想要修改一个系统自带的应用程序和它的代码,在没有源码的情况下,我们就不得不用反编译来修改。 和很多书籍一样,为了向经典的"Hello, World"致敬,我们也从一个简单的程序开始HelloActivity.apk。当你把这个APK安装到手机上转载 2012-01-19 16:47:31 · 1878 阅读 · 0 评论 -
全面认识Android手机(MIUI ROM适配之旅第四天——移植MIUI Framework)
1. 为什么使用代码插桩 首先我们来回顾第一章中的Android软件架构图,这个图中框架层的代码完全是由Java语言编写的,对于这两层的代码,在没有源代码的情况下我们可以采取代码插桩的方式来注入我们的代码。但是对于下面几层的代码几乎都是以机器码的形式存在,机器码也是可以修改的,但是修改难度和修改smali代码的难度不可同日而语。我们这个系列的文章不介绍如何修改这些机器码,大家有兴趣的转载 2012-01-19 16:49:33 · 2376 阅读 · 2 评论 -
在android C/C++ native编程(ndk)中使用logCat
在Android 2.3.3源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘:第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog第二步:在要使用LOG的cpp原创 2012-01-29 10:26:43 · 1327 阅读 · 0 评论 -
Android 4.0新增WiFiDirect功能
Android 4.0引入了一项很重要的技术就是 WiFiDirect (WiFi直连) ,它可以让WiFi设备无需热点即可实现两个WiFi设备的P2P数据交换。使用最新的Android 4.0 SDK,最低API Level 14才支持此项技术,在SDK的例子中我们可以看到很多界面用到了Android 3.0时代的Fragment容器。 首先我们需要实现android.net.wifi.p原创 2012-02-01 09:28:48 · 1448 阅读 · 0 评论 -
将HTML5封装成android应用APK 文件若干方法
作为下一代的网页语言,HTML5拥有很多让人期待已久的新特性。HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动设备上使用HTML5技术。随着HTML5跨平台支持的不断增强和智能手机的迅速普,HTML5技术有着非常好的发展前景,甚至有人预言HTML5将引燃移动平台游戏开发技术的新革命。 越来越多的开发者热衷于使用html5+JavaScript开发移动Web原创 2012-02-01 12:16:51 · 3178 阅读 · 0 评论 -
android 资源文件的使用说明
1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。在后面会介绍如何读取assets文件夹的资源! res文件夹里面的多个文件夹的各自介绍(来自网上的Android开发指南中文版原创 2012-02-01 12:19:24 · 1432 阅读 · 0 评论 -
Android Service实现详细过程
一、Android Service介绍Android的Service分为两种:Android Service和Native Service。Android Service:又称为Java Service,是实现在框架层(framework)里的Server。Android Service以Java编写。Native Service:又称为System Service,是实现在Runti原创 2012-02-28 13:46:27 · 3273 阅读 · 0 评论 -
android的文件系统结构简单介绍
1、android文件系统的结构android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中,ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系原创 2012-02-28 17:54:33 · 2091 阅读 · 0 评论 -
Android OOM与 leak window
OOM是Android Out Of Memory的缩写,基于Android开发应用时,可能经常出现Out Of Memory 异常.在Android中,一个Process 只能使用16M内存,要是超过了这个限定就会跳出这个异常。这样就要求我们要时刻想着开释资源。Java的回收工作是交给GC的,如何让GC能实时的回收已经不用的对象,有许多办法。 因为总内存的施用超过1原创 2012-02-29 10:21:19 · 4954 阅读 · 6 评论 -
Android4.3 Bluetooth基本介绍
蓝牙定义 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对原创 2013-10-25 11:08:30 · 4062 阅读 · 2 评论 -
Android4.3 Bluetooth 抓取hci log
Android4.2之前抓取hci log都是通过hcidump命令完成的,但是Android4.2 Bluetooth引入了Bluedroid,这是一个新的蓝牙协议栈。所以抓取hci log的方法也改变了。在我的Bluetooth计划里,本来是没打算写这篇blog的,但是在留言里看见有人问,所以写出来分享给那些目前还不会的。在Android 4.2之后, Bluetooth控制hcidu原创 2013-11-05 10:51:02 · 8190 阅读 · 12 评论 -
Android开源项目汇总
下面是一些比较好的开源项目,总共分为5大类,也许对某一些人有用,有些项目也许将来某一天对自己也有用,所以整理到此,希望对大家有帮助。首先声明非原创,这篇blog的目的是分享给那些可能需要的人。Android开源项目第一类——个性化控件(View)Android开源项目第二类——工具库Android开源项目第三类——优秀项目Android开源项目第四类——原创 2014-01-10 14:01:45 · 3341 阅读 · 4 评论 -
编译external/icu4c/data方法
在做下面操作之前必须source build/envsetup.shchoosecombo # 具体步骤:# 1)新增或者修改external/icu4c/data目录下的资源# 2)创建一个临时目录:# crootrm external/icu4c/stubdata/icudt48l-all.datrm external/icu4c/stubdat原创 2014-03-05 15:53:21 · 3177 阅读 · 0 评论 -
Android_L(64bit) 模拟器配置及创建项目
Android L可能就是Android 5.0。随之而来的还有Android Watch, Android TV。而据说在10月中旬也就是15号Google的发布会上应该会推出Nexus 6和Nexus 9,这两个新品都是搭载Android L,而Nexus 9应该是搭载Navidia的64位CPU, 而且之前的Nexus5和7应该都会接到升级推送。而就在10.9号,Go原创 2014-10-11 10:44:09 · 2178 阅读 · 0 评论 -
android推送
最近一个月一直在考虑实现一种让Android开发者一个人就能完成的推送功能库。因为现有的推送功能,全部都需要服务器端配合,不断测试,即使使用第三方库也需要很长一段时间的测试。推送功能在Android应用开发中已经非常普遍了,本文就是来探讨下Android中推送的底层原理与实现推送功能的一些解决方案。1、什么是推送? 当我们开发需要和服务器交互的应用程序时,基本上都需要获转载 2015-01-14 15:05:34 · 1205 阅读 · 0 评论 -
android蓝牙打印
这是转载的,版权归原作者所有。最近在做一个安卓应用,其中有一个需求是要求用蓝牙连接打印机实现打印功能。一开始没有一点头绪,网上找了很多资料也找不到有用的数据。所以自己就去研究,最终,功夫不负有心人,顺利的完成了这个功能。下边贴出我写的代码,共有需要的IT哥们参考学习。完整源码下载我们先看看运行效果图吧。。。1.这是主界面的效果图贴转载 2015-01-14 17:15:09 · 1775 阅读 · 0 评论 -
android 语言定制
本文是主要对android定制多语言的问题进行深入研究后,总结了其定制的机制和其具体实现方法。如果想深入了解其定制的机制,可阅读本文第一部分,如果只想了解如何定制,请参考第二部分。第一部分 多语言定制的机制 1、ICU4C简介 ICU4C(ICU for C, http://site.icu-project.org/ ) 是ICU在C/C++平台下的版本, IC原创 2015-02-09 17:12:38 · 1426 阅读 · 0 评论 -
Android APK反编译 详解
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考了一些文章后简单的教程详解。(注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)转载 2015-01-05 14:24:13 · 1039 阅读 · 0 评论 -
Android中使用addr2line来分析native信息
系统:Ubuntu12.04手机系统:Android5.0在Android的开发过程中有会有很多的native bug必须要用addr2line来分析,并且这个工具也非常的好用。下面我们来看看具体的使用。烧录到手机上的版本和你电脑上的编译出的版本要一致,这个数据才是准确的,才好定位到那一行。首先找到自己电脑可用的addr2line,用命令find . -name *addr2lin原创 2015-02-28 14:38:06 · 20411 阅读 · 0 评论 -
Android4.3 Bluetooth开篇
时间飞逝,感觉停止写blog也没多久,但是一看自己上篇blog的更新时间,才知道很久没有写了。主要是时间抽不过来,不过我会争取一些时间来写这个专题的blog。 说实话,写这个专题的blog,我也没有太大的把握写完,Bluetooh是一个庞大的东西,而不是说他有多难,而是他的内容比较多,有N多协议,要想掌握它,没个4-5年,我估计还是比较困难的。我为什么要写这个blog,主要原因是googlG原创 2013-10-14 17:19:27 · 3139 阅读 · 8 评论 -
android获得日升日落时间
获得日升日落时间的关键代码就是下面这个服务,当然要去manifest里注册和启动这个服务package com.android.options;import android.app.Service;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import原创 2013-03-29 09:05:10 · 2620 阅读 · 0 评论 -
android framework Service分析
android系统启动时会加载bootloader,之后会boot(kernel),之后会加载文件系统ramdisk,这里面包括加载的system,userdata,init.c,init.rc等,在解析init.rc 时会解析 service servicemanager/system/bin/servicemanager 会执行servicemanager.java原创 2012-03-07 11:21:29 · 5290 阅读 · 2 评论 -
Android中window,view,Activity的关系
Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等。 并维护应用程序的生命周期。Activity本身是个庞大的载体,可以理解成是应用程序的载体,如果木有Activity,android应用将无法运行。ActivityManagerService负责维护Activity的实例对象,并根据运行原创 2012-03-27 14:49:11 · 1866 阅读 · 0 评论 -
android Binder工作流程
一.Linux系统进程间主要通信方式 1.socket; 2.name pipe命名管道; 3.message queue消息队列; 4.singal信号量; 5.share memory共享内存; 6. semophore信号量 二.Java系统的主要通信方式 1.socket; 2.name pipe; 三.An原创 2012-03-27 15:05:38 · 1610 阅读 · 0 评论