We're no longer updating This wiki!!

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
en:androidbuildhowto [2014/07/01 12:28]
ruppi [ODROID-A4]
en:androidbuildhowto [2014/07/01 12:28] (current)
ruppi [ODROID-PC]
Line 1: Line 1:
 +====== ODROID-A4, A, PC, X, X2, U2, U3 and Q, Q2 Android(Ice Cream Sandwich & JellyBean) System ======
 +===== Preface =====
 +This page will explain how to compile Android for ODROID-A4 & A, PC, X, X2, Q, Q2, U2, U3. Current version is android 4.x based on Samsung rtm1.0
 +
 +===== Build environment =====
 +
 +Tested with Ubuntu 10.04/​10.10/​11.04 64bit version. ubuntu 11.10 in particular is troublesome because it uses gcc-4.6 by default and has no sun-java6-jdk in its repositories. heres'​s what you'll need to do to get AOSP 4.x to compile on ubuntu 11.10.
 +
 +===== Source code download =====
 +Source code is stored in bundled micro SD card or you can get the latest source from here.
 +http://​com.odroid.com/​sigong/​nf_file_board/​nfile_board.php
 +
 +Please note,
 +
 +To follow below instructions,​ you need to update your ODROID to latest JB release.
 +
 +===== Download and Install essential packages =====
 +Android requires the following system packages:
 +
 + - flex: This lexical analyzer generator is used to read a given input file for a description of a scanner to generate. ​
 + - bison: This is a general-purpose parser generator. ​
 + - gperf: This is a perfect hash function generator. ​
 + - libesd0-dev:​ This enlightened sound daemon (dev files) is used to mix digitized audio streams for playback by a single device. ​
 + - libwxgtk2.6-dev:​ This package provides GUI components and other facilities for many different platforms. ​
 + - build-essential:​ This package contains a list of packages considered fundamental to building Debian packages. ​
 + - Android source code includes a hard dependency on the Java Developer Kit (JDK) 6.0 or greater.
 +
 +Please refer to this link first !!!
 +http://​source.android.com/​source/​download.html
 +
 + - Install dependencies.
 +
 +Compilers, parsers, file-manipulation tools, libraries, etc; this is mandatory! The list on the source.android.com Inititalizing a Build Environment page is similar, but a few of those packages donot exist in 11.10. Use these:
 +<​code>​
 +#sudo apt-get update
 +#sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
 +x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils
 +</​code>​
 + - Your system may need a mkimage to make a ramdisk image.
 +<​code>​
 +# sudo apt-get install uboot-mkimage
 +</​code>​
 +
 +
 + - Android also need Phython 2.4 or higher. But, Ubuntu has Python 2.5 in general.
 + - You must build on Ubuntu 64bit from Ice Cream.
 +<​code>​
 +# sudo apt-get update
 +# sudo apt-get install sun-java6-jdk
 +</​code>​
 + 
 +
 + - Download Sun Java 6 JDK for Ubuntu 11.04/​10.10/​11.10
 +Android 2.3+ requires Java 6 to build correctly. While OpenJDK did work for 2.3, it doesnot work for Android 4.0; you need Sun Java. Download the JDK 1.6 binary release from Sun oracle Java download site and unzip it somewhere in your system, for example:
 +
 +<​code>​
 +#sudo mkdir -p /​opt/​java/​64/​
 +#sudo cp jdk-6u29-linux-x64.bin /​opt/​java/​64
 +#sudo su -
 +#cd /​opt/​java/​64
 +#chmod +x jdk-6u29-linux-x64.bin
 +#​./​jdk-6u29-linux-x64.bin
 +#exit
 +</​code>​
 +Add the new Java to your shell environment $PATH so it takes precedent over other Javas you might have installed:
 +<​code>​
 +echo '​export PATH=/​opt/​java/​64/​jdk1.6.0_29/​bin:​$PATH'​ >> ~/.bashrc
 +</​code>​
 +To activate new PATH, log out and in again or type "​export PATH=/​opt/​java/​64/​jdk1.6.0_29/​bin:​$PATH" ​
 +
 +
 +===== Getting source code and extraction =====
 +Android source code is stored in bundled microSD card.
 +File name of compressed source code may be different.
 +<​code>​
 +# mkdir mydroid
 +# cd mydroid
 +# tar xf source.tar
 +# tar zxf android.tar.gz
 +# cd android
 +</​code>​
 +With this process, you will have a full source code in mydroid directory.
 +
 +===== Obtain restricted files from ODROID =====
 +There are some restricted object files which have no source code.
 +We have no right to release even the objects.
 +Those files should be extracted from ODROID device.
 +
 +In the android/​device/​hardkernel/​odroida/​AndroidBoard.mk file, confidential library contents have no source code. 
 +Refer to the AndroidBoard.mk file to make a list of restricted ones.
 +==== Case 1: ADB from android-sdk ====
 +You need to install ADB driver first and connect your ODROID to your host PC.
 +
 +===== ODROID-Q & X Exynos-4412 platform =====
 +<​code>​
 +You don't need to extract any file from ODROID-Q/X. You can skip this process.
 +</​code>​
 +===== ODROID-A =====
 +<​code>​
 +== Extract library files ==
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libMali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libUMP.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libion.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libEGL_mali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libGLESv1_CM_mali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libGLESv2_mali.so .
 +
 +== Change access permission ==
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ chmod -R 755 *
 +
 +== Extract library files ==
 +# mydroid/​android/​device/​samsung/​exynos4/​libgralloc_ump$ adb pull /​system/​lib/​hw/​gralloc.odroida.so .
 +
 +== Change access permission ==
 +# mydroid/​android/​device/​samsung/​exynos4/​libgralloc_ump$ chmod -R 755 *
 +
 +== Extract library files ==
 +# mydroid/​android/​vendor/​invensense_v3$ adb pull /​system/​lib/​hw/​sensors.odroida.so .
 +# mydroid/​android/​vendor/​invensense_v3$ adb pull /​system/​lib/​libmpl.so .
 +# mydroid/​android/​vendor/​invensense_v3$ adb pull /​system/​lib/​libmlplatform.so .
 +# mydroid/​android/​vendor/​invensense_v3$ adb pull /​system/​lib/​libmllite.so .
 +
 +== Change access permission ==
 +# mydroid/​android/​vendor/​invensense chmod -R 755 *
 +</​code>​
 +
 +==== ODROID-A4 ====
 +<​code>​
 +== Extract library files ==
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libMali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libUMP.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libion.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libEGL_mali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libGLESv1_CM_mali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libGLESv2_mali.so .
 +== Change access permission ==
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ chmod -R 755 *
 +== Extract library files ==
 +# mydroid/​android/​device/​samsung/​exynos4/​libgralloc_ump$ adb pull /​system/​lib/​hw/​gralloc.odroida4.so .
 +== Change access permission ==
 +# mydroid/​android/​device/​samsung/​exynos4/​libgralloc_ump$ chmod -R 755 *
 +== Extract library files ==
 +# mydroid/​android/​vendor/​invensense$ adb pull /​system/​lib/​hw/​sensors.odroida4.so .
 +# mydroid/​android/​vendor/​invensense$ adb pull /​system/​lib/​libinvensense_hal.so .
 +# mydroid/​android/​vendor/​invensense$ adb pull /​system/​lib/​libmplmpu.so .
 +# mydroid/​android/​vendor/​invensense$ adb pull /​system/​lib/​libmlplatform.so .
 +# mydroid/​android/​vendor/​invensense$ adb pull /​system/​lib/​libmllite.so .
 +# mydroid/​android/​vendor/​invensense$ adb pull /​system/​lib/​libakmd.so .
 +== Change access permission ==
 +# mydroid/​android/​vendor/​invensense chmod -R 755 *
 +</​code>​
 +
 +==== ODROID-PC ====
 +<​code>​
 +== Extract library files ==
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libMali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libUMP.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​libion.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libEGL_mali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libGLESv1_CM_mali.so .
 +# mydroid/​android/​device/​samsung/​exynos4/​lib/​mali_ump$ adb pull /​system/​lib/​egl/​libGLESv2_mali.so .
 +== Change access permission ==
 +# mydroid/​android/​device/​sec/​lib/​mali_ump$ chmod -R 755 *
 +== Extract library files ==
 +# mydroid/​android/​device/​samsung/​exynos4/​libgralloc_ump$ adb pull /​system/​lib/​hw/​gralloc.odroidpc.so .
 +== Change access permission ==
 +# mydroid/​android/​device/​samsung/​exynos4/​libgralloc_ump$ chmod -R 755 *
 +</​code>​
 +
 +Turn off ODROID, and eject the T-Flash card and insert it into T-flash memory card reader. Then plug it to your host PC
 +In the linux host PC, you need to copy all the restricted files as described in Case-1.
 +
 +===== Building the code =====
 +
 +You need to install mkimage package
 +<​code>​
 +# sudo apt-get install uboot-mkimage ​
 +</​code>​
 +or you need to set a PATH of mkimage of uboot directory.
 +
 +Optional!! ​ If you meet compile error due to JDK version mismatching,​ add this items in to Synaptic package source. (sudo vi /​etc/​apt/​sources.list)
 +<​code>​
 +deb http://​archive.ubuntu.com/​ubuntu/​ jaunty multiverse
 +deb http://​archive.ubuntu.com/​ubuntu/​ jaunty-updates multiverse
 +</​code>​
 +<​code>​
 +sudo apt-get update
 +</​code>​
 +
 +* To build the files, command below in your working directory:
 +
 +
 +==== odroid - A ====
 +<​code>​
 +# cd ~/​mydroid/​android
 +# mydroid/​android$
 +# chmod u+x ./​build_android.sh
 +# ./​build_android.sh odroida
 +</​code>​
 +==== odroid-A4 ====
 +<​code>​
 +# cd ~/​mydroid/​android
 +# mydroid/​android$
 +# chmod u+x ./​build_android.sh
 +# ./​build_android.sh odroida4
 +</​code>​
 +
 +===== odroid - PC =====
 +<​code>​
 +# cd ~/​mydroid/​android
 +# mydroid/​android$
 +</​code>​
 +
 +===== odroid - X ======
 +<​code>​
 +# mydroid/​android$
 +edit device/​hardkernel/​odroidx/​BoardConfig.mk
 +BOARD_USES_EMMC = true -> Use eMMC
 +BOARD_USES_EMMC = false -> Use SD Card
 +# chmod u+x ./​build_android.sh
 +# ./​build_android.sh odroidx
 +</​code>​
 +
 +===== odroid - X2 =====
 +<​code>​
 +# mydroid/​android$
 +edit device/​hardkernel/​odroidx2/​BoardConfig.mk
 +BOARD_USES_EMMC = true -> Use eMMC
 +BOARD_USES_EMMC = false -> Use SD Card
 +# chmod u+x ./​build_android.sh
 +# ./​build_android.sh odroidx2
 +</​code>​
 +===== odroid - Q =====
 +<​code>​
 +# cd ~/​mydroid/​android
 +# mydroid/​android$
 +# chmod u+x ./​build_android.sh
 +# ./​build_android.sh odroidq
 +</​code>​
 +===== odroid - Q2 =====
 +<​code>​
 +# cd ~/​mydroid/​android
 +# mydroid/​android$
 +# chmod u+x ./​build_android.sh
 +# ./​build_android.sh odroidq2
 +</​code>​
 +
 +===== odroid - U2/U3 =====
 +<​code>​
 +# chmod u+x ./​build_android.sh
 +# ./​build_android.sh odroidu
 +</​code>​
 +* If there is no issue, you can see below message. rootfs directory is automatically generated and all root file system of Android is located in that directory.(/​mydroid/​android/​xxxxx-img)
 +<​code>​
 +ok sucess !!!
 +</​code>​
 +
 +===== write MBR =====
 +In the u-boot prompt.
 +<​code>​
 +#fdisk -c 0
 +</​code>​
 +
 +===== Format data, cache, fat partitions =====
 +In the host PC.
 + <​code>​
 +#fastboot erase userdata
 +#fastboot erase cache
 +#fastboot erase fat
 + </​code>​
 +
 +===== Write ramdisk-uboot.img =====
 +not any more ramdisk-boot.img.
 +intergrate into system.img.
 +
 +Need to learn u-boot section of Odroid project. http://​dev.odroid.com/​projects/​odroid-t/​wiki/​UbootPage UBoot_Compile_HowTo
 +In the host PC.
 +<​code>​
 +#fastboot flash ramdisk out/​target/​product/​odroid[a,​a4,​pc,​x,​q]/​ramdisk-uboot.img
 +</​code>​
 +
 +===== Write system.img =====
 +In the host PC.
 +<​code>​
 +#fastboot flash system out/​target/​product/​odroid[a,​a4,​pc,​x,​q]/​system.img
 +</​code>​
 +
 +===== Reboot system ======
 +In the host PC.
 +<​code>​
 +#fastboot reboot
 +</​code>​
 +
 +===== reformat 2 paritions with ext4 fs for ODROID-X , X2 , Q, Q2 & U2, U3 eMMC storage =====
 +You can't format any system partition with EXT4 file system in the u-boot prompt due to license issue.
 +So you MUST format the system partition as below in Android prompt in ADB shell or USB-UART console.
 +Please note the eMMC can't be connected to your Host PC and we need this process.
 +If you use SD-card for OS, just format the partition with your Linux Host PC via card reader.
 +<​code>​
 +root@@android:/​ # make_ext4fs /​dev/​block/​mmcblk0p3
 +Creating filesystem with parameters:
 +    Size: 1073741824
 +    Block size: 4096
 +    Blocks per group: 32768
 +    Inodes per group: 8192
 +    Inode size: 256
 +    Journal blocks: 4096
 +    Label: ​
 +    Blocks: 262144
 +    Block groups: 8
 +    Reserved block group size: 63
 +Created filesystem with 11/65536 inodes and 8536/262144 blocks
 +root@@android:/​ # make_ext4fs /​dev/​block/​mmcblk0p4
 +Creating filesystem with parameters:
 +    Size: 134217728
 +    Block size: 4096
 +    Blocks per group: 32768
 +    Inodes per group: 8192
 +    Inode size: 256
 +    Journal blocks: 1024
 +    Label: ​
 +    Blocks: 32768
 +    Block groups: 1
 +    Reserved block group size: 7
 +Created filesystem with 11/8192 inodes and 1550/32768 blocks
 +root@@android:/​ # reboot
 +</​code>​
 +
 +===== References =====
 +  * http://​source.android.com/​source/​download.html
 +  * http://​odroid.foros-phpbb.com/​forum.htm
 +  * http://​www.hardkernel.com ​                                        
 +
 +
  
en/androidbuildhowto.txt ยท Last modified: 2014/07/01 12:28 by ruppi
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0