android
天堂1223
这个作者很懒,什么都没留下…
展开
-
android使用JNI调用C,C++
android环境下cdt的安装和NDK的配置也就不说了,有很多这样的博客文章进行讲解,现在我要说的就是通过JNI来调用C函数和C++函数。首先,新建普通的android程序。我们姑且命名为JNITest新建完成之后,即为普通的android项目现在就开始我们的JNI之旅:(一)、JNI调用C函数1:在项目目录下新建一个jni文件夹如图原创 2014-07-01 16:46:49 · 889 阅读 · 0 评论 -
验证的启动
介绍 Android 4.4和后续版本通过可选的dm-verity内核特征来支持验证启动,其会提供透明的块设备的完整性检查.dm-verity能帮助阻止root组件,该组件能够获取root特权.该实验特征能够帮助在启动设备的时候检查是否和上次使用过的一样. 带有root特权的聪明的恶意软件能够隐藏检测程序,因此能够隐藏他们自己.root软件可以这样做,因为他们比检测程序有更多特权,使得软原创 2016-02-25 16:42:49 · 2717 阅读 · 0 评论 -
android全磁盘加密
android 全磁盘加密 什么是全磁盘加密?全磁盘加密是使用一个密钥来为android设备上所有的用户数据加密的过程。一旦设备被加密,所有的用户创建的数据都将会在提交的磁盘之前自动加密,在读取之前都会自动解密。Android 5.0中添加了啥创建了快速加密,该加密方式仅仅加密在数据分区中使用块设备的数据来避免第一次启动耗费较长时间。仅仅ext4和f2fs文件系统支持快速加密。在首次启动的原创 2016-02-23 12:09:39 · 9764 阅读 · 6 评论 -
ListView实现物流追踪
目前我的一个项目中需要物流追踪界面实现,我想到时候ListView来实现物流追踪界面。下面我们先来看一下界面实现的效果:该效果完全是使用ListView来实现了,下面我们来看一下是如何实现的(一):布局ListView并编写Item布局首先需要在布局上面编写ListView:```<RelativeLayout xmlns:android="http://schemas.android.com/a原创 2016-03-24 10:53:51 · 4069 阅读 · 4 评论 -
CM android的CMUpdater分析(一)
(一):写在前面目前正在从事一个项目,该项目需要修改CM android的CMUpdater源码,将更新程序修改为面向我们项目的程序.我们使用平时的IDE无法看到一些界面等实时预览,所以我们准备使用eclipse来进行项目的修改.由于CMUpdater是系统应用,所以我们将CMUpdater导入到eclipse中的时候便会报错,其中包括android.jar中的hide api和internal a原创 2016-04-11 17:29:15 · 1716 阅读 · 0 评论 -
CM android的CMUpdater分析(二)
至于为何要在这里讲解android系统源码中的系统更新,我已经在上一篇《 CM android的CMUpdater分析(一)》中介绍了。在上一篇中,主要讲解了在eclipse中如何搭建系统应用的开发环境,现在我们就使用eclipse来分析CMUpdater源码。该系统更新是CM修改原生android的基础上实现的。通过分析android系统的应用源码,可以学到一些很好的思想和编程方法学。好了,废话少原创 2016-04-15 10:17:21 · 4664 阅读 · 1 评论 -
android开发ndk调用第三方so库
1.0 功能概述1.0.1 概述在android开发中,java调用C/C++函数库是经常遇到的,我们的android开发中使用JNI开发技术,有下面几种情况:已经使用C/C++发了某些函数库,如果再使用java封装相应的函数库的话,可能会话费更多的人力物力,所以这样就可以使用JNI来使java直接调用C/C++封装的函数。某些高复杂性计算以及密集型计算,对时间要求很高的计算,使用java的效率原创 2016-10-28 16:26:01 · 16844 阅读 · 10 评论 -
Android系统启动过程学习
使用 android 手机已经长时间了,同时,从大学学习 android 开发开始,也进行过多款 android app 项目的开发,但是对 android 内部的启动过程,即当我们从按下电源键开机开始, android 系统内部是如何运行的,由于android 系统的内核使用的是 linux 内核,那么在启动过程中,android 系统和桌面Linux系统的启动过程是否是一样的?我们在之前的一篇原创 2016-12-21 10:03:43 · 3253 阅读 · 0 评论 -
Android 6.0启动过程详细解析
在之前的一篇文章中,从概念上学习了Andoird系统的启动过程,Android系统启动过程学习而在这篇文章中,我们将从代码角度仔细学习Android系统的启动过程,同时,学习Android启动过程中的初始化脚本语言,即init.rc中的语言语法。在这里,不在详细介绍Linux内核的启动过程,主要学习从Linux内核启动之后,init初始化是如何工作的,他是如何启动Android系统的第一个进程–Zy原创 2017-02-27 19:00:21 · 3640 阅读 · 0 评论 -
Android的ART和Dalvik
Android 运行时机制,即为ART,是一个管理的运行时机制,被android系统上的应用程序和一些系统服务使用。ART和他的前辈Dalvik初始被创建专门用于Android项目。ART作为运行时可以执行Dalvik可执行格式和Dex字节码的规范。ART和Dalvik在运行Dex字节码上是兼容的,所以为Dalvik开发的apps应该在运行ART的系统上也能够正常运行。然而,一些专门为Dalvik设原创 2017-02-28 00:56:16 · 2506 阅读 · 0 评论 -
Android Init Language(android初始化语言)
Android Init LanguageAndroid初始化语言Android初始化语言包含四个广泛的陈述类,为Actions(行为),Commands(命令), Services(服务)和Options(选项)。所有的这些都是基于行的,包括空格分隔符。C风格的反斜杠可以用来插入空格到一个 命令中。双引号可以被用来阻止空格将文本分割成多个标记。当反斜杠为一行中的最后 一个字符的时候,可以被用原创 2017-02-21 22:51:41 · 1748 阅读 · 0 评论 -
Dalvik字节码
总体设计机器模型和调用约定是近似模仿常见的真实的架构和C风格调用约定。机器是基于寄存器的,并且框架在被创建的时候是固定大小的。每一框架包含一个特定数量的寄存器(由函数指定)和一些需要执行该函数的附属的数据,例如(但不限制在这些)程序计数器和包含该方法的.dex文件的引用。当用于位值的时候(例如整数和浮点数),寄存器被认为是32位宽度。相邻的寄存器对被用于64位值。对于寄存器对没有对齐要求。当用原创 2017-03-03 16:33:07 · 1820 阅读 · 0 评论 -
如何将CM android移植到你的设备(二)
(一):写在前面在上面一个小节当中,我们学习了将CM移植到我们自己的设备的上半部分,这里,我们将下半部分学习一下,并尝试讲CM移植到一个平板上去。(二):承接上文device_[codename].mk文件device_[codename].mk包含关于构建哪一个Android包,去哪里复制指定文件和包或者是在整个编译阶段要设置的指定属性等的指令。该文件可以在编译阶段被用来讲重要文件复制到ramdi原创 2015-12-21 15:56:08 · 2615 阅读 · 0 评论 -
如何讲CM Android移植到你的设备?
关于将cm android移植到你的设备上的一些技巧你可能会遇到CM并不支持的手机设备或者是平板设备。原来的时候我们可能会编译那些cm支持的设备源码,并将其烧录到设备中来测试运行,那个过程是相当轻松的,但是如果要移植到CM并不支持的设备上去的话,可能需要费点力气。在这边文章中,我们假设你所在的目录是android的源码根目录。先决条件移植cm到一个新的设备上去可以是非常简单的,也可能是非常困难的,原创 2015-12-17 16:35:26 · 4317 阅读 · 0 评论 -
android使用JNI调用C,C++程序
(接着上一篇讲)里面定义的函数基本上看名字就可以知道他们的用处,这里就不再罗嗦。(2)、jstring为JNI中的String类型(3)、Java_com_example_jnitest_MainActivity_HelloJniJNI中本地代码函数名的命名规则Java_包名_调用该方法的类名_函数名(4)、参数 JNIEnv *原创 2014-07-01 16:48:42 · 1251 阅读 · 0 评论 -
android回调函数
在我们进行android开发的时候,经常遇到一些回调函数,其中,我们最常用的回调就是,当我们对一个组件设置监听的时候,其实就相对于设置的回调函数。例如:Button btn = (Button)findViewById(R.id.btn);btn.setOnClickListener(new Button.OnClickListener(){//创建监听 public原创 2015-07-11 00:48:42 · 1686 阅读 · 0 评论 -
Android的硬件抽象层模块编写规范
硬件抽象层模块编写规范 Android系统的硬件抽象层以模块的形式来管理各个硬件访问接口.每一个硬件模块都对应有一个动态链接库文件.这些动态链接库文件的命令需要符合一定的规范.同时,在系统内部,每一个硬件抽象层模块都使用结构体hw_module_t来描述,而硬件设备则使用结构体hw_device_t来描述.下面我们跟着老罗来学习描述硬件抽象层模块文件的命名规范以及结构体hw_module_t原创 2015-08-24 14:04:57 · 1520 阅读 · 1 评论 -
android源码的编译问题总结
由于目前的项目需要修改android的内核源码,所以我需要从android源码的编译开始学习.下面看一下我的编译环境. 我使用的Ubuntu系统的版本是14.04,64位. gcc版本:4.8.8编译过程我是看着google开发者官网,以及结合别人的博客进行编译的.编译的过程会遇到很多问题,在这里,我就把我遇到的问题总结一些,以便以后用到的时候容易查看,也方便别人编译android的时候遇到相同原创 2015-08-16 22:30:58 · 2288 阅读 · 0 评论 -
android源码编译完成之后
android源码编译完成之后,在根目录下会有一个out目录生成,如果我们想要运行虚拟机的话,需要配置一下环境变量.首先我们使用下面的命令打开配置环境变量的文件:gedit ~./bashrc在这个文件的最后,添加如下代码:export ANDROID_PRODUCT_OUT=~/android/out/target/product/genericANDROID_PRODUCT_OUT_BIN=~原创 2015-08-18 15:51:10 · 3286 阅读 · 0 评论 -
写一个android内置android程序
当我们编译完成android源码之后,就需要对他做点什么事情,我现在正在看老罗的”Android源代码情景分析”一书,在这里主要是记录一些书中没有说清楚的地方.同样,我们创建一个HelloWorld程序,下面看一下我的目录结构.然后我们就像平时开发android程序一样,在第一个界面中放置一个 Hello World字符串,然后在自己的手机中测试一下,运行成功.好了,后面的工作比较重要.我们将这个a原创 2015-08-18 16:40:25 · 890 阅读 · 0 评论 -
编译Android内核
首先需要知道自己android内核的版本,我们android系统是android 4.0.1,内核版本为2.6.29.由于我们在下载android源代码的时候默认是不带内核源码的,因为他内置了一个编译好的zImage内核镜像,所以,如果要编译内核源码的时候,我们需要下载我们当前版本的内核源码.注意,这里的内核源码并不是Linux官网的内核源码,而是谷歌定制的内核.我们首先需要在android源代码根原创 2015-08-20 14:10:11 · 3927 阅读 · 0 评论 -
android OTA更新
Android OTA更新 Android设备可以接受和安装系统和应用软件的空中下载更新.设备有一个特殊的带有软件的recovery分区,该分区可以解压下载的更新包并且将他们应用到系统中. 这一小节描述了这些包的结构和为了构建他们所提供的工具.主要是为了那些想要在新的Android设备上制作OTA更新系统工作和那些为发行的的设备构建更新包的开发者设计的.OTA更新原创 2015-11-14 10:40:08 · 3719 阅读 · 0 评论 -
OTA更新包内部
系统从bootable/recovery/updater中构建updater二进制程序,并且在OTA更新包里面使用他.更新包本身是一个.zip压缩包文件(ota_update.zip,incremental_ota_update.zip),压缩包内包含可执行二进制程序 META-INF/com.google/android/update-binary .Updater包含几个内置函数和用于可扩展脚本原创 2015-11-20 16:09:02 · 1142 阅读 · 0 评论 -
基于块的OTA
你可以使能运行Android5.0的新设备启动基于块的OTA升级.OTA是设备运营商远程更新一个设备的部分系统的机制.Android 5.0和后续版本使用块设备OTA升级来确保每一个设备使用精确的相同的分区.块OTA处理整个分区作为一个文件并且计算一个单一的二进制补丁,而不是比较单独的文件和计算二进制补丁,确保生成的分区保存精确的目的位.这允许设备系统镜像通过fastboot或者是OTA实现相同的原创 2015-11-20 11:38:00 · 1442 阅读 · 0 评论 -
OTA打包工具
在build/tools/releasetools文件夹中提供的 ota_from_target_files工具可以构建两种包:全镜像包和增量包.这些工作把Android构建系统提供的目标文件.zip文件作为他们的输入.全更新全更新就是把编译后设备的所有的状态(system,boot和recovery分区)都被包含到包里.只要设备能够接受更新包并且启动recovery系统,不管当前设备的状态是什么样原创 2015-11-17 10:19:29 · 1372 阅读 · 0 评论 -
uboot启动过程详解
在android启动过程中,首先启动的便是uboot,uboot是负责引导内核装入内存启动或者是引导recovery模式的启动。现在在很多android的uboot的启动过程中,都需要对内核镜像和ramdisk进行验证,来保证android系统的安全性,如果在uboot引导过程中,如果内核镜像或ramdisk刷入的是第三方的未经过签名认证的相关镜像,则系统无法启动,这样便保证了android系统的安原创 2017-04-15 17:50:05 · 10462 阅读 · 0 评论