目前分類:Android (34)

瀏覽方式: 標題列表 簡短摘要

2013/4: Android JB 之後,不需要特別修改即可搭配 gcc 4.6


 

今年中出的 Ubuntu 11.10 把 gcc 升級到 4.6,這會讓不少人的 Android build 不出來 :X

主要的原因很簡單,因為大家的 code 不夠嚴謹,跟不上 gcc 4.6。這通常都是BSP本身的問題,因為gcc版本

影響的是 host 端,最大宗的就是廠商提供的 host tool、flash tool

huenlil 發表在 痞客邦 PIXNET 留言(2) 人氣()

Adb 全名是 Android Debug Bridge,是開發或使用 Android 時很常用到的工具。使用者可以從Android 官方站下載 SDK,在其中的 platform-tools (原本在 \Tools) 中找到。

當機器上有打開 USB debug mode 時,使用者即可通過adb 進行各種 debug 、底層(linux user space)的 Android 功能。比較常用的功能:

- tools\ddms.bat: Android AP/Framework 層最主要的 debug tool (已經改名為)

huenlil 發表在 痞客邦 PIXNET 留言(1) 人氣()

最近發布的Android Honeycomb ,其中一項新功能是支援了 MTP/PTP。

Digital media file transfer

The platform includes built-in support for Media/Picture Transfer Protocol (MTP/PTP) over USB, which lets users easily transfer any type of media files between devices and to a host computer. Developers can build on this support, creating applications that let users create or manage media files that they may want to transfer or share across devices.



huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

追一個關於 open gl 的 display 問題,摘錄 error list 原因,方便以後查找 XD

來源: http://blog.chinaunix.net/u3/111072/showart_2273346.html

 

294              { EGL_SUCCESS,
295              TEXT("Function succeeded.") },

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

先參考 這篇Android 的 uid 了解概念,再來是系統預設的 uid list,實際上是定義在

system/core/include/private/android_filesystem_config.h

包括 root, system, :

#define AID_ROOT             0  /* traditional unix root user */

#define AID_SYSTEM        1000  /* system server */

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

前言:

Android 的 build system 已經大幅將build的過程簡單化、自動化,所以可以在執行 envsetup.sh 之後使用各種方便

的指令,以下列出目前支援的功能:

Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:

- croot:   Changes directory to the top of the tree.

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

引言:

ASHMEM = Android shared memory, 由Goolge 設計的一種記憶體分享、分配機制,主要用於 Google 設計給 Android 使用的 IPC Binder。

主要的driver 可在 aosp 的 kernel/mm/ashmem.c 找到實作,user space 的部份則是主要在 IMemory 裡面處理。

下面是從網路上收集的資訊:

 

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

Android 官方的文件,可直接看 android/dalvik/docs/embedded-vm-control.html

 

Controlling the Embedded VM

Overview

The Dalvik VM supports a variety of command-line arguments (use adb shell dalvikvm -help to get a summary), but it's not possible to pass arbitrary arguments through the Android application runtime. It is, however, possible to affect the VM behavior through certain system properties.

For all of the features described below, you would set the system property with setprop, issuing a shell command on the device like this:

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

新功能:http://developer.android.com/sdk/android-2.2-highlights.html

SDK: http://developer.android.com/sdk/android-2.2.html

Demo: http://www.engadget.com/2010/05/20/android-2-2-froyo-beta-hands-on-flash-10-1-wifi-hotspots-an/

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

來源: http://freepine.blogspot.com/2010/02/analyze-memory-leak-of-android-native.html

Android libc_debug.so has a built-in function to dump all heap allocations with its backtrace, which is very useful to debug memory leaks of native processes. Below are the steps summarized during my investigation of mediaserver process:

  1. apply the patch in ./frameworks/base, which registers a memory dumper service in mediaserver process, then rebuild
  2. flash new system.img, replace libc.so with libc_debug.so, then reboot
    • $ adb remount
    • $ adb shell mv /system/lib/libc_debug.so /system/lib/libc.so
    • $ adb reboot
  3. run memorydumper to get the initial heap allocations of mediaserver process

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

來源: http://3dgo.net/2010/01/26/nexus-one-adb-on-ubuntu-9-10/

$vim /etc/udev/rules.d/90-android.rules

 

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

Android內核是基於Linux 2.6內核的(目前最新開發版本是2.6.31),它是一個增強內核版本,除了修改部分Bug外,它提供了用於支持Android平台的設備驅動,其核心驅動主要包括:


Android Binder,基於OpenBinder框架的一個驅動,用於提供Android平台的process間通訊(IPC,inter-process communication)。
    源代碼位於drivers/staging/android/binder.c


