zoukankan      html  css  js  c++  java
  • (OK) Building Android from AOSP source code


    [root@localhost android-6.0.1_r46]# cat /etc/redhat-release
    Fedora release 23 (Twenty Three)

    [root@localhost android-6.0.1_r46]# uname -a
    Linux localhost.localdomain 4.4.8-300.fc23.x86_64 #1 SMP Wed Apr 20 16:59:27 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

    [root@localhost android-6.0.1_r46]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           7.5G        6.2G         54M        579M        1.2G        600M
    Swap:          1.0G        1.0G          0B

    [root@localhost android-6.0.1_r46]# cat /proc/cpuinfo
    processor    : 3
    vendor_id    : GenuineIntel
    cpu family    : 6
    model        : 60
    model name    : Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz
    stepping    : 3
    microcode    : 0x1e
    cpu MHz        : 2153.906
    cache size    : 3072 KB

    +++++++++++++++++++++++++++++++++++++++++++++
    download android source code
    +++++++++++++++++++++++++++++++++++++++++++++
    [root@localhost android-6.0.1_r46]# pwd
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46
    [root@localhost android-6.0.1_r46]#

    git config --global user.name "tongguang"
    git config --global user.email "jsjoscpubupt@gmail.com"

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

    repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
    repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r1
    repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r2
    repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.2_r1
    repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r37

    repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r46

    repo sync


    +++++++++++++++++++++++++++++++++++++++++++++

    [root@localhost gem5-stable]# free
                  total        used        free      shared  buff/cache   available
    Mem:        7892744     4433200      222784      520468     3236760     2807120
    Swap:       1028124     1028124           0
    [root@localhost gem5-stable]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           7.5G        4.2G        218M        508M        3.1G        2.7G
    Swap:          1.0G        1.0G          0B
    [root@localhost gem5-stable]#


    [root@localhost android-6.0.1_r46]# pwd
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46
    [root@localhost android-6.0.1_r46]# ls
    Android.bp  bootstrap.bash  developers   external    libcore          out               prebuilts  tools
    art         build           development  frameworks  libnativehelper  packages          sdk
    bionic      cts             device       hardware    Makefile         pdk               system
    bootable    dalvik          docs         kernel      ndk              platform_testing  toolchain
    [root@localhost android-6.0.1_r46]#

    java -Xmx5000M -Xms1500M -XshowSettings:all


    ++++++++++++++++++++++++++++++++++++++++
    Establishing a Build Environment
    ++++++++++++++++++++++++++++++++++++++++

    http://source.android.com/source/initializing.html

    Put the following in your .bashrc (or equivalent):
    export USE_CCACHE=1
    export CCACHE_DIR=/run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/ccache

    -----------------------
    In the root of the source tree, do the following:

    [root@localhost android-6.0.1_r46]# pwd
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46
    [root@localhost android-6.0.1_r46]# ls

    export USE_CCACHE=1
    export CCACHE_DIR=/run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/ccache
    prebuilts/misc/linux-x86/ccache/ccache -M 50G


    The suggested cache size is 50-100G.
    On Linux, you can watch ccache being used by doing the following:

    watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s
    -----------------------

    ++++++++++++++++++++++++++++++++++++++++
    building
    ++++++++++++++++++++++++++++++++++++++++
    The suggested cache size is 50-100GB. You will need to run the following command once you have downloaded the source code:
    prebuilts/misc/linux-x86/ccache/ccache -M 50G


    . build/envsetup.sh
    lunch aosp_arm-userdebug
    make -j4


    -----------------------
    can ignore
    -----------------------
    find: “frameworks/base/docs/html-ndk”: 没有那个文件或目录
    -----------------------

    ++++++++++++++++++++++++++++++++++++++++
    need java-1.7.0-openjdk, not java-1.8.0-openjdk
    ++++++++++++++++++++++++++++++++++++++++

    java -version

    [root@localhost gem5-stable]# ls /usr/lib/jvm/
    java                                           java-openjdk       jre-1.8.0-openjdk-1.8.0.91-6.b14.fc23.x86_64
    java-1.8.0                                     jre                jre-openjdk
    java-1.8.0-openjdk                             jre-1.8.0
    java-1.8.0-openjdk-1.8.0.91-6.b14.fc23.x86_64  jre-1.8.0-openjdk
    [root@localhost gem5-stable]#

    ============================================
    Checking build tools versions...
    ************************************************************
    You are attempting to build with the incorrect version
    of java.
     
    Your version is: openjdk version "1.8.0_91" OpenJDK Runtime Environment (build 1.8.0_91-b14) OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode).
    The required version is: "1.7.x"
     
    Please follow the machine setup instructions at
        https://source.android.com/source/initializing.html
    ************************************************************
    build/core/main.mk:171: *** stop。 停止。

    #### make failed to build some targets (28 seconds) ####

    [root@localhost android-6.0.1_r46]#
    [root@localhost android-6.0.1_r46]# export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64
    [root@localhost android-6.0.1_r46]# export PATH=$JAVA_HOME/bin:$PATH
    [root@localhost android-6.0.1_r46]# java -version
    java version "1.7.0_75"
    OpenJDK Runtime Environment (fedora-2.5.4.2.fc20-x86_64 u75-b13)
    OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
    [root@localhost android-6.0.1_r46]#

    *********************************************************
    install java-1.7.0-openjdk
    *********************************************************
    http://koji.fedoraproject.org/koji/buildinfo?buildID=605625

    dnf search openjdk
    dnf install java-atk-wrapper

    [root@localhost 桌面]# ls java-1.7.0-openjdk-*
    java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64.rpm
    java-1.7.0-openjdk-accessibility-1.7.0.75-2.5.4.2.fc20.x86_64.rpm
    java-1.7.0-openjdk-debuginfo-1.7.0.75-2.5.4.2.fc20.x86_64.rpm
    java-1.7.0-openjdk-demo-1.7.0.75-2.5.4.2.fc20.x86_64.rpm
    java-1.7.0-openjdk-devel-1.7.0.75-2.5.4.2.fc20.x86_64.rpm
    java-1.7.0-openjdk-headless-1.7.0.75-2.5.4.2.fc20.x86_64.rpm
    java-1.7.0-openjdk-src-1.7.0.75-2.5.4.2.fc20.x86_64.rpm

    [root@localhost 桌面]# rpm -ivh --force --nodeps java-1.7.0-openjdk-*
    [root@localhost 桌面]# java -version
    [root@localhost 桌面]# ls /usr/lib/jvm/

    export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64
    export PATH=$JAVA_HOME/bin:$PATH


    *********************************************************
    make -j4
    *********************************************************
    Install: out/host/linux-x86/lib64/libartd-compiler.so
    java -Xmx3500m -jar out/host/linux-x86/framework/jill.jar  --output out/target/common/obj/JAVA_LIBRARIES/sdk_v8_intermediates/classes.jack.tmpjill.jack prebuilts/sdk/8/android.jar
    java -Xmx3500m -jar out/host/linux-x86/framework/jill.jar  --output out/target/common/obj/JAVA_LIBRARIES/sdk_v9_intermediates/classes.jack.tmpjill.jack prebuilts/sdk/9/android.jar
    java -Xmx3500m -jar out/host/linux-x86/framework/jill.jar  --output out/target/common/obj/JAVA_LIBRARIES/sdk_v4_intermediates/classes.jack.tmpjill.jack prebuilts/sdk/4/android.jar
    java -Xmx3500m -jar out/host/linux-x86/framework/jill.jar  --output out/target/common/obj/JAVA_LIBRARIES/sdk_v20_intermediates/classes.jack.tmpjill.jack prebuilts/sdk/20/android.jar
    java -Xmx3500m -jar out/host/linux-x86/framework/jill.jar  --output out/target/common/obj/JAVA_LIBRARIES/sdk_v19_intermediates/classes.jack.tmpjill.jack prebuilts/sdk/19/android.jar
    make: fork: 无法分配内存
    make: *** Deleting file 'out/target/common/obj/JAVA_LIBRARIES/sdk_v20_intermediates/classes.jack'

    ------------------------------------------
    xkill, 关闭firefox,释放内存
    ------------------------------------------

    *********************************************************

    ERROR: Bad request, see Jack server log (/tmp/jack-root/jack-8072.log)
    build/core/java.mk:643: recipe for target 'out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex' failed
    make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex] Error 41
    make: *** 正在等待未完成的任务....
    DroidDoc took 26 sec. to write docs to out/target/common/docs/system-api-stubs
    DroidDoc took 27 sec. to write docs to out/target/common/docs/api-stubs

    #### make failed to build some targets (02:09:42 (hh:mm:ss)) ####

    ------------------------------------------
    it is OK to exe "make -j4" again
    ------------------------------------------

    Creating filesystem with parameters:
        Size: 1610612736
        Block size: 4096
        Blocks per group: 32768
        Inodes per group: 8192
        Inode size: 256
        Journal blocks: 6144
        Label: system
        Blocks: 393216
        Block groups: 12
        Reserved block group size: 95
    Created filesystem with 1653/98304 inodes and 136658/393216 blocks
    Install system fs image: out/target/product/generic/system.img
    out/target/product/generic/system.img+ maxsize=1644333504 blocksize=2112 total=1610612736 reserve=16610880

    #### make completed successfully (45:33 (mm:ss)) ####

    [root@localhost android-6.0.1_r46]#

    #### make completed successfully (02:09:42 (hh:mm:ss)) + (45:33 (mm:ss)) = (02:55:15 (hh:mm:ss)) ####

    ------------------------------------------
    So far, build android successfully.
    ------------------------------------------

    *********************************************************

    [root@localhost android-6.0.1_r46]# cd out/target/product/generic/
    [root@localhost generic]# pwd
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46/out/target/product/generic

    [root@localhost generic]# du -hs *
    4.0K    android-info.txt
    4.0K    cache
    5.1M    cache.img
    72K    clean_steps.mk
    424K    data
    66M    dex_bootjars
    113M    gen
    68K    installed-files.txt
    10G    obj
    4.0K    previous_build_config.mk
    880K    ramdisk.img
    708K    recovery
    1.6M    root
    1.7G    symbols
    484M    system
    1.6G    system.img
    11M    userdata.img

    [root@localhost generic]# ls -p
    android-info.txt  clean_steps.mk  gen/                 previous_build_config.mk  root/     system.img
    cache/            data/           installed-files.txt  ramdisk.img               symbols/  userdata.img
    cache.img         dex_bootjars/   obj/                 recovery/                 system/

    [root@localhost generic]#  emulator

    emulator: WARNING: system partition size adjusted to match image file (1536 MB > 200 MB)
    emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)
    Creating filesystem with parameters:
        Size: 69206016
        Block size: 4096
        Blocks per group: 32768
        Inodes per group: 4224
        Inode size: 256
        Journal blocks: 1024
        Label:
        Blocks: 16896
        Block groups: 1
        Reserved block group size: 7
    Created filesystem with 11/4224 inodes and 1302/16896 blocks

    ----------
    or execute the following commands.
    ----------
    [root@localhost android-6.0.1_r46]# pwd
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46
    [root@localhost android-6.0.1_r46]# emulator -sysdir out/target/product/generic -system system.img

    ++++++++++++++++++++++++++++++++++++++++
    So far, all is OK
    ++++++++++++++++++++++++++++++++++++++++


    ++++++++++++++++++++++++++++++++++++++++
    example: alter the name of the application Messaging
    ++++++++++++++++++++++++++++++++++++++++
    [root@localhost android-6.0.1_r46]# gedit packages/apps/Messaging/res/values/strings.xml

        <!-- The name of the application as it appears under the main Launcher icon and in various activity titles -->
        <string name="app_name">Messaging-ztg</string>

    [root@localhost android-6.0.1_r46]# cd packages/apps/Messaging
    [root@localhost Messaging]# pwd
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46/packages/apps/Messaging
    [root@localhost Messaging]# ls
    AndroidManifest.xml  assets  ForceProguard.mk  proguard.flags          proguard-test.flags  src    tools
    Android.mk           build   jni               proguard-release.flags  res                  tests  version.mk

    [root@localhost Messaging]# mm
    Install: out/target/product/generic/data/app/messagingtests/messagingtests.apk
    make: Leaving directory '/run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46'

    #### make completed successfully (01:30 (mm:ss)) ####

    [root@localhost Messaging]#

    [root@localhost android-6.0.1_r46]# adb shell
    root@generic:/ # mount -o remount,rw /system

    [root@localhost android-6.0.1_r46]#
    adb push out/target/product/generic/data/app/messagingtests/messagingtests.apk system/app/messaging/messaging.apk

    ++++++++++++++++++++++

    [root@localhost Messaging]# cd -
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android/android-6.0.1_r46
    [root@localhost android-6.0.1_r46]# tree out/target/product/generic/system/priv-app/MmsService/
    out/target/product/generic/system/priv-app/MmsService/
    ├── MmsService.apk
    └── oat
        └── arm
            └── MmsService.odex

    2 directories, 2 files

    [root@localhost android-6.0.1_r46]# emulator -sysdir out/target/product/generic -system system.img

    [root@localhost android-6.0.1_r46]# adb shell
    root@generic:/ # mount -o remount,rw /system

    root@generic:/ # df
    Filesystem               Size     Used     Free   Blksize
    /dev                   243.4M    68.0K   243.3M   4096
    /sys/fs/cgroup         243.4M    12.0K   243.4M   4096
    /mnt                   243.4M     0.0K   243.4M   4096
    /system                  1.5G   509.7M  1002.2M   4096
    /data                  541.3M    81.1M   460.2M   4096
    /cache                  65.0M     4.1M    60.9M   4096
    /storage               243.4M     0.0K   243.4M   4096


    [root@localhost android-6.0.1_r46]#
    adb push out/target/product/generic/system/priv-app/MmsService/MmsService.apk system/priv-app/MmsService/
    adb push out/target/product/generic/system/priv-app/MmsService/oat/arm/MmsService.odex system/priv-app/MmsService/oat/arm

    [root@localhost android-6.0.1_r46]# emulator -sysdir out/target/product/generic -system system.img

    ++++++++++++++++++++++++++++++++++++++++
    So far, example is not OK
    ++++++++++++++++++++++++++++++++++++++++




    http://gem5.org/Android_KitKat

    [root@localhost android]# pwd
    /run/media/root/158a840e-63fa-4544-b0b8-dc0d40c79241/android
    [root@localhost android]#

    dd if=/dev/zero of=myimage.img bs=1M count=2048
    losetup /dev/loop0 myimage.img
    fdisk /dev/loop0
    --------------------
    Part.No Usage     Approximate Size
    1     /     500MB
    2     /data     1GB
    3     /cache     500MB
    --------------------

    partprobe /dev/loop0
    mkfs.ext4 -L AndroidRoot /dev/loop0p1
    mkfs.ext4 -L AndroidData /dev/loop0p2
    mkfs.ext4 -L AndroidCache /dev/loop0p3

    mkdir -p /mnt/android
    mount /dev/loop0p1 /mnt/android
    cd /mnt/android
    zcat AOSP/out/target/product/generic/ramdisk.img  | cpio -i
    mkdir cache

    mkdir -p /mnt/tmp
    mount -oro,loop AOSP/out/target/product/generic/system.img /mnt/tmp
    cp -a /mnt/tmp/* system/

    umount /mnt/android
    losetup -d /dev/loop0

    ++++++++++++++++++++++++++++++++++++++++


    ++++++++++++++++++++++++++++++++++++++++

  • 相关阅读:
    虚方法、重写方法以及抽象类的知识小结
    DateTime时间格式
    JavaScript中Eval()函数的作用
    JQuery Event属性说明
    正则表达式30分钟入门教程
    dwz的form表单中url的变量替换
    dwz中权限的控制
    Dwz下拉菜单的二级联动
    Win7下用IIS发布网站
    IntelliJ IDEA 常用快捷键列表及技巧大全
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646442.html
Copyright © 2011-2022 走看看