zoukankan      html  css  js  c++  java
  • 安卓修炼之路必要要知道的要求和建议

    偶然在一个群中看到有人转发了这篇文章,感觉写得真不错,所以转发下来。向大师学习!

    (一)成为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模仿器或手机
    3Android源代码开发环境搭建与源码结构分析
               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.xmlcolors.xmlstyle.xmlarrays.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图标。
    7Android利用交互与手机模块把持
               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(surfaceflinger)

               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 flashMMC/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.
    移植busyboxtoolbox
           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-Linuxkernel
    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高手的十个建议

    1Q:如何成为高手?

    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)学会至少一门服务器端开发技术

    2QJNI是什么?

    AJNIJava Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是 CC++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。

      使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java虚拟机实现下。

    3QAndroidLinux的区别?

    AAndroid是一个专门针对移动设备的软件集,包括一个操作系统,中间件和一些重要的应用程序。Android SDK提供了在Android平台使用java语言进行android应用程序开发必须的工具和API接口。Android系统架构除了Linux2.6内核之外,还提供了丰富的lib和适用于java的运行时环境(很重要的一点是Dalvik虚拟机,类似于JVM)、应用程序框架和核心应用。在此基础之上可以快速开发应用程序。

    linux内核像是核心技术支持,而google将其商业化于移动设备上。android上开发应用程序和Windows MFC开发有些类似。

    4QSDK升级了,如何更新SDK?

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

    5Q:如何进入Recovery模式

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

    6QAndroid 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

    7QAndroid源码下vendor目录下文件的作用?

    A:指的是某些公司的产品型号,主要是一些针对硬件配置的东西,比如radio方面的,若是采用TI,这里面会有TI提供的一些RIL方面的接口等。

    8Q:编译Android源码和编译Android内核有什么区别?

    A:其实没什么区别,就多了几个android特有的驱动,最重要的是binder

    9Q:如何获取手机和存储卡上的图片?

    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);

    }

      复制代码

    10Q:如何使用双缓冲?

    A:系统自身已经实现了双缓冲,也就是说为了避免重影,必须连续onDraw两次,或者是对上一次onDraw里面画脏的部分进行修复。

      执行Bitmap.createBitmap函数一般要花销100-300ms的时间,要想提高它的效率,只能祈祷google能把android的代码写得更高效一些了。




    转载自:http://blog.csdn.net/jingwen3699/article/details/7723805

  • 相关阅读:
    无题
    1.1tensorflow2.0 张量
    某某大肠_tidb_集群创建用户
    某某大肠_替换TiDB 3.0集群的tidb-server命令工具
    某某大肠_配置spark的thriftserver模块
    date_and_time
    SpringBoot整合Mybatis
    SpringBoot(3)Thymeleaf使用详解
    SpringBoot(2)实现CRUD
    SpringBoot(1)入门篇
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314874.html
Copyright © 2011-2022 走看看