Android電源管理(PM),一個基於標準Linux電源管理系統的輕量級的Android電源管理驅動,針對嵌入式設備做了很多最佳化。
    源代碼位於kernel/power/earlysuspend.c
                        kernel/power/consoleearlysuspend.c
                        kernel/power/fbearlysuspend.c
                        kernel/power/wakelock.c
                        kernel/power/userwakelock.c


低記憶體管理器(Low Memory Killer),相對於Linux標準OOM(Out Of Memory)機制更加靈活,它可以根據需要殺死process來釋放需要的記憶體。
    源代碼位於drivers/staging/android/lowmemorykiller.c


匿名共享記憶體(ashmem),為process間提供大塊共享記憶體,同時為內核提供回收和管理這個記憶體的機制。
    源代碼位於mm/ashmem.c


Android PMEM(Physical),PMEM用於向用戶空間提供連續的物理記憶體區域,DSP和某些設備只能工作在連續的物理記憶體上。
    源代碼位於drivers/misc/pmem.c

Android Logger,一個輕量級的日誌設備,用於抓取Android系統的各種日誌。
    源代碼位於drivers/staging/android/logger.c


Android Alarm,提供了一個定時器用於把設備從睡眠狀態喚醒,同時它也提供了一個即使在設備睡眠時也會運行的時鐘基準,
    源代碼位於drivers/rtc/alarm.c

USB Gadget驅動,一個基於標準Linux USB gadget驅動框架的設備驅動,Android的USB驅動是基於gaeget框架的,
    源代碼位於drivers/usb/gadget/


Android Ram Console,為了提供調試功能,Android允許將調試日誌信息寫入一個被稱為RAM Console的設備裡,它是一個基於RAM的Buffer。
    源代碼位於drivers/staging/android/ram_console.c。

Android timed device,提供了對設備進行定時控制功能,目前支持vibrator和LED設備。
    源代碼位於drivers/staging/android/timed_output.c(timed_gpio.c)。

Yaffs2檔案系統,Android採用Yaffs2作為MTD nand flash檔案系統,源代碼位於fs/yaffs2/目錄下。Yaffs2是一個快速穩定的應用於NAND和NOR Flash的跨平台的嵌入式設備檔案系統,同其他Flash檔案系統相比,Yaffs2使用更小的記憶體來保存他的運行狀態,因此它佔用記憶體小;Yaffs2的垃圾回收非常簡單而且快速,因此能達到更好的性能;Yaffs2在大容量的NAND Flash上性能表現尤為明顯,非常適合大容量的Flash存儲。


Android內核添加或修改的文件很多,下面的列表描述了Android Emulator內核的文件:

drivers/misc/kernel_debugger.c
drivers/misc/pmem.c
drivers/misc/qemutrace/qemu_trace_sysfs.c
drivers/misc/qemutrace/qemu_trace.c
drivers/misc/qemutrace/qemu_trace.h
drivers/misc/uid_stat.c
drivers/staging/android/lowmemorykiller.c
drivers/staging/android/logger.c
drivers/staging/android/timed_output.h
drivers/staging/android/ram_console.c
drivers/staging/android/timed_gpio.c
drivers/staging/android/logger.h
drivers/staging/android/binder.h
drivers/staging/android/binder.c
drivers/staging/android/timed_output.c
drivers/staging/android/timed_gpio.h
drivers/rtc/alarm.c
drivers/rtc/rtc-goldfish.c
drivers/net/pppolac.c
drivers/net/ppp_mppe.c
drivers/net/pppopns.c
drivers/video/goldfishfb.c
drivers/switch/switch_class.c
drivers/switch/switch_gpio.c
drivers/char/dcc_tty.c
drivers/char/goldfish_tty.c
drivers/watchdog/i6300esb.c
drivers/input/misc/gpio_event.c
drivers/input/misc/gpio_input.c
drivers/input/misc/gpio_output.c
drivers/input/misc/keychord.c
drivers/input/misc/gpio_axis.c
drivers/input/misc/gpio_matrix.c
drivers/input/keyreset.c
drivers/input/keyboard/goldfish_events.c
drivers/input/touchscreen/synaptics_i2c_rmi.c
drivers/usb/gadget/android.c
drivers/usb/gadget/f_adb.h
drivers/usb/gadget/f_mass_storage.h
drivers/usb/gadget/f_adb.c
drivers/usb/gadget/f_mass_storage.c
drivers/mmc/host/goldfish.c
drivers/power/goldfish_battery.c
drivers/leds/ledtrig-sleep.c
drivers/mtd/devices/goldfish_nand_reg.h
drivers/mtd/devices/goldfish_nand.c
kernel/power/earlysuspend.c
kernel/power/consoleearlysuspend.c
kernel/power/fbearlysuspend.c
kernel/power/wakelock.c
kernel/power/userwakelock.c
kernel/cpuset.c
kernel/cgroup_debug.c
kernel/cgroup.c
mm/ashmem.c
include/linux/ashmem.h
include/linux/switch.h
include/linux/keychord.h
include/linux/earlysuspend.h
include/linux/android_aid.h
include/linux/uid_stat.h
include/linux/if_pppolac.h
include/linux/usb/android.h
include/linux/wifi_tiwlan.h
include/linux/android_alarm.h
include/linux/keyreset.h
include/linux/synaptics_i2c_rmi.h
include/linux/android_pmem.h
include/linux/kernel_debugger.h
include/linux/gpio_event.h
include/linux/wakelock.h
include/linux/if_pppopns.h
net/ipv4/sysfs_net_ipv4.c
net/ipv4/af_inet.c
net/ipv6/af_inet6.c
net/bluetooth/af_bluetooth.c
security/commoncap.c
fs/proc/base.c

