1、Q:如何成为高手?
A:成为一名真正的Android高手必须掌握和遵循的一些准则:
1)学会懒惰
aDon't Reinvent the Wheel(不要重复发明轮子)。
bInventing the Wheel(发明轮子)。
cDon't Reinvent the Wheel(不要重复发明轮子)。
“轮子理论”,也即“不要重复发明轮子”,这是西方国家的一句谚语,原话是:Don't Reinvent the Wheel。“不要重复发明轮子 ”意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人。拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造。
2)精通Android体系架构、MVC、常见的设计模式、控制反转(IoC)
3)编写可重用、可扩展、可维护、灵活性高的代码
4)高效的编写高效的代码
5)学会至少一门服务器端开发技术
2、Q:JNI是什么?
A:JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。3、Q:Android和Linux的区别?
A:Android是一个专门针对移动设备的软件集,包括一个操作系统,中间件和一些重要的应用程序。Android SDK 提供了在Android平台使用java语言进行android 应用程序开发必须的工具和API接口。Android 系统架构除了Linux2.6内核之外,还提供了丰富的lib和适用于java的运行时环境(很重要的一点是Dalvik虚拟机,类似于JVM)、应用程序框架和核心应用。在此基础之上可以快速开发应用程序。
Linux内核像是核心技术支持,而google 将其商业化于移动设备上。android上开发应用程序和Windows MFC开发有些类似。4、Q:如何进入Recovery模式?
A:每部Android设备进入Recovery模式的方法不同。以Milestone为例:若bootloader为90.78,按住键盘的“X”键,再按电源键开机,看到moto的经典logo即可放开此2键。等待出现一个三角形图标,然后按住音量向上键+轻按拍照键,会出现四个选项。放开按键,可以用方向键选择一个选项。作用分别为重启,应用update.zip,清除所有数据至出厂状态、清除cache。5、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 -j46、Q:Android源码下vendor目录下文件的作用?
A:指的是某些公司的产品型号,主要是一些针对硬件配置的东西,比如radio 方面的,若是采用TI 的,这里面会有TI提供的一些RIL方面的接口等。7、Q:编译Android源码和编译Android内核有什么区别?
A:其实没什么区别,就多了几个android特有的驱动,最重要的是binder。8、Q:如何获取手机和存储卡上的图片?
A:
分公司的风格9、Q:如何使用双缓冲?
A:系统自身已经实现了双缓冲,也就是说为了避免重影,必须连续onDraw两次,或者是对上一次onDraw里面画脏的部分进行修复。
执行Bitmap.createBitmap函数一般要花销100-300ms的时间,要想提高它的效率,只能祈祷google能把android的代码写得更高效一些了。
更多Android学习笔记尽在: http://www.blogjava.net/cdz/
A:成为一名真正的Android高手必须掌握和遵循的一些准则:
1)学会懒惰
aDon't Reinvent the Wheel(不要重复发明轮子)。
bInventing the Wheel(发明轮子)。
cDon't Reinvent the Wheel(不要重复发明轮子)。
“轮子理论”,也即“不要重复发明轮子”,这是西方国家的一句谚语,原话是:Don't Reinvent the Wheel。“不要重复发明轮子 ”意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人。拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造。
2)精通Android体系架构、MVC、常见的设计模式、控制反转(IoC)
3)编写可重用、可扩展、可维护、灵活性高的代码
4)高效的编写高效的代码
5)学会至少一门服务器端开发技术
2、Q:JNI是什么?
A:JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。3、Q:Android和Linux的区别?
A:Android是一个专门针对移动设备的软件集,包括一个操作系统,中间件和一些重要的应用程序。Android SDK 提供了在Android平台使用java语言进行android 应用程序开发必须的工具和API接口。Android 系统架构除了Linux2.6内核之外,还提供了丰富的lib和适用于java的运行时环境(很重要的一点是Dalvik虚拟机,类似于JVM)、应用程序框架和核心应用。在此基础之上可以快速开发应用程序。
Linux内核像是核心技术支持,而google 将其商业化于移动设备上。android上开发应用程序和Windows MFC开发有些类似。4、Q:如何进入Recovery模式?
A:每部Android设备进入Recovery模式的方法不同。以Milestone为例:若bootloader为90.78,按住键盘的“X”键,再按电源键开机,看到moto的经典logo即可放开此2键。等待出现一个三角形图标,然后按住音量向上键+轻按拍照键,会出现四个选项。放开按键,可以用方向键选择一个选项。作用分别为重启,应用update.zip,清除所有数据至出厂状态、清除cache。5、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 -j46、Q:Android源码下vendor目录下文件的作用?
A:指的是某些公司的产品型号,主要是一些针对硬件配置的东西,比如radio 方面的,若是采用TI 的,这里面会有TI提供的一些RIL方面的接口等。7、Q:编译Android源码和编译Android内核有什么区别?
A:其实没什么区别,就多了几个android特有的驱动,最重要的是binder。8、Q:如何获取手机和存储卡上的图片?
A:
分公司的风格9、Q:如何使用双缓冲?
A:系统自身已经实现了双缓冲,也就是说为了避免重影,必须连续onDraw两次,或者是对上一次onDraw里面画脏的部分进行修复。
执行Bitmap.createBitmap函数一般要花销100-300ms的时间,要想提高它的效率,只能祈祷google能把android的代码写得更高效一些了。
更多Android学习笔记尽在: http://www.blogjava.net/cdz/
解决方案 »
- 求助:android怎么使用mediaPlayer+surfaceView或者使用VideoView播放一个视频时可以保证大多数平台都可以正常播放呢?
- 给RelativeLayout添加onclicklistener的问题
- Android关于GridView与使用dimen资源的问题!
- 当手机处于待机状态下(屏幕没光+已锁屏),比如长按菜单键或返回键,怎么打开一个应用程序
- 一个android电子商城下载的难题
- android listview
- 请问jni下如何画位图
- Android向服务端发送请求的问题
- jdbc连接mysql5.6.35数据库,始终Access denied for user 'root'@'localhost' (using password
- 大家有没有发现android studio 3.0的instant run每次都会重新安装程序
- Android工程代码重用问题
- 判断直线与矩形有交点
不喜勿点。
如果对以下职位有意向的童鞋们,可以联系我。[email protected]
Android 驱动/HAL工程师
Android多媒体开发工程师