Android基础
pengjin1985
这个作者很懒,什么都没留下…
展开
-
Linux下JNI的实现
最近研究Android,涉及到JNI调用。虽然我对Java语言有所了解,但是还没有接触过JNI。今天在Unix Center的Ubuntu上面用JNI实现了“经典”的“Hello world”程序。通过这个简单的程序把JNI的一些小知识进行一下总结。什么是JNIJNI是Java native interface的简写,可以译作Java原生接口。Java可以通过JNI调用C/C++的库,转载 2012-04-05 16:23:05 · 244 阅读 · 0 评论 -
Android: NDK编程入门笔记
为何要用到NDK?前段时间,工作中需要用android的应用程序访问android的根文件系统中的文件,但是由于应用程序的权限限制,无法访问这些文件,怎么办? 所以这就要用到了NDK编程了,既用C/C++代码实现访问系统文件,并将其生成本地库,供android中的java代码调用,这样就可以在java代码中通过调用C/C++编写的库的接口来实现对系统文件的访问。 下面就介绍下Andro转载 2012-04-05 16:19:39 · 282 阅读 · 0 评论 -
Linux Android NDK
linux系统中,编译c++的文件,当出现找不到/usr/include/c++文件夹下面的lib时,你可以在makefile文件里使用 cc= xxxx -i加入指定的路径。cc-o 指定输入文件名-c 编译成目标文件(.o)-l 包含库-I 添加include的搜索路径-L 添加lib的搜索路径1、NDK转载 2012-04-05 16:20:32 · 529 阅读 · 0 评论 -
Android系统的Binder机制之一——Service Manager
Android虽然构建在Linux上面,但是在IPC(进程间)机制方面,没有利用Linux提供IPC机制,而是自己实现了一套轻量级的IPC机制——binder机制。并且Android Binder机制之上,Android框架提供了一套封装,可以实现对象代理(在本地进程中代理远程进程的对象)。本文简单分析一下Android Binder机制。Binder情景分析 一个IPC通讯我们可以转载 2012-04-06 16:18:36 · 361 阅读 · 0 评论 -
Android系统的Binder机制之二——服务代理对象(1)
上文《Android系统的Binder机制之一——Service Manager》我们学习了Service Manager在Android Binder中的作用——服务(Service)注册,服务(Service)查询的功能。本文我们一起学习服务(Service)在客户端中的代理机制。重点介绍其核心对象BpBinder。1、服务代理的原理 如下是客户端请求service服务的转载 2012-04-06 17:12:30 · 428 阅读 · 0 评论 -
android sp&wp
原文地址 http://blog.chinaunix.net/u3/90973/showart_2163813.htmlsp和wp的实现过程~~ 个人觉得sp和wp实际上就是android 为其c++实现的自动垃圾 回收机制 ,具体到内部实现,sp和wp实际上只是一个实现垃圾回收功能的接口 而已,比如说对*,->的重载,是为了其看起来跟真正的指针一样,而真正实现垃圾回收的转载 2012-04-06 11:10:34 · 328 阅读 · 0 评论 -
android mutex
我们在看framework层下面的一些C++文件里面总会看到这样的一行代码:AutoMutex _l(mLock);其实AutoMutex就是thread中的一种自动的互斥锁,你可以看framework/base/include/utils/thread.h就知道了:Java代码 typedef Mutex::Autolock AutoMutex;转载 2012-04-09 15:07:20 · 431 阅读 · 0 评论 -
Android Camera Framework Stream
现在我们尝试从最开始的启动流程来熟悉android camera的整体framework流程:首先从上图的各个步骤来逐一分析流程,后续会根据具体的一些点进行内容的添加和扩充: Camera.javapackages/apps/camera/src/com/android/最上层的应用就是从这个文件开始。该文件集中了整个android上层应用的所有相关内容,当然更多的则为界面转载 2012-04-09 17:09:39 · 455 阅读 · 0 评论 -
快速掌握activity的生命周期
activity的生命周期不管是在面试还是在工作中我们都会经常遇到,这当然也是非常基础的,基础也很重要哦,学会activity的生命周期对我们以后开发更健壮的程序会有很大帮助。下面来看一下Activity生命周期图: 为了便于理解,我简单的写了一个Demo,不明白Activity周期的朋友们,可以亲手实践一下,大家按照我的步骤来。 第一步:新建一个And转载 2012-04-11 15:19:43 · 320 阅读 · 0 评论 -
Android开发指南 —— Multimedia and Camera - Camera
前言 本章内容为Android开发者指南的 Framework Topics/Multimedia and Camera/Camera章节,译为"摄像头",版本为Android 4.0 r1,翻译来自:"呆呆大虾",欢迎访问他的微博:"http://weibo.com/popapa",再次感谢"呆呆大虾" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com转载 2012-04-10 17:51:52 · 432 阅读 · 0 评论 -
Android,UI主线程与子线程
在一个Android程序开始运行的时候,会单独启动一个Process。默认的情况下,所有这个程序中的Activity或者Service(Service和Activity只是Android提供的Components中的两种,除此之外还有Content Provider和BroadcastReceiver)都会跑在这个Process。 一个Android 程序默认情况下也只有一个Pr转载 2012-04-11 15:16:24 · 346 阅读 · 0 评论 -
SharedPreferences 的用法
SharedPreferences存储类效率分析SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存,它是什么样的处理方式转载 2012-04-11 14:40:09 · 297 阅读 · 0 评论 -
Android init 启动过程分析(二)
前言Android系统是运作在linux kernal上的,因此它的启动过程也遵循linux的启动过程,当linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,它的生命周期贯穿整个linux 内核运行的始终, linux中所有其他的进程的共同始祖均为init进程。当然为了启动并运行整个android系统,google实现了自己的init进程,下面主要分析init进程都转载 2012-04-24 17:06:58 · 410 阅读 · 0 评论 -
Android init 启动过程分析(一)
分析android的启动过程,从内核之上,我们首先应该从文件系统的init开始,因为 init 是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/,/bin/ 等目录下查找默认的init,如果没有找到那么就报告出错。下面是曾经用过的几种开发板的命令行参数:S3C2410 启动参数:noinitrdroo转载 2012-04-24 17:04:43 · 423 阅读 · 0 评论 -
android的binder机制研究(C++部分)
(一) 概述 android的binder机制提供一种进程间通信的方法,使一个进程可以以类似远程过程调用的形式调用另一个进程所提供的功能。binder机制在 Java环境和C/C++环境都有提供。 android的代码中,与C/C++的binder包括一些类型和接口的定义和实现,相关的代码在下面这几个文件中:frameworks\base\include\utils\转载 2012-04-13 14:16:30 · 335 阅读 · 0 评论 -
android开发之VIM快捷键使用指南
android的代码包括JAVA,C,C++和各种脚本,算起来有十几万个文件,阅读,编辑,使用这些代码,需要寻找一款合适的软件才能事倍功半。运行在WINE模式下的source insight工具不仅反应很慢,而且有很多符号在阅读时根本就不会跳转,令人非常困惑。因此我们大部分人只能入乡随俗,要么使用eclipse,要么使用VIM或者EMACS.VIM和EMACS作为linux下的两大编辑神器,对于从转载 2012-04-26 15:42:06 · 515 阅读 · 0 评论 -
android lunch 分析
转自:http://www.lupaworld.com/home.php?mod=space&uid=131820&do=blog&id=149462build/envsetup.sh 脚本分析(lunch函数)lunch函数提供了一个菜单,让开发人员选择需要编译的目标产品(target product)和变体(variant),并做一些检查,设置环境变量,并打印出主要的环境变量。转载 2012-04-26 10:56:36 · 506 阅读 · 0 评论 -
如何查看下载的android源码是哪个版本的
如何查看下载的android源码是哪个版本的 编译的时候从makefile的信息中确实可以看到,另外还可以从git(.repo/manifest.xml)中查询,或者到build/core/version_plaform.mk中去查询plaform_version的定义值转载 2012-04-26 11:22:06 · 434 阅读 · 0 评论 -
git学习网址
http://opengit.org/open/?f=progit_02-git-basics原创 2012-04-26 09:54:18 · 309 阅读 · 0 评论 -
Android.mk 文档规范
Android.mk 编译文件是用来向 Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法。在阅读下面的内容之前,假定你已经阅读了 docs/OVERVIEW.TXT 文件,了解了它们的脚色和用途。一、概述 一个 Android.mk file 用来向编译系统描述你的源代码。具体来说: (1) 该文件是GNU Makefile的一小部转载 2012-04-27 15:28:42 · 448 阅读 · 0 评论 -
Android模块化编译的方法详解
1、我们平常在编译Android源码,有时并不需要编译整个Android源码,而只需要编译模个模块,这是可以使用mmm工具来编译。其使用方法是:mmm ,如编译frameworks下的所有文件,则可以这样子:. build/envsetup.sh && choosecombo 1 1 2 3 &&export ANDROID_JAVA_HOME=$JAVA_HOME && mmm fr转载 2012-04-27 15:25:59 · 589 阅读 · 0 评论 -
编译问题:user tag detected on new module
gingerbread # make============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=2.3.1TARGET_PRODUCT=genericTARGET_BUILD_VARIANT=engTARGET_SIMULATOR=TARGET_BUILD_TYPE转载 2012-04-27 15:01:23 · 1118 阅读 · 1 评论 -
Android 4.0 external下功能库说明
Android 4.0 external下功能库说明 搞了半天android,竟然对external下的库一无所知?不能容忍!马上解决:android-mock:编译为java静态库。说明:Android Mock is a framework for mocking interfaces and classes on the Dalvik VM。资料http://code转载 2012-04-28 09:32:17 · 527 阅读 · 0 评论 -
'O_BINARY' undeclared (first use in this function)
解决办法来自:http://answers.google.com/answers/threadview/id/185259.html在出现问题的文件加入如下:#ifndef O_BINARY #define O_BINARY 0 #endif转载 2012-04-28 09:45:59 · 8067 阅读 · 0 评论 -
从Camera来看Binder IPC机制
Camera App通过framework中Camera java类进入jni部分,在android_hardware_Camera.cpp中:android_hardware_Camera_native_setup(){ sp camera = Camera::connect();}这里调用Camera类的connect函数,返回一个Camera强指针。后续如sta转载 2012-04-17 11:53:37 · 477 阅读 · 0 评论 -
JNI和NDK的区别
JNI和NDK的区别NDK(Native Development Kit)“原生”也就是二进制android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等java调用这样实现就需要用JNI(Java Native Interface)平时用的也就是google给我们封装的好的库,即便是底层实现用的不是Java,但都有统一的J转载 2012-04-17 11:58:37 · 505 阅读 · 0 评论 -
Android底层库和程序
1、本地实现的基本结构Android的本地实现层次具有基本的库和程序,这些库和程序是Android基本系统运行的基础,主要包含以下内容:l 标准C/C++库Bionic;l C语言工具库libcutils;l init进程;l shell工具;l C++工具库libutils。2、 增加本地库的方法Android中增转载 2012-04-17 11:59:32 · 444 阅读 · 0 评论 -
Ubunu下搭建android NDK环境
为何要用到NDK?概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。 3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。下面就介绍下Android NDK的入门学转载 2012-04-17 11:58:43 · 504 阅读 · 0 评论 -
Android JNI 使用的数据结构JNINativeMethod详解
Android JNI 使用的数据结构JNINativeMethod详解2009-04-02 15:53Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的区别是Andorid使用了一种Java 和 C 函数的映射表数组,并在其中描述了函数的参数和返回值。这个数组的类型是JNINativeMethod,定义如下:typedef st转载 2012-04-17 11:58:13 · 348 阅读 · 0 评论 -
Linux平台Java调用so库-JNI使用例子
Linux平台Java调用so库-JNI使用例子1.确保gcc编译器已安装2.编写HelloJNI.java代码,用native声明需要用C实现的函数。如果源程序是包含在package里的话,应该建立同样的文件夹结构,比如/home/swan/test/net/wangliping/HelloJNI.javapackage net.wanglipingpubli转载 2012-04-17 11:59:13 · 467 阅读 · 0 评论 -
android 命令大全
目录1 android.bat 2 emulator.exe 3 ddms.bat 4 系统信息 5.Android shell命令大全android.bat 1.1 查看帮助信息: Android.bat –h 或 android.bat –help 1.2 创建avd (1) android.bat转载 2012-04-17 12:00:03 · 664 阅读 · 0 评论 -
android调试工具adb
adb 全称 Android Debug Bridge(调试桥)。一,adb的作用adb是一个多用途工具,用来管理模拟器或设备。二,组成结构adb是C/S模式的程序,它包含三个组件:client,server,deamon。1,Client是运行在我们自己的电脑上。可以通过adb命令来启动Client。其他的android工具,如ADT插件和DDMS也可以创建client。转载 2012-05-03 13:43:41 · 814 阅读 · 0 评论 -
stagefright与opencore对比(转)
1引言Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用。Stagefright自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android诞生起便存在,稳定性有保障转载 2012-04-20 16:17:39 · 341 阅读 · 0 评论 -
ERROR:do_inode_allocate_extents: Failed to allocate 71 blocks
在编译android源码时,出现下面错误: 1 make_ext4fs -l 167772160 -a system out/target/product/Mary/system.img.ext4 out/target/product/Mary/system 2 Creating filesystem with parameters: 3 Size: 167772160转载 2012-05-04 15:38:57 · 7245 阅读 · 0 评论 -
MemoryHeapBase内存分配
几个与内存相关的类的头文件如下所示:IMemory.h:定义内存相关类的接口,表示堆内存的类IMemoryHeap和BnMemoryHeap,表示一般内存的类IMemory和BnMemory。MemoryHeapBase.h:定义类MemoryHeapBase,继承并实现BnMemoryHeapMemoryBase.h:定义类MemoryBase,继承并实现BnMemory在一转载 2012-05-04 14:15:43 · 1814 阅读 · 0 评论 -
Android的MediaPlayer架构介绍
本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构。对于Android这样一个完整又相对复杂的系统,一个MediaPlayer功能的实现不在其具体的功能,而是具体功能如何适应Android系统Android MediaPlayer的主要具体实现在OpenCore的Player中,这部分不是本文的关注点。本文关注的是MediaPlayer系统的架构,转载 2012-04-24 11:25:43 · 536 阅读 · 0 评论 -
git:如何用git-am来合并git format-patch生成的patch
这篇文章主要介绍一下git-am 和 format-patch 的使用。git format-patch:当你想给一个开源项目(例如Rails)提交一段代码的时候,或者你想给小组成员展示一段你并不想提交的代码,那么你还是需要 patch的,Git的'format-patch'命令良好的支持了这个功能。我来基本描述一下使用这个命令的步骤和方法:第一,利用branch命令创建一个分支;第二,修转载 2012-08-23 09:09:27 · 599 阅读 · 0 评论 -
git 撤销commit
如果不小心commit了一个不需要commit的文件,可以对其进行撤销。 先使用git log 查看 commit日志 Python代码 commit 422bc088a7d6c5429f1d0760d008d86c505f4abe Author: zhyq0826 Date: Tue Sep 4 18:19:23转载 2013-03-14 13:57:59 · 753 阅读 · 0 评论 -
Android 多媒体扫描过程(Android Media Scanner Process)
下面是系统图 MediaScannerReceiver会在任何的ACTION_BOOT_COMPLETED, ACTION_MEDIA_MOUNTED或 ACTION_MEDIA_SCANNER_SCAN_FILE 意图(intent)发出的时候启动。因为解析媒体文件的元数据或许会需要很长时间,所以MediaScannerReceiver会启动MediaScan转载 2013-03-15 16:28:47 · 415 阅读 · 0 评论 -
Android Power Management
Android 的电源管理也是很重要的一部分。比如在待机的时候关掉不用的设备,timeout之后的屏幕和键盘背光的关闭,用户操作的时候该打开多少设备等等,这些都直接关系到产品的待机时间,以及用户体验。在网上可以找到一篇到处转载的关于power management的文章http://blog.csdn.net/hzdysymbol/archive/2009/03/19/4004791.aspx,不转载 2013-03-25 11:16:00 · 519 阅读 · 0 评论