發表文章

目前顯示的是 8月, 2012的文章

[Android] Boot Animation 開機動畫

Android系統開機動畫包括三部分: bootloader部份 bootloader bootloader在開機階段會show一個小機器人的圖片 fastboot/main.c BootMenuImagesLOGO[0] = (Icon *)&s_logo; BootMenu_LOGO = FastbootCreateRadioMenu(1, 0, 3,    NVIDIA_GREEN, BootMenuImagesLOGO); FastbootDrawRadioMenu(&s_Frontbuffer, s_FrontbufferPixels, BootMenu_LOGO); fastboot/logo_h #ifndef logo_h #define logo_h typedef struct _logo {     NvU16 width;     NvU16 height;     NvS32 stride;     NvU8 bpp;     NvU32 data[65536]; } logo_t; static const logo_t s_logo = {     256,     256,     768,     24,     {         0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,          0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000,           ...    ...

[Android] 讓系統開機時自動執行script

System service法 在init.rc裡,把要呼叫的script註冊成service,並在開機時執行。 init.rc service call_script /system/bin/sh /system/bin/test.sh    class main    user root    group shell    oneshot Framework法 由於上述方法在新版Android時還是會權限不足,所改改由framework端,有root權限的services下手。 編譯時拷貝 device/nvidia/ventana/ventana.mk PRODUCT_COPY_FILES += \    vendor/xxx/symlink-apk.sh:system/bin/symlink-apk.sh java的exec method frameworks/base/services/java/com/android/server/SystemServer.java   @Override   public void run() { //+++       File file = new File("/data/media/apk-link");       if(!file.exists()){         try{             Runtime rt = Runtime.getRuntime();                    Process proc = rt.exec...

[Android] bootchart 開機時間測量

最近換了新工作,沒想到又要做一些以前做過的事情,但是以前筆記做得很不確實,所以今後都要認真記錄起來。 Bootchart其實是Linux既有的工具,在此記錄Android上的用法 這份文件其實寫的很清楚 system/core/init/README.BOOTCHART 在Android.mk,可以看到如果有define INIT_BOOTCHART,就會把bootchart編進init裡面 system/core/init/Android.mk #ifeq ($(strip $(INIT_BOOTCHART)),true) LOCAL_SRC_FILES += bootchart.c LOCAL_CFLAGS    += -DBOOTCHART=0 #endif 之後編譯 m INIT_BOOTCHART=true 如果不想大build 可以在修改Android.mk之後 mmm system/core/init #mmm $MODULE_NAME 要讓開始記錄 首先,進入deive adb shell 建一個bootchart目錄在/data mkdir /data/bootchart' echo 120 > /data/bootchart-start 重開機之後,/data/bootchart 會有下列檔案: header kernel_pacct proc_diskstats.log proc_stat.log proc_ps.log 把這些檔案tar起來,抓出來分析 cd /data/bootchart tar -czf bootchart.tgz * 注意不要tar到資料夾那層 我們要把它做成美美的圖片 說明寫到: 1/ download the sources from www.bootchart.org 2/ unpack them 3/ in the source directory, type 'ant' to build the bootchart program 4/ type 'java -jar bootchart.jar /path/to/bootchart.tgz ...

Build Android ICS on Mac OS 10.8

在mac上build Android需要一些"折騰",記錄一下收集來的資訊以及個人試驗的結果。 以 google docs 為準: Test environment Mac OS 10.8 Xcode 4.4 Homebrew 0.9.2 Android 4.1.1_r3 Set build environment create case-sensitive build environment 原因: default的OS X是 case-insensitive,Android會不給compile: http://source.android.com/source/initializing.html In a default installation, OS X runs on a case-preserving but case-insensitive filesystem. This type of filesystem is not supported by git and will cause some git commands (such as "git status") to behave abnormally. Because of this, we recommend that you always work with the AOSP source files on a case-sensitive filesystem. This can be done fairly easily using a disk image, discussed below. 解法: 用Disk Utility建立一個25GB的"case sensitive, journaled" DMG disk image 或是 You can also create it from a shell with the following command: hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dm...