huenlil 發表在 痞客邦 PIXNET 留言(1) 人氣()

busybox及bash在android中的安裝及init.rc修改

來源: busybox及bash在android中的安裝及init.rc修改

 

Ramdisk的製作


2.6內核開始,initrd.img採用cpio壓縮,ramdisk.img也一樣,使用gunzip解壓縮,然後再使用 cpio解包。

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

來源: 如何去寫Android init.rc (Android init language)

 

如何去寫Android init.rc (Android init language)

Android init language 由四大類聲明組成:行為類(Actions),命令類(Commands),服務類(Services),選項類(Options).

  * 初始化語言以行為單位,由以空格間隔的語言符號組成。C風格的反斜槓轉義符可以用來插入空白到語言符號。雙引號也可以用來防止文本被空格分成多個語言符號。當飯斜槓在行末時,作為折行符。

  * 以#開始(前面允許有空格)的行為註釋行。

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

進階技巧:

ANDROID / HERO / MAGIC 使用技巧整理

 

下面給不看Manual、也不看畫面操作指南的人用 XD

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

Reference:

- Android Official Power Management introduction

- Android Power Management by wyl123

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

Q: 如何進行 Cold start ?

A: 參考 LocationManager | Android Developers 說明,可使用 public boolean sendExtraCommand (String provider, String command, Bundle extras),第二個參數填 "delete_aiding_data", extras 則是填要刪除的資訊,不給值或是給"all" 會刪除全部資訊。Google 目前也只有提供一個ExtraCommand ... (參考GpsLocationProvider.java)

 

Q: GPS Icon 會不定時消失?

A: 已知 Bug。已在 Donuts branch 修正。

huenlil 發表在 痞客邦 PIXNET 留言(1) 人氣()

寫一些個人對Android的心得,不過命題太大了,會慢慢補充 :P

 

先來看一段新聞稿(Google:今年將會近20隻Android手機上市),廠商開發的產品到底跟Google有哪些關係?有什麼差別?

Android平台的三種授權方案,一是依照Android開放源碼特性的開放性授權,業者可免費使用Android,但不能預載 Google應用程式;其次則是得與Google簽署出版授權協助並可預載Google應用程式的方案,但業者可限制該款手機所存取的Android Market應用程式;最後則是可將Google商標烙在手機上的Google Experience授權方案,該款手機可自由存取Google及Android Market應用程式。

從上面看得出來,現在HTC出的產品都是走第二種授權,內建GMS(Google Mobile有詳細清單,其實就絕大多數的Google 服務),但Android Market的部份並不是可自由存取的。真正的免費Android 就只能用第一種方案,也就是說山寨機真的要用免錢Android,就沒有Google map、Android Market、GMail、Youtube 這些使用者認知中一定會有的服務。除非開發廠商自行利用類似服務,否則在使用者眼中,這些沒有Market、maps的山寨機根本算不上真的 Google phone。

huenlil 發表在 痞客邦 PIXNET 留言(8) 人氣()

來源: 認識Android環境裡的兩種Service--Android大舞台

認識Android環境裡的兩種Service

 

 在Android平台裡,上層應用程式的service與底層的系統service有很大的區別,只是許多人都將它們混在一起了。例如,在Android裡著名的MediaPlayer範例,許多人都知道其結構為:

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

來源: Android ramdisk.img壓縮與解壓縮

改名解壓gzip
mv ramdisk.img ramdisk.img.gz
gzip -d ramdisk.img.gz

建一個資料夾

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()

1 2