![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 技术
zjc0888
这个作者很懒,什么都没留下…
展开
-
JNI 数据类型
<br />从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计 的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。让我们看一些使用JNI的简单例子吧。<br />使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者原创 2011-03-30 14:07:00 · 1680 阅读 · 0 评论 -
浅谈测试驱动开发(TDD)
背景一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开转载 2012-03-19 15:25:40 · 2044 阅读 · 0 评论 -
开发工具 CppUnit
CppUnit 是个基于 LGPL 的开源项目,最初版本移植自 JUnit,是一个非常优秀的开源测试框架。CppUnit 和 JUnit 一样主要思想来源于极限编程(XProgramming)。主要功能就是对单元测试进行管理,并可进行自动化测试。这样描述可能没有让您体会到测试框架的强大威力,那您在开发过程中遇到下列问题吗?如果答案是肯定的,就应该学习使用这种技术:测试代码没有很好地维护而废转载 2012-03-19 17:45:02 · 2254 阅读 · 0 评论 -
Android 源码结构分析 .
Android 2.1总目录|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及generic等基础开发包配置)|-- cts转载 2011-12-25 14:59:38 · 3640 阅读 · 1 评论 -
Android应用APK获得/data目录的读写权限
在应用程序AndroidManifest.xml中的manifest节点中加入android:sharedUerId="android.uid.system"这个属性。放在源码环境中编译,并通过adb install 的方式进行安装mk文件中的属性改为LOCAL_CERTIFIC原创 2011-07-12 14:16:42 · 17728 阅读 · 0 评论 -
MemoryHeapBase内存分配、Ashmem_create_Region mmap申请共享内存
<br /> 几个与内存相关的类的头文件如下所示:<br />IMemory.h:定义内存相关类的接口,表示堆内存的类IMemoryHeap和BnMemoryHeap,表示一般内存的类IMemory和BnMemory。<br />MemoryHeapBase.h:定义类MemoryHeapBase,继承并实现BnMemoryHeap<br />MemoryBase.h:定义类MemoryBase,继承并实现BnMemory<br /> 在一般的使用过程中,通常是以使用MemoryHeapBase类分配原创 2011-05-06 18:23:00 · 5973 阅读 · 0 评论 -
fork() 详解
#include ;#include ;main (){ pid_t pid; pid=fork(); if (pid printf("error in fork!"); else if (pid == 0) printf("i am the child process, my process id is %d/n",getpid());原创 2011-05-05 15:29:00 · 2050 阅读 · 0 评论 -
android ramdisk.img system.img userdata.img
1、android文件系统的结构 android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主 要的包、库等文件,userdata.img包括了一些用户数 据,emulator加载这3个映像文件后,会把 system和 userdata分原创 2011-06-21 19:34:00 · 1083 阅读 · 0 评论 -
Android调试的必杀技——反汇编
在移植Android过程中会遇到很多Crash的情况,尤其是启动Android过程中。一般这些问题都可以通过看代码能解决,当然也有一些比较“妖 娆”的问题,非常难找到头绪,在logcat日志也只会打印一些崩溃的堆栈,这些信息很难帮助我们定位问题。根据个人一个实例来介绍一下在Android 移植过程中反汇编的用法。 首先先看一下我遇到的一个logcat关于Crash的打转载 2011-06-15 15:08:00 · 12825 阅读 · 0 评论 -
Android Animation开机动画的优化
<br />使用bootanimation程序显示开机画面,如需修改开机画面,需要修改源码 b)代码<br /> frameworks/base/cmds/bootanimation/*<br /> frameworks/base/core/res/assets/images/android-logo*<br /><br />2)android 2.0及之后<br /> a)说明<br /> 使用bootanimation程序显示开机画面,如需修改开机画原创 2011-04-21 14:12:00 · 981 阅读 · 0 评论 -
Android的智能指针
<br /> 在Android的源代码中,经常会看到形如:sp<xxx>、wp<xxx>这样的类型定义,这其实是Android中的智能 指针。智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。在C++编程中,有两个很让人头痛的问题:一是忘记释放动态申 请的对象从而造成内存泄露;二是对象在一个地方释放后,又在别的地方被使用,从而引起内存访问错误。程序员往往需要花费很大精力进行精心设计,以避免这些 问题的出现。在使用智能指针后,动态申请的内存将会被自动释放(原创 2011-04-02 14:07:00 · 665 阅读 · 0 评论 -
Android 本地代码中的LIKELY和UNLIKELY宏
<br />阅读Android Frameworks中的C++代码时,经常会碰到在条件判断语句中使用了LIKELY和UNLIKELY这两个宏,找到这两个宏的定义如下:view plaincopy to clipboardprint?#define LIKELY( exp ) (__builtin_expect( (exp) != 0, true )) #define UNLIKELY( exp ) (__builtin_expect( (exp) != 0, false原创 2011-04-01 14:44:00 · 587 阅读 · 0 评论 -
linux内核学习(15)内核编程基本功之内核同步与自旋锁spinlock_t
Pro-I、内核同步与自旋锁:1、为什么要使用内核同步?同步使得共享数据结构(相对应的代码块—临界区)可以有节奏的被读/写。主要是由于内核控制路径的改变,而且它的改变是随机的。那么我们所要做的就是要保证在任意时刻只有一个内核控制路径处于临界区。如果在单CPU的情况下,只需禁止内核抢占即可实现不会发生内核控制路线的改变,如果在多CPU的情况下,就需要用到自旋锁了,它可以保证多个CPU的运行轨转载 2012-03-19 15:04:20 · 2120 阅读 · 0 评论