热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

成为Android高手必须掌握的28大项内容和10个建议

(一)成为Android高手必须掌握的8项基本要求【1】Android操作系统概述1.Android系统架构。2.Android利用设计理念。3

(一)成为Android高手必须掌握的8项基本要求

 

【1】 Android操作系统概述
1. Android系统架构。
           2. Android利用设计理念。
           3. Android 开源知识。
           4. Android 参考网站与权威信息。
【2】 Android SDK及其开发环境搭建
           1. Android SDK的版本发布。
           2. ADT插件的安装和更新。
           3. Android利用程序架构。
           4. 建立第一个Android项目(HelloAndroid!)。
           5. 通过Eclipse导入一个开源项目
           6. 可视化的界面开发工具
           7. 布置利用程序到Android模仿器或手机
【3】Android源代码开发环境搭建与源码结构分析
           1.开发系统主机环境搭建 。
          2. 安装软件包Required Packages。
           3.Ubuntu 6.06 (Dapper)。
          4. Ubuntu 8.04。
          5. Ubuntu 7.10。
           6.Install javva。
           7.源码结构分析Android source (kernel / platform/application)。
          8. Android build system。
          9. Android bring up。
 【4】 Android 利用程序设计模型
           1. drawable。
           2. layout 。
           3. values(strings.xml、colors.xml、style.xml 、arrays.xml等)。
           4. R.java分析及应用 。
           5. AndroidManifest.xml。
           6. Android.mk。
           7. Activity 。
           8. Intent。
           9. Service 。
           10.ContentProvider。
【5】 Android 利用程序界面(一)
           1. TextView的应用。
           2. drawable的应用 。
           3. 引用Drawable色彩常数及背风景。
           4. CharSequence数据类型与ResourceID利用。
           5. DisplayMetrics的应用。
           6. Style样式的定义。
           7. Button事件处理。
           8. setContentView的利用。
           9. Intent对象的应用。
           10. Bundle对象的实现。
           11. startActivityForResult法子。
           12. AlertDialog窗口。
           13. Button与TextView的交互。
           14. Typeface对象应用。
           15. Gallery对象。
           16. 多按钮利用。
           17. Menu功效菜单程序设计。
           18. ProgressDialog与线程利用。
           19. 动态产生按钮并最大化。
           20. 选择功效的对话框。
           21. Android主题(Theme)实现。
           22. 支撑多种分手率的屏幕。
【6】 Android利用程序界面(二)
           1. EditText与setOnKeyListener事件。
           2.ImageButton的焦点及事件处理。
           3. Toast对象的应用。
           4. CheckBox的isChecked属性。
           5. 多选项CheckBox的利用。
           6. RadioGroup组与onCheckedChanged事件。
           7. ImageView的堆栈利用。
           8. Spinner与setDropDownViewResource。
           9. ArrayList与Widget的依附性。
           10. Gallery与衍生BaseAdapter容器。
           11. JavaI/O的利用。
           12.ImageButton选择特效。
           13. AutoCompleteTextView与数组。
           14. AnalogClock与DigitalClock的原理。
           15. DatePicker与TimePicker利用。
           16. ImageView点击事件与透明度处理。
           17. ProgressBar与Handler的整合利用。
           18. GridView与ArrayAdapter设计。
           19. ListView的布局。
           20. ListActivity与Menu整合技术。
           21. JavaI/O与ListActivity的联合。
           22. 应用decodeFile法子。
           23. 运用Matrix对象来缩放图文件。
           24. Bitmap与Matrix旋转ImageView。
           25. RadioButtonID。
           26. 对话窗口上的ICON图标。
【7】Android 利用交互与手机模块把持
           1. PendingIntent与AlarmManager。
           2. PendingIntent 与 SmsManager 。
           3. Intent 与 Email。
           4. 数据存储法子。
           5. NotificationManager与Notification。
           6. Adapter对象与Cursor。
           7. TelephonyManager的利用。
           8. RunningTaskInfo的利用。
           9. Provider.Contact的应用。
           10.Provider.Calendar的应用。
           11. Service与Runnable整合并用。
           12.BroadcastReceiver与Intent 。
           13. receiver与intent-filter。
           14. Android网络编程。
           15. HTTP恳求与连接。
           16. WebView.loadUrl。
           17. Webkit 与 WebCore。
           18. HttpURLConnection与URLConnection和运行线程。
           19. Runnable混搭SurfaceView。
           20. Google ApI。
