Category: Android

COSCUP 2010 演講:Android-x86

By cwhuang, 2010 年 08 月 14 日

應好友 Pofeng 邀請,明天將在中研院人文科學館舉行的 COSCUP 2010 上,介紹 Android-x86 的發展近況。歡迎蒞臨指教。

簡報已經在 Google doc 上線:

給 vm 用的 froyo-x86 iso 檔

By cwhuang, 2010 年 08 月 12 日

距離上次 Android-x86 釋出測試版本已有大半年的時間。不斷有使用者希望我們能釋出新的版本,畢竟不是每個人都會從 source code 開始編出 iso 檔來。因此在 Ethernet 功能完成後,我決定先釋出給 virtual machine (virtual box, qemu 或 vmware)用的 froyo-x86 iso 檔,讓沒辦法自行編譯的使用者,也有機會了解 Android 2.2 的魅力。剛剛已上傳完畢,可從 google codeSourceForge 下載。細節可看這裡

這個版本採用 kernel 2.6.32.9,在 virtual box 上,音效卡可選擇 ICH AC97 或 SB16 都可以。Ethernet 和滑鼠都可以使用。不過滑鼠很不順暢,是已知問題。另外如果你還不知道的話,這個版本已經可以使用 uvesafb。也就是,開機時不需要再選擇 vesa mode,用預設的第一項就可以。

比較特別的是,為測試方便,我引入一種特別的運行模式,可以用 live CD 的方式開機,但把 /data 和 /sdcard 直接儲存到 vm 的虛擬硬碟上。要使用這種模式的話,只要建立虛擬硬碟,然後進 debug 模式,用 fdisk 將硬碟切成兩個分割區。一個是 Linux ext3 分割區,另一個是 fat 分割區。例如:

Device Boot      Start         End      Blocks  Id System
/dev/sda1            1         199     1604704  83 Linux
/dev/sda2          200         520     2588544   c Win95 FAT32 (LBA)

如此,在進入 Android 時,就會自動把 /dev/sda1 掛載到 /data,並把 /dev/sda2 當做 sdcard 掛載到 /mnt/sdcard 上。由於資料是儲存到虛擬硬碟,因此有別於普通的 live CD 模式,即使重新開機也不會消失。因此我將這個模式稱為 persistent 模式。

技術上來說,可以將它視為一種介於直接安裝的硬碟模式和純 live CD 模式之間的一種模式。但是它既像硬碟模式一樣可永久保存資料,又像 live CD 模式一樣可直接使用無需事先安裝。對經常在更新 iso 檔的開發者來說,是一種很方便的測試方法。特別是可以將 vm 的硬碟直接當成 sdcard 使用,如此就不用煩惱怎麼在 vm 掛載 sdcard 上去測試了。

SourceForge Froyo-x86 上線

By cwhuang, 2010 年 08 月 01 日

讓大家久等了! SourceForge 的 froyo-x86 branch mirror 終於上傳完畢。取得方法和以前一樣:

$ repo init -u git://android-x86.git.sf.net/gitroot/android-x86/manifest.git -b froyo-x86
$ repo sync

請注意目前只有 generic_x86 和 vm 兩個 target 可以編譯,eeepc 還不行。

新的 froyo-x86 target: vm

By cwhuang, 2010 年 07 月 12 日

如前所述,新的 target vm 已經弄好,放到 git.android-x86.org 了。取得方法同前:

$ repo init -u git://git.android-x86.org/manifest.git -b froyo-x86
$ repo sync

若已經 repo init 過,不必再做,只要 repo sync 即可。

編譯的方法也跟以前一樣,可以在 buildspec.mk 指定 TARGET_PRODUCT=vm。此外還我加上了 lunch 的選單支援,以方便切換不同的 target。使用方法(在 froyo-x86 源碼樹最上層):

$ . build/envsetup.sh
$ lunch

然後選擇 4. vm-eng 即可。也可以直接打 lunch 4 或 lunch vm-eng 都可以。再來編譯

$ m -jX iso_img

編出來的 iso 檔可在 virtual box 或 qemu 上使用。用 vmware 應該也可以,不過我沒試過。目前移植的情況大略如下:

  • 使用 kernel 2.6.32.9,用 auto-detect 載入大部分的模組,不過 sb16 會強制載入。
  • 滑鼠可以使用。不過在 virtual box 上,你必須關閉滑鼠整合功能。
  • 指定音效卡為 sb16 或 ich ac97 都可以運作(感謝 Haojun Bao 提供 ich ac97 音效的解決方法)。
  • 在 virtual box 可以使用 uvesafb(其實在 eclair-x86 就可以了)。
  • 乙太網路還無法使用。

注意從 froyo-x86 起我們會仿照 AOSP 的做法,將 targets 的定義都放到 device/ 目錄,而不是以前的 vendor/ 目錄。因此 vm 的定義是在 device/vm/vm 目錄裡。

Froyo-x86 源碼已上線

By cwhuang, 2010 年 07 月 07 日

我已經將 froyo-x86 branch 的大多數修正都放到 git.android-x86.org 上,包括 manifest.xml。取得方法:

$ repo init -u git://git.android-x86.org/manifest.git -b froyo-x86
$ repo sync

目前唯一可編譯的 target 是 generic_x86,而 eeepc 還有問題,使用 i915 framebuffer 無法開機。我也正在弄一個 vm 的 target,方便產生給 virtual machine 用的 iso 檔。

