6、Q:Android bionic移植需要注意的事项
A:下面通过一个例子来说明移植binic需要做的事情(BIONIC使用的内核头文件从2.6.29 升级到 2.6.31):
1)修改之前,先要备份 android/bionic
2)按照下面方法复制linux kernel v2.6.31 头文件:
复制 include/asm-generic 到 bionic/libc/kernel/original folder
复制 include/linux 到 bionic/libc/kernel/original folder
复制 include/mtd 到 bionic/libc/kernel/original folder
3)运行 tools/update_all.py 脚本,生成新的头文件,方法如下.
$ cd android/bionic/libc/kernel
$ tools/update_all.py
以上的操作将复制新的头文件到 bionic/libc/kernel/common 目录
4)删除 bionic/libc/kernel/original 目录
5)复制平台相关的头文件:
复制 linux v2.6.31 平台相关的 asm 目录到指定的路径,方法如下:
复制 arch/arm/include/asm 到 android/bionic/libc/kernel/arch-arm/
复制 arch/x86/include/asm 到 android/bionic/libc/kernel/arch-x86/
6)从 v2.6.29 bionic/libc/kernel/common/linux 复制一下的头文件到新的 android/bionic/libc/kernel/common/linux 目录:
android-alarm.h
android-pmem.h
android_power.h
ashmem.h
binder.h
msm_adsp.h
msm_audio.h
msm_mdp.h
keychord.h
7)编译
$ cd android
$ make -j4
7、Q:Android源码下vendor目录下文件的作用?
A:指的是某些公司的产品型号,主要是一些针对硬件配置的东西,比如radio 方面的,若是采用TI 的,这里面会有TI提供的一些RIL方面的接口等。
8、Q:编译Android源码和编译Android内核有什么区别?
A:其实没什么区别,就多了几个android特有的驱动,最重要的是binder
9、Q:如何获取手机和存储卡上的图片?
A:
/**
* 通过uri获取文件的绝对路径
* @param uri
* @return
*/
protected String getAbsoluteImagePath(Uri uri)
{
// can post image
String [] proj={MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery( uri,
proj, // Which columns to return
null, // WHERE clause; which rows to return (all rows)
null, // WHERE clause selection arguments (none)
null); // Order-by clause (ascending by name)
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
复制代码
10、Q:如何使用双缓冲?
A:系统自身已经实现了双缓冲,也就是说为了避免重影,必须连续onDraw两次,或者是对上一次onDraw里面画脏的部分进行修复。
执行Bitmap.createBitmap函数一般要花销100-300ms的时间,要想提高它的效率,只能祈祷google能把android的代码写得更高效一些了。 |