注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Java鸟

真才实料

 
 
 

日志

 
 

给将成为“Android高手”的10个建议  

2012-07-17 10:48:08|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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:SDK升级了,如何更新SDK?

  A:更新SDK是非常棘手的。当一个新的SDK发布,必须是plugin也发布。更新容易出现的错误是两个版本都存在,而且都不正常。最终不得不卸载了它们并且重新安装最新的一个。然后那个最新的SDK工作正常了。建议任何面对SDK或者plugin升级的人都采用相同的过程。简单的卸载老版本,然后安装新版本。不要升级。

 

5、Q:如何进入Recovery模式

  A:每部Android设备进入Recovery模式的方法不同。以Milestone为例:若bootloader为90.78,按住键盘的“X”键,再按电源键开机,看到moto的经典logo即可放开此2键。等待出现一个三角形图标,然后按住音量向上键+轻按拍照键,会出现四个选项。放开按键,可以用方向键选择一个选项。作用分别为重启,应用update.zip,清除所有数据至出厂状态、清除cache。

  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:

  

  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的代码写得更高效一些了。

 

Android SDK 目录和作用的分析详解

 

1、add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。

2、docs这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。

3、market_licensing作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。

4、platforms是每个平台的SDK真正的文件,里面会根据APILevel划分的SDK版本,这里就以Android2.2来说,进入后有一个android-8的文件夹,android-8进入后是Android2.2SDK的主要文件,其中ant为ant编译脚本,data保存着一些系统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤,templates是工程创建的默认模板,android.jar则是该版本的主要framework文件,tools目录里面包含了重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx。

5、platform-tools保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。

6、samples是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主题开发Home则是androidm5时代的主题设计原理。

7、tools作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库,而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是Android SDK模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。

8、usb_driver顾名思义,保存着android平台google官方机型的驱动如nexusone、nexuss,同时也有一些老机型驱动的支持,比如说htcdream、htcmagic和motorola的droid。

        =================================================================

  应届生就业,“IT行业”平均收入最高       谈谈程序员的五大出路      

  程序员成美国2014年收入最高职业          就业率最高的50个本科专业

  从IT菜鸟变“骨干”的10个建议                    50个“最有钱景”本科专业一览

  学Android开发的就业钱途分析                市场最急需的10大IT人才

=================================================================

  评论这张
 
阅读(1068)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018