【8】 Android 系统服务
           1. Activity Manager。
           2. Windows Manager。
           3. Surface Manager(surface flinger)。
           4. Package Manager。
           5. Telephony Manager。
           6. Content Provider。
           7.Resource Manager。
           8. AssetManager。
           9. View System。
           10.Location Manager。
           11. Notification Manager。
           12.AlarmManager。
           13. BatteryManager。
           14. HardwareManage。
           15. 如何添加一个新系统Service并开放API。
           16. 要害服务。
           17. Android系统启动流程。
       

(二)成为Android高手必须掌握的20项进阶要求

ARM平台 Android 移植与驱动核心开发
       Android嵌入式智能操作系统是基于Linux内核和驱动的,对于HTC、华为等公司开发Android操作系统时,需要专门将Android移植到特定硬件平台下,同时将必要的驱动进行编写及开发。本课程旨在让学员成为Android的核心层开发者,让学员在这种嵌入式设备厂商中谋得核心开发人员的职位。
       1. Android系统体系及移植相关工具
           1.1Android操作系统体系结构介绍。
               Android Linux内核移植介绍。
               文件系统,toolbox等移植。
              存储驱动移植。
             Bootloader相应方案与移植。
               Android虚拟器Dalvik移植介绍。
           1.2ARM处理器介绍。
               ARMv5TJS。
               ARM中断处理。
               ARM体系结构与ARM处理器的体系结构。
               IP核、芯片与开发板。
               ARM处理器结构处理器模式。
                  . 寄放器。
                  . 流水线结构。
               C语言内嵌汇编款式与编程实例。
           1.3ARM指令系统。
                .算术逻辑指令 。
                .指令对状态寄放器的影响。
                .对比指令。
                .分支指令。
                .移位。
                .指令位图。
                .辨认机器指令。
           1.4内存造访与内存把持。
               .数据总线与地址总线的应用与实例。
               .STR/LDR 。
           1.5ARM历程调用标准。
               .LDM/STM。
               .反汇编。
               .APCS。
               .C语言函数与汇编的互相调用。
           【案例】应用Android Linux patch进行Linux内核的构建
       2. AndroidLinux内核移植与核心开发
           2.1ARM处理器的Android系统构建。
           2.2输入输出设备驱动移植 。
           2.3存储设备nand flash,MMC/SD卡驱动移植。
           2.4Framebuffer移植 。
           2.5 Touchscreen移植 。
           2.6 Open Binder IPC移植。
       【案例】
               2.7在ARM处理器上移植Android实验 。
            2.8编写Nand flash驱动。
             2.9移植Framebuffer驱动。
             2.10硬件相关部分(键盘、触摸屏、LCD等)。
       3. Android相关环境库、以及Bionic系统移植
           3.1libc移植 。
           3.2libm移植 。
           3.3libdl移植。
           3.4libm移植。
           3.5 busybox, toolbox移植。
       【案例】
               1.移植glibc。
              2.移植busybox和toolbox。
       4. Android Dalvik移植一
         
4.1 JNI Call Bridge相关原理 。
           4.2 dx, dalvitvm原理和应用。
         
