Build and Evaluate Android TV on HiKey
The objective of this page is to share the instructions to build and evaluate Android TV on 96boards.org's open HiKey development platform.
What has been done so far
* Based on Linaro's RLCR release, we have added few patches to enable Android TV features for Hikey.
* The source manifest also pulls https://github.com/googlesamples/androidtv-sample-inputs Sample Inputs project.
* The sample inputs projects and it's dependencies are built using gradle scripts.
* The pre-built snapshot images can be pulled from http://snapshots.linaro.org/android/android-tv-hikey-n/. Note: For bootloader firmware, please use https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/hikey/.
* These images work on Lemaker's version of Hikey platform.
HOW TO Establish build environment
Kindly refer to Google provided instructions to setup the build environment for Android
Before doing repo init or repo sync kindly install few other host dependencies by executing the below command.
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip vim-common python-parted python-yaml wget uuid-dev python-mako u-boot-tools bc acpica-tools python-wand python-crypto mtools liblz4-tool
HOW TO Download the sources
Instructions to clone the sources are :
repo init -u https://android-git.linaro.org/git/platform/manifest.git -b android-7.1.1_r28 -g "default,-non-default,-device,hikey,fugu"
git clone https://android-git.linaro.org/git/platform/manifest.git -b linaro-nougat-tv local_manifests
repo sync -j16
WARNING: If you run repo sync again at any time in the future to update all the repos, by default all the patches above would be discarded, so you'll have reapply them again before rebuilding!
SETTINGS APP CRASH IN DEFAULT LAUNCHER
NOTE : The settings app crashes with default Android launcher when Android is configured for TV.
To get a working settings app, we recommend you to use LeanbackLauncher. The steps are as given below:
From this link https://developers.google.com/android/drivers#fugu download the latest launcher for TV from Google.
Example : Download https://dl.google.com/dl/android/aosp/google-fugu-lrx21m-b6038c1e.tgz
In Android source directory
tar -xzvf google-fugu-lrx21m-b6038c1e.tgz
./extract-google-fugu.sh (ACCEPT THE LICENSE)
The LeanbackLauncher will be built as part of Android and Android would boot with this launcher.
HOW TO Build the sources
** Build for 8GB flash Hikey
make -j16 TARGET_BUILD_FOR_TV=true TARGET_BUILD_KERNEL=true CFG_SECURE_DATA_PATH=y
** Build for 4GB flash Hikey
make -j16 TARGET_BUILD_FOR_TV=true TARGET_USERDATAIMAGE_4GB=true TARGET_BUILD_KERNEL=true CFG_SECURE_DATA_PATH=y
[Build Live Tv Launcher]
tapas LiveTv arm64
cp -r out/target/product/generic_arm64/system/priv-app/LiveTv/ out/target/product/hikey/system/priv-app/
mkdir -p apps/
NOTE : You should have Android SDK tools installed in your system, if not then please follow these 6 steps one time, need not repeat these for every build :
Look for the latest version of the tools here https://developer.android.com/studio/index.html and give the corresponding name of the zip file
Step 2 #> unzip tools_r25.2.3-linux.zip
Step 3 #> (while :; do echo 'y'; sleep 2; done) | tools/android update sdk --no-ui
Step 4 #> export ANDROID_HOME=$PWD
Step 5 #> mkdir -p /home/<your user name>/.android/
Step 6 #> echo "count=0" > /home/<your user name>/.android/repositories.cfg
If you have SDK installed previously then discard the above 6 steps and continue as below
export ANDROID_HOME=<path to sdk>
echo "count=0" > $HOME/.android/repositories.cfg
rm -rf ExoPlayer androidtv-sample-inputs
Building apps and dependencies
sed -i "s/23.0.3/25.0.2/g" app/build.gradle library/build.gradle
cp app/build/outputs/apk/app-debug.apk ../../out/target/product/hikey/data/app/
git clone https://github.com/google/ExoPlayer
sed -i "s/23.0.3/25.0.2/g" build.gradle
cp ./demo/buildout/outputs/apk/demo-withExtensions-debug.apk ../../out/target/product/hikey/data/app/
How to enable OPTEE support
1. Use Pre-built UEFI firmware: Download fip.bin here
Replace the firmware by following commend:
$ fastboot flash fastboot fip.bin
2. Build UEFI firmware manually:
$ cd device/linaro/hikey/bootloader/
$ make TARGET_TEE_IS_OPTEE=true
$ cd -
find the fip.bin at out/dist/
# Compress images
../../../host/linux-x86/bin/make_ext4fs -s -T -1 -S root/file_contexts -L data -l 5588893184 -a data userdata.img data
../../../host/linux-x86/bin/make_ext4fs -s -T -1 -S root/file_contexts.bin -L system -l 1610612736 -a system system.img system system
Build UEFI bootloader with OP-TEE
cd device/linaro/hikey/bootloader make TARGET_TEE_IS_OPTEE=true
Enable adb over usb
Boot the device. On serial console: su setprop sys.usb.configfs 1 stop adbd start adbd
Submit Code changes
* Developers working on AOSP TV will have to implement the features and push patches using Gerrit. Details on how to use Gerrit is here, https://wiki.linaro.org/Platform/Android/Gerrit
* To post patches against Android's existing projects - Submit the patch to gerrit for review and include the patch in hikey-tv patchset: https://android-git.linaro.org/android-patchsets.git/tree/hikey-tv
* The file "hikey-tv" should contain all the patches related to hikey-tv configuration. We can also have a tv-patchsets file which will contain Android TV specific patches that one wishes to include.
* To post patches that introduces an all new project then ask Systems team to create a project repository and then post the patches against this repository.
Q&A & Notes
1. Q: I cannot pass the WV CDM Security L1 check and always falling back to L3 when using Exoplayer.
A: Check the /dev/tee* device nodes persission.
# chmod 777 /dev/tee*
LHG/Build-AndroidTV-For-Hikey (last modified 2017-08-01 17:47:02)