zoukankan      html  css  js  c++  java
  • Android编译大全(三)

    3.  验证编译之后的模块

    $export ANDROID_PRODUCT_OUT=<SrcDir>/out/target/product/generic

    $cd ./out/host/linux-x86/bin

    $./emulator

    4.  编译完成之后的代码结构

    Android编译完成后,将在根目录中生成一个out文件夹,所有生成的内容均放置在这个文件夹中。out文件夹如下所示:

      out/

      |– CaseCheck.txt

      |– casecheck.txt

      |– host

      |   |– common

      |   `– linux-x86

      `– target

          |– common

          `– product

        主要的两个目录为host和target,前者表示在主机(x86)生成的工具,后者表示目标机(模认为ARMv5)运行的内容。

    host目录的结构如下所示:

      out/host/

      |– common

      |   `– obj              (JAVA库)

      `– linux-x86

          |– bin              (二进制程序)

          |– framework        (JAVA库,*.jar文件)

          |– lib              (共享库*.so)

          `– obj              (中间生成的目标文件)

      host目录是一些在主机上用的工具,有一些是二进制程序,有一些是JAVA的程序。

      target目录的结构如下所示:

      out/target/

      |– common

      |   |– R           (资源文件)

      |   |– docs

      |   `– obj         (目标文件)

      `– product

          `– generic

      其中common目录表示通用的内容,product中则是针对产品的内容。

      在common目录的obj中,包含两个重要的目录:

      APPS  中包含了JAVA应用程序生成的目标,每个应用程序对应其中一个子目录,将结合每个应用程序的原始文件生成Android应用程序的APK包。

      JAVA_LIBRARIES  中包含了JAVA的库,每个库对应其中一个子目录。

      在默认的情况下,Android编译将生成generic目录,如果选定产品还可以生成其他的目录。generic包含了以下内容:

      out/target/product/generic/

      |– android-info.txt

      |– clean_steps.mk

      |– data

      |– obj

      |– ramdisk.img

      |– root

      |– symbols

      |– system

      |– system.img

      |– userdata-qemu.img

      `– userdata.img

      在generic/obj/APPS目录中包含了各种JAVA应用,与common/APPS相对应,但是已经打成了APK包。

      system目录是主要的文件系统,data目录是存放数据的文件系统。

      obj/SHARED_LIBRARIES中存放所有动态库。

      obj/STATIC_LIBRARIES中存放所有静态库。

      几个以img为结尾的文件是几个目标映像文件,其中ramdisk是作为内存盘的根文件系统映像,system.img是主要文件系统的映像,这是一个比较大的文件,data.img是数据内容映像。这几个image文件是运行时真正需要的文件。

    5.  make SDK

    5.1. sdk编译

    在编译完整个系统之后,再运行make sdk,就可以进行sdk的编译了。make sdk将各种工具和image打包,供开发和调试使用。

    export JAVA_HOME=/usr/lib/jvm/java-5-sun

    export CLASSPATH=$JAVA_HOME/lib

    export JRE_HOME=$JAVA_HOME/jre

    export JAVA_PATH=$JAVA_HOME/bin:$JRE_HOME/bin

    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    export ANDROID_JAVA_HOME=$JAVA_HOME

    export PATH=$JAVA_PATH:$PATH

    source build/envsetup.sh

    make sdk

    ……

    Package SDK Stubs: out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar

    Package SDK: out/host/linux-x86/sdk/android-sdk_eng.huangjx_linux-x86.zip

    build之后的log如下:

    5.2. 验证编译之后的模块

    将out/host/linux-x86/sdk/android-sdk_eng.huangjx_linux-x86.zip解压到本地目录。进入tools目录,输入下面的命令创建AVD:

    $./android create avd -t 1 -c 128M -n froyo -s HVGA

    Android 2.2 is a basic Android platform.

    Do you wish to create a custom hardware profile [no]

    Created AVD ‘froyo’ based on Android 2.2, with the following hardware config:

    hw.lcd.density=160

    输入下面的命令,启动模拟器:

    $ ./emulator -avd froyo -partition-size 160 &

  • 相关阅读:
    new一个对象的时候,实际做了些什么
    ES6 class——getter setter音乐播放器
    vue中引入公用过滤器?
    this详解下
    012天this详解上
    011天之跨域资源共享CORS
    010天JSON.stringify()详解
    009天之跨浏览器的事件处理程序
    使用XHR上传文件要不要了解一下?
    简单化最小化语句数
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978802.html
Copyright © 2011-2022 走看看