4.3 Dalvik指令款式。
           4.4 Dalvik履行款式dex 。
           4.5 Java字节码款式。
       5. Android Dalvik移植二
           5.1 Dalvik Library原理 。
           5.2 dalvit libcore核心库移植。
           5.3 dalvit/vm/native移植。
           5.4 Dalvik Interpreter原理 。
           5.5 Dalvik Mterp。
       6. ARMAT&T汇编
           6.1AT&T汇编语法详解 。
           6.2gas工具的应用 。
           6.3label标签的作用。
           6.4数据与代码的散播。
       7. 链接脚本ld-script
          7.1 段地址的断定。
          7.2 编写ld-script。
          7.3 ELF款式与libc函数库的关系。
       8. 时序电路根基
           8.1电平信号 。
          8.2 电路图分析。
           8.3时序图分析。
           8.4datasheet查看 。
           8.5s3c2440的外围器件结构。
           8.6GPIO操作。
       9. AMBA总线标准
          9.1 AMBA总线标准 。
          9.2 FCLK/HCLK/PCKL频率分配与设置。
          9.3 Watchdog计时操作。
          9.4 UART操作 。
          9.5 ARM中断体系。
          9.6 异常向量表。
          9.7 ARM模式切换。
           9.8 ARM中断把持器 。
           9.9 软中断。
           9.10 Linux系统调用的实现。
       10. Nand Flash把持器
           10.1 Flash原理。
           10.2 Nand把持器原理及时序分板。
           10.3k9f1208时序分析。
       11. 内存把持器
            11.1 s3c2440物理地址散播 。
            11.2 SDRAM原理与时序。
            11.3 内存把持器的物理连接。
            11.4 地址对齐 。
            11.5 SRAM造访。
       12. 内存管理单元
            12.1 MMU的原理 。
             12.2ARM协处理器指令。
             12.3 section模式。
             12.4 small page模式 。
             12.5 I & D TLBs 。
             12.6 I & DCache。
             12.7 哈佛结构的原理与实现。
       13. DMA 直接内存造访的机制与应用
           
13.1 DMA的状态机 。
            13.2 DMA的把持。
       14. 触摸屏接口与ADC接口 与实例
            14.1 ADC原理 。
            14.1 触摸屏接口与把持。
       15. LCD把持器
             15.1 图形显示原理。
             15.2 LCD把持器。
             15.3 LCD时序。
             15.4 LCD驱动相关的框架与体系 。
        16. I2S音频总线
              16.1音频硬件原理。
              16.2 I2S时序。
              16.3 s3c2440上I2S的操作。
              16.4音频设备的裸驱动讨论。
       17. CS8900网卡把持
              17.1 逻辑链路层与MAC层。
              17.2 CS8900原理与时序分析。
              17.3后续网卡裸驱动讨论与体系结构。
       18. TCP/IP协议栈移植,与网络体系结构
             18.1 LwIP TCP/IP协议栈简介 。
             18.2 LwIP配置与编译。
             18.3 tftp配置与编译。
       19. Bootloader原理与移植
              19.1u-boot的配置、编译 。
              19.2u-boot启动历程分析。
              19.3ARM-Linux的启动请求。
              19.4 ARM-Linux kernel的ld-sript分析 。
              19.5 u-boot到ARM-Linux的跳转代码分析 。
              19.6应用mkimage制作启动镜像文件。
       20. ARM-Linux原理与移植
              20.1ARM-Linux的配置、编译 。
              20.2ARM-Linux启动代码分析。
              20.3ARM-Linux 地址映射的关系。
              20.4 Busybox的配置、编译 。

 

(三)成为Android高手的十个建议

 

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:

  /**

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

 

(四)成为Android高手的教程与资料选择

 

学习教程与开发资料下载:

Android 15本经典教程和150多个实例源码 

 

 

如果觉得免费的Android电子教程不过瘾的话,你可以花钱买纸质的教材,教程不在多,在于精。

你可以花钱买一两本经典的纸质Android书籍,这个仔细看或者收藏;其他的看免费的电子版的Android教材就好了,建议不要花太多冤枉钱。

 

 1

                

 

 2

                  

 

 3

              

 

 转自:http://blog.csdn.net/hstar00004/article/details/7193695


推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 今日份分享:Flutter自定义之旋转木马
    今日份分享:Flutter自定义之旋转木马-先上图,带你回到童年时光:效果分析子布局按照圆形顺序放置且平分角度子布局旋转、支持手势滑动旋转、快速滑动抬手继续旋转、自动旋转支持X轴旋 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 在ubuntu服务器上安装vscode,但是目前使用的方法都无法成功。第一次安装经历:安装完anaconda后有自动安装vscode的选项,输入yes后,没有出现错误,但是在终端输 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
author-avatar
郭昊天886688
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有