Tuesday, January 19, 2010

enable pv log

除了 make -j 4 ENABLE_PV_LOGGER=1後
發現 也要在opencore/android/Android.mk裡


LOCAL_CFLAGS += -UNDEBUG

因為opencore/android/裡的source並不會用到PV_CFLAGS

Tuesday, December 8, 2009

android ndk 的makefile

在Application.mk裡可以指定APP_BUILD_SCRIPT
來指定你要的Android.mk

可是在mydroid 跟ndk裡的Android.mk
發現在LOCAL_SHARED_LIBRARIES的用法不太一樣
所以要分開來使用
也就是在mydroid build時要一個Android.mk 而用ndk build時則要另一個

但我在Application.mk中設定APP_BUILD_SCRIPT時
發現取別的名字的話  總是會有LOCAL_MAKEFILE not defined 的error msg

最後看了一下他build 的script
local-makefile = $(lastword $(filter %Android.mk,$(MAKEFILE_LIST))

在這用了makefile的 % character

所以只要把APP_BUILD_SCRIPT設定成 Android.mk結尾的就好了
例如NdkAndroid.mk

Saturday, November 28, 2009

android ndk 1.6

這星期用了ndk 1.6

首先要改這個script

http://groups.google.com/group/android-ndk/browse_thread/thread/2127fa52b6aa362c?pli=1

比較特別的是

在Application.mk裡
APP_PROJECT_PATH可以指到別的地方 不一定要在ndk/app底下

另外
LOCAL_SHARED_LIBS
跟LOCAL_LDLIBS的usage還不是很清楚
在mydroid裡LOCAL_SHARED_LIBS可以動
但ndk裡LOCAL_LDLIBS才可以

Monday, November 2, 2009

LOCAL_SDK_VERSION

在Android.mk裡
發現了一個
LOCAL_SDK_VERSION

這是在ApiDemos裡的Android.mk看到的
如果加了                 
LOCAL_SDK_VERSION := current
就會讓你用sdk的android.jar來編
也就是一些hide的api就不能用了

Wednesday, October 28, 2009

mydroid 找不到sdcard

今天發現我從mydroid build出來的emulator一直mount 不到sdcard

最後發現 我的 /etc/沒有 vold.conf這檔案

然後就把 mydroid/development/data/etc/vold.conf  copy 到
out/target/product/generic/system/etc下
然後make systemimage 

我可以mount到sdcard了!!!

~                                                                                                                                                           
~                                                                                                                                                           
~                                   

Tuesday, September 15, 2009

在Android emulator 上改userdata system 的image max size

之前被問到userdata image要如何改大小

花了很多時間才找到XD

首先從Android build system講起
在mydroid/build/core/definitions.mk裡
有個
define assert-max-file-size的 function
原本以為只要指定
BOARD_FLASH_BLOCK_SIZE 跟BOARD_USERDATAIMAGE_MAX_SIZE
就可以了
但發現他這只是作個檢查的動作而已

不過他這有講到 /proc/mtd的東西
然後看了其他的code
也都是去讀 /proc/mtd 來作partition

dev: size erasesize name
mtd0: 04000000 00020000 "system"
mtd1: 04000000 00020000 "userdata"
mtd2: 04000000 00020000 "cache

然後去checkout android linux kernel的code
下載完首先要switch 到有goldfish的branch
不然預設是msm 裡面沒有goldfish的driver 編kernel也會有error
會跳到linux kernel裡面看的原因是有的embedded linux
會把mtd 的size name 等的information寫在 /drivers/mtd/map下
一個叫mtd_parition的struct裡


在drivers/mtd/devices/goldfish_nand.c下 有看到設定size的code
但他也是從memory中讀值出來而已
static int goldfish_nand_init_device(struct goldfish_nand *nand, int id)
看mtd->size
但是其他的地方都找不到設定size的地方

後來又跳到emulator的source裡看(mydroid/external/qemu)
首先發現了qemu可以讓你指定nand
"-nand name[,readonly][,size=size][,pagesize=size][,extrasize=size][,erasepages=pages][,initfile=file][,file=file]"

然後發現
android在emulator的options裡有加讓你設定nand size的option
-partition-size system/data partition size in MBs


所以 結論就是
在emulator後面加上 -partition-size 就可以設定system userdata image的大小了

# cat /proc/mtd
dev: size erasesize name
mtd0: 07c20000 00020000 "system"
mtd1: 07c20000 00020000 "userdata"
mtd2: 04000000 00020000 "cache"