1 allegato(i)
[Guida] Compilazione android dai sorgenti
Ciao a tutti,
condivido la mia esperienza nella compilazione di android per i tablet basati sull'A13 (come il 706i).
Le mie prove sono state fatte con i sorgenti 4.0.4 ma potrebbe essere un punto di partenza per compilare anche le versioni successive.
1) Preparazione dell'ambiente di build
La prima cosa da fare è preparare l'ambiente per il build:
- prendere una macchina con un processore decente e abbastanza ram (consigliati 4GB) e installare Ubuntu 10.04 64 bit. Scaricate proprio questa versione, in quanto è quella utilizzata di solito per la compilazione.
- Sostituire l'openjdk installato di default su ubuntu con il sun jdk 6:
scaricate il file jdk-6u41-linux-x64.bin da qui: Java Archive Downloads - Java SE 6 e installatelo seguendo queste istruzioni:
codice:
$ chmod +x jdk-6u41-linux-x64.bin
$ sudo ./jdk-6u41-linux-x64.bin
$ sudo mv jdk1.6.0_41 /usr/lib/jvm/
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_41/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_41/bin/javac 1
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_41/bin/javaws 1
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_41/bin/javaws 1
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config javaws
$ sudo update-alternatives --config jar
- Installare i pacchetti richiesti:
codice:
$ 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 lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
$ sudo apt-get install uboot-mkimage
$ sudo apt-get update
2) Scaricare i sorgenti
3) Adattare i sorgenti al dispositivo
- sostituire il file a13/android4.0/device/softwinner/nuclear-evb/init.sun5i.rc con quello allegato
- sostituire il file a13/android4.0/device/softwinner/nuclear-evb/ueventd.sun5i.rc con quello allegato
- sostituire il file a13/android4.0/device/softwinner/nuclear-evb/BoardConfig.mk con quello allegato.
NB: alla fine del file c'è la seguente sezione commentata:
codice:
#BOARD_HAVE_BLUETOOTH := true
#BOARD_HAVE_BLUETOOTH_BCM := true
#BOARD_HAVE_BLUETOOTH_CSR:= true
#SW_BOARD_HAVE_BLUETOOTH_NAME := hwmw269v2
per abilitare il bluetooth dovrebbe bastare decommentare queste righe, cioè togliere il # iniziale, ma ormai ho formattato l'ambiente di build e non ho il tempo di ripristinarlo. Se qualcuno vuole provare poi ci può dire se funziona ;) - modificare il file a13/lichee/tools/pack/chips/configs/android/a13-evb/sys_config1.fex
(dalla home)
codice:
gedit a13/lichee/tools/pack/chips/configs/android/a13-evb/sys_config1.fex
sostituire le sezioni ctp_para, gsensor_para, lcd0_para in questo modo:
codice:
[ctp_para]
ctp_twi_id = 1
ctp_used = 1
ctp_name = "ft5x_ts"
ctp_twi_addr = 0x38
ctp2_used = 1
ctp2_name = "ssd253x-ts"
ctp2_twi_addr = 72
ctp2_ssd_type = 75801
ctp9_used = 1
ctp9_name = "gt811"
ctp9_twi_addr = 93
ctp_screen_max_x = 800
ctp_screen_max_y = 480
ctp_revert_x_flag = 0
ctp_revert_y_flag = 0
ctp_exchange_x_y_flag = 0
ctp_int_port = port:PG11<6><default><default><default>
ctp_wakeup = port:PB03<1><default><default><1>
ctp_io_port = port:PG11<6><default><default><default>
codice:
[gsensor_para]
gsensor_used = 1
gsensor_name = "mxc622x"
gsensor_twi_id = 1
gsensor_twi_addr = 0x15
gsensor_int1 =
gsensor_int2 =
codice:
[lcd0_para]
lcd_used = 1
lcd_x = 800
lcd_y = 480
lcd_dclk_freq = 33
lcd_pwm_not_used = 0
lcd_pwm_ch = 0
lcd_pwm_freq = 10000
lcd_pwm_pol = 1
lcd_if = 0
lcd_hbp = 46
lcd_ht = 1055
lcd_vbp = 23
lcd_vt = 1050
lcd_hv_if = 0
lcd_hv_smode = 0
lcd_hv_s888_if = 0
lcd_hv_syuv_if = 0
lcd_hv_vspw = 0
lcd_hv_hspw = 0
lcd_lvds_ch = 0
lcd_lvds_mode = 0
lcd_lvds_bitwidth = 0
lcd_lvds_io_cross = 0
lcd_cpu_if = 0
lcd_frm = 1
lcd_io_cfg0 = 268435456
lcd_gamma_correction_en = 0
lcd_gamma_tbl_0 = 0x0
lcd_gamma_tbl_1 = 0x10101
lcd_gamma_tbl_255 = 0xffffff
lcd_bl_en_used = 1
lcd_bl_en = port:power1<1><0><default><1>
lcd_power_used = 1
lcd_power = port:power0<1><0><default><1>
lcd_pwm_used = 1
lcd_pwm = port:PB02<2><0><default><default>
lcd_gpio_0 =
lcd_gpio_1 =
lcd_gpio_2 =
lcd_gpio_3 =
lcdd0 = port:PD00<2><0><default><default>
lcdd1 = port:PD01<2><0><default><default>
lcdd2 = port:PD02<2><0><default><default>
lcdd3 = port:PD03<2><0><default><default>
lcdd4 = port:PD04<2><0><default><default>
lcdd5 = port:PD05<2><0><default><default>
lcdd6 = port:PD06<2><0><default><default>
lcdd7 = port:PD07<2><0><default><default>
lcdd8 = port:PD08<2><0><default><default>
lcdd9 = port:PD09<2><0><default><default>
lcdd10 = port:PD10<2><0><default><default>
lcdd11 = port:PD11<2><0><default><default>
lcdd12 = port:PD12<2><0><default><default>
lcdd13 = port:PD13<2><0><default><default>
lcdd14 = port:PD14<2><0><default><default>
lcdd15 = port:PD15<2><0><default><default>
lcdd16 = port:PD16<2><0><default><default>
lcdd17 = port:PD17<2><0><default><default>
lcdd18 = port:PD18<2><0><default><default>
lcdd19 = port:PD19<2><0><default><default>
lcdd20 = port:PD20<2><0><default><default>
lcdd21 = port:PD21<2><0><default><default>
lcdd22 = port:PD22<2><0><default><default>
lcdd23 = port:PD23<2><0><default><default>
lcdclk = port:PD24<2><0><default><default>
lcdde = port:PD25<2><0><default><default>
lcdhsync = port:PD26<2><0><default><default>
lcdvsync = port:PD27<2><0><default><default>
- modificare il file a13/android4.0/device/softwinner/nuclear-common/ProductCommon.mk
(dalla home)
codice:
gedit a13/android4.0/device/softwinner/nuclear-common/ProductCommon.mk
cambiando questi valori:
codice:
persist.sys.timezone=Europe/Amsterdam
persist.sys.language=it
persist.sys.country=IT
4) Compilare!
(dalla home)
codice:
cd a13/lichee
./build.sh -p a13_nuclear -k 3.0
cd ../android4.0
source build/envsetup.sh
lunch
(scegliere il numero corrispondente a nuclear_evb-eng)
codice:
extract-bsp
make -j2
(il numero 2 in make -j2 indica il numero di processori da utilizzare per la compilazione. Potete sostituirlo con il numero di processori a vostra disposizione (es: se avete un quad-core potete mettere make -j4. La compilazione è molto lunga, quindi quanti più processori utilizzate meglio è))
adesso copiare il file idc allegato in a13/android4.0/out/target/product/nuclear-evb/system/usr/idc
poi eseguite:
a questo punto in a13/lichee/tools/pack/ dovreste trovare il file sun5i_android_a13-evb.img da utilizzare con livesuit
enjoy! :)