使用的 kernel 是 Google Android 的 2.6.32.9 版本。目前滑鼠可以使用,但速度很慢。而乙太網路和無線網路都還無法使用。

另外要注意的是由於 bionic 包含了 Intel 提供的 atom 最佳化程式碼,因此編出來的 image 僅能在 atom 的機器上使用。稍後我會嘗試修正此問題。

SourfeForge 的 mirror 尚未更新。

Froyo-x86 的第一個畫面

By cwhuang, 2010 年 06 月 28 日

經過兩天的努力,終於解決 Android 2.2 在 x86 上的所有編譯錯誤,編出了 iso 檔。在 virtual box 上開機,令人驚喜的,Froyo 的畫面出來了,看到小 Android 提示機器人跟我打招呼。

雖然大部分的功能(wifi、ethernet、mouse、…)都還不能用。不過至少是開得進去,算是踏出成功的第一步了。整理好 source code 後會儘快放到 git.android-x86.org 上。

The first screenshot of Android-x86 2.2 (Froyo-x86)

Froyo 源碼釋出

By cwhuang, 2010 年 06 月 24 日

Android 開發者 Deva 今天下午在 android-platform 討論區上,宣佈 Android 2.2 Froyo 的源碼已經釋出的好消息。

各位開發者,開始動工吧!

修正 Eclair 的藍牙音效支援

By cwhuang, 2010 年 06 月 21 日

先前在開發 eclair-x86 時,曾注意到藍牙支援的一個問題,就是藍牙耳機的聲音是出不來的。藍牙的連線正常,也沒有任何錯誤訊息,但聲音還是從原本的喇叭出來,而沒有送至藍牙耳機。

原本以為是 x86 的問題。但最近在做 arm 版本的移植,也發現這個現象。因此仔細研究了一下,特別和 Nexus One 的 logcat 訊息比對。發覺問題出在 hardware/alsa_sound。因為它沒有 enable WITH_A2DP 這個 flag。

review.source.android.com 提交了這個 patch。今天下午收到通知,已經被 approved 並加到 master branch 了。

值得一提的是,只有用 alsa 介面的 Android 系統才會受此 bug 的影響。很多 Android 手機都並非透過 alsa 介面來控制音效,因此沒這個問題。也難怪這個 bug 一直沒被注意?

Android 2.2 Froyo 釋出?

By cwhuang, 2010 年 05 月 23 日

Android 的官網上,已經貼出 Android 2.2 版(代號 Froyo)釋出的消息。新的 Android SDK 也可以下載。看起來 Android 2.2 版有著許多令人欣喜的改進:

  • 新的 Dalvik JIT compiler,較 2.1 版的效能高出 2 至 5 倍。這是遲來的更新,其實從 2.0 版開始 AOSP 的 Dalvik 就有 JIT compiler,只是一直未打開。這次終於預設開啟,想必已經成熟穩定。
  • 瀏覽器加入 V8 Javascript 引擎,使得 Javascript 的效能比 2.1 版高出 2 至 3 倍。
  • Android Market 的改進,加入錯誤回報機制。開發者可以從用戶那邊,取得程式當掉或卡住的回報。另外可以設定自動更新,以後就不用一個一個的下載程式更新了。
  • 內建無線網路 / USB 共享功能(Tethering & Protable Hotspot)。
  • 支援 Adobe flash,可以從 Android Market 下載。
  • 可將應用程式安裝至 SD 卡。

當然還有更多細部的更新。但光是這幾項,就足夠讓人興奮,非升級不可! 不過,對我們系統開發者來說,最關心的,還是何時可以拿到 2.2 版的 source code?

還有,到底什麼是 Froyo 呢? 字典裡還查不到這個字哩。稍微 Google 一下,似乎是 Frozen Yogurt (冷凍乳酪)的縮寫。

如何在 Android-x86 使用 TTS?

By cwhuang, 2010 年 05 月 19 日

今天在 Android-x86 論壇上,看到有一位視障朋友說他在用 Android-x86 1.6-r2,讓我很驚訝也很高興。由於看不見,他很需要文字轉語音(Text To Speech, TTS)這樣的功能。

TTS 是 Android 內建的功能之一。不過我個人對這個領域並無研究,也從未測試過 Android 的 TTS 功能。不過我同辦公室的同事剛好就有做 TTS 和 ASR 的,他也測過我們 Android-x86 上的 TTS。向他詢問確認,TTS 的確可以在 Android-x86 上使用。只不過要先手動安裝 voice data。

首先,Android-x86 上必須掛載了 sdcard (在 1.6-r2 上,直接插入 sdcard 或 USB 碟就會自動掛載)。接著,到 eyes-free 這個計劃的下載頁面,點選並安裝 com.svox.langpack.installer_1.0.1.apk 這個 apk。它會安裝 Pico TTS data files 到 sdcard 上。只要安裝 apk 就好,它會自動下載 voice data 到 sdcard 上。不用開啟它,若開啟的話它會當掉。不過這不要緊,因為這個 apk 並沒有 activity。其實在 Android 手機上,它會自動從 Market 下載並安裝這個 apk。只不過 Android-x86 無法使用 Market,因此必須手動安裝。

安裝完成後,到 Settings -> Speech synthesis,可以看到 Listen to an example 項目已經可以使用(未安裝 voice data 前它是 disabled 的)。點下去就可以聽見語音合成的範例了。不過只有英文而已。此外,安裝完 voice data 後,也可以試試 Android SDK 的 ApiDemo 裡的 TextToSpeech 範例

OfficeFolders theme by Themocracy