zoukankan      html  css  js  c++  java
  • 《android深入探索》第四章心得

    看了本书第四章,我学会了下载、编译、测试android源代码和linux内核源代码:

    1. android源代码的下载、编译、测试:

    ① 配置Android源代码的下载环境:

    创建一个用于存放下载脚本文件(repo)的目录(例如bin):

    #mkdir ~/bin

    #PATH=~/bin:$PATH

    下载repo脚本文件用于下载安卓源码,repo文件实际上是用python脚本对Git的封装,主要是为了简化下载安卓源码的操作:

    #curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

    #chmod a+x ~/bin/repo

    创建用于存放安卓源码的目录:

    #mikdir android_source

    #cd android_source

    初始化:

    #repo init –u https://android.googlesource.com/platform/manifest

    开始下载安卓源码:

    #repo sync

    ② 下载android源码中的一部分:

    法一:使用命令#repo sync(后跟工程名)

    法二:使用#git clone命令

    两种方法的区别:前者会在当前目录生成一个隐藏目录.repo,该目录存放了下载android源码所需的全部信息;前者下载指定工程的源码会按实际路径存放,后者只会建立工程目录,并不会建立层次路径结构。

    ③ 编译android源码:

    初始化编译环境:#source build/envsetup.sh 或# .build/envsetup.sh

    选择目标:#lunch full-eng

    编译安卓源码:#make (若为四核)#make j4

    ④ 编译完成后,生成out目录,用来存放android源码生成的目标文件。

    • out文件夹目录结构如下所示:
      out/
      -- CaseCheck.txt
      -- casecheck.txt
      -- host
          -- common
          -- linux-x86/darwin-x86
      -- target(如果编译时候定义TARGET_STRIP_MODULE=false的话,这个目录为debug/target)
          -- common
          -- product

    Out目录的直接子目录:host、target。

    host目录主要包含编译过程中需要的一些java library,target目录中的目标文件(.jar、.so、.img等都可以在android系统上运行),host目录的结构如下所示:
    out/host/
    -- common
        -- obj(JAVA库)
    -- linux-x86/darwin-x86
        -- bin(二进制程序)
        -- framework(JAVA库,*.jar文件)
        -- lib(共享库*.so)
        -- obj(中间生成的目标文件)
    out/target/generic目录包含最终要使用的目标文件(system.img、ramdisk.img、userdata.img),安卓系统中大多程序都在system目录中,包括apk应用程序。out/target/generic/system目录结构和linux根目录类似,但是android也增加了许多特有的目录,如app、media目录等。

    target目录的结构如下所示:
    out/target/
    -- common
        -- R (资源文件)
        -- docs
        -- obj (目标文件)
            -- APPS(包含了JAVA应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成Android应用程序的APK包)
            -- JAVA_LIBRARIES(包含了JAVA的库,每个库对应其中一个子目录)
    -- product
        -- generic
            -- android-info.txt
            -- clean_steps.mk
            -- data(存放数据的文件系统)
            -- obj
                -- APPS(包含了各种JAVA应用,与common/obj/APPS相对应,但是已经打成了APK包)
                -- SHARED_LIBRARIES(存放所有动态库)
                -- STATIC_LIBRARIES(存放所有静态库)
            -- ramdisk.img(内存盘的根文件系统映像)
            -- root
            -- symbols
            -- system(存放主要的文件系统)
            -- system.img(文件系统的映像)
            -- userdata-qemu.img(模拟器使用的数据文件)
            -- userdata.img(数据内容映像)
    其中common目录表示通用的内容,product中则是针对产品的内容。

    ⑤ 将apk作为安卓内置程序发布:将apk嵌入到镜像文件(如system.img):直接将apk文件复制到system/app目录下,再从system目录生成system.img文件。

    ⑥ 用模拟器测试生成的镜像文件(system.img):

    需要一个mkyaffs2image命令行工具,将原来的system.img文件备份

    然后重新生成system.img文件#mkyaffs2image system system.img

    使用模拟器测试新生成的system.img文件:#emulator –avd myavd –system system.img –data userdata.img

     

          2.linux内核源码的下载、编译

    ① 下载linux内核源码:

    #git clone https://android.googlesource.com/kernel/common.git

    进入common目录:#git branch –a 查看当前有哪些远程版本库

    导出最新linux内核:#git checkout –b android-3.0 remotes/origin/android-3.0

    ② 安装android内核编译环境:

    配置内核源码下的Makefile文件,找到ARCH、CROSS_COMPILE并设置:

    “ARCH    ?= arm

    CROSS_COMPILE?= arm-none-linux-gnueabi-“

    安装交叉编译器

    准备工作:将arm-linux-gcc-4.3.2.tgz文件和arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2文件复制到工作目录。

    解压编译器:

    #tar zxvf(前者文件名) -C /

    #tar jxvf(后者文件名-C /

    验证交叉编译器是否安装成功:#ls /usr/local/arm -1

    安装libncurses5:#apt-get install libncurses5-dev

    ③ 编译和配置linux内核

    #export PATH=/root/compilers/arm-none-linux-gnueabi/bin:$PATH

    #cd ~/linux_kernel

    #make clean

    #make

    成功编译linux内核后,会在(linux内核源码根目录)/arch/arm/boot目录生成一个zImage文件。

    测试linux内核:

    #emulator –avd myavd –kernel /root/kernel/goldfish/arch/arm/boot/zImage

         3.Android移植主要是linux内核的移植,linux内核的移植主要是linux驱动的移植。

     

  • 相关阅读:
    白盒测试的特点
    什么是黑盒测试
    黑盒测试优缺点
    单元测试
    孤立的测试策略
    自顶向下的单元测试策略
    自底向上的单元测试策略
    tabbedApliction
    redis的key对应mysql数据表设计
    达内javase_day1笔记
  • 原文地址:https://www.cnblogs.com/cqj0818/p/5431015.html
Copyright © 2011-2022 走看看