Posts tagged: Android

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 (冷凍乳酪)的縮寫。

Reverse USB tethering

By cwhuang, 2010 年 05 月 18 日

Tethering 是一種讓手機之類的行動裝置分享上網功能的技術。PC、筆電或其它裝置,可透過 wifi、藍牙或 USB 線,連接到手機,再透過手機的 3G 或 wifi 上網。這是十分方便的一種行動上網技術。可惜的是,Android 系統目前並未內建 tethering 功能(據說,下一版的 Android 2.2 Froyo 將會內建)。所幸,可以安裝第三方軟體,如 android wifi tether 來提供 tethering 的功能。或是改刷 Cyanogenmod ROM,也內建了 USB tethering 的功能。不過,這些動作都需要先取得 root 權限才能進行(也意味著失去保固)。

不過,這篇文章要談的不是如何在 Android 上使用 tethering。網路上已經可以找到許多教學文章了。我要做的是相反的事,也就是讓手機透過 PC 或筆電上網。如果你像我一樣,僅使用 2G sim 卡(因此沒有 3G 上網),剛好又在沒有 wifi 的環境,這時 reverse tethering 便派得上用場了!

基本上 tethering 的原理很簡單,就是利用 NAT 的功能,其中一端做為 NAT router 負責轉送封包,另一端當 client 將封包送給 router 來達到上網目地。普通的 tethering 是由手機端當 NAT router,PC 端當 client。而本文介紹的 reverse tethering 剛好反過來,由 PC 端當 NAT router,手機做為 client。現代的 Linux 都已內建 NAT 功能,Android 的 kernel 也是 Linux,因此要支援 NAT 並不困難。

我測試的環境如下:Android 手機是 Nexus One,已經改刷 Cyanogenmod 5.0.6-N1。因為這個版本已內建 USB tethering 功能,方便多了。其它的 Android 只要是跑 Cyanogenmod ROM 的應該都可以用。否則的話,可能就要自己重編 kernel,打開 netfilter,並安裝 iptables 等工具程式。

PC 端我跑的是 Fedora Linux 12。基本上任何的 Linux 發行版本應該都可以,但步驟可能略有不同。用 Windows 的話理論上也可以,但我不熟,抱歉啦!

測試方法如下: Read more »

OESF Android Steps Ahead 2010/Tokyo

By cwhuang, 2010 年 04 月 23 日

OESF 在日本東京舉行的 Android Steps Ahead 研討會已順利結束。Android-x86 在 technical track 分享了我們的開發經驗和成果,獲得不少回響。還意外見到了 Android-x86 在日本的一位開發者 Kinneko,他曾貢獻自動掃瞄硬體裝置並載入驅動程式的功能給 Android-x86 。能夠親眼見到各位業界先進,以及各種基於 Android 而開發的產品,更感到 Android 的潛力無限。這是此行的最大收獲。

在此特別感謝邀請 Android-x86 與會的 OESF 台灣辦公室 Tad 先生,以及在演講會場負責日文口譯的 Mika 川口美香小姐。藉由他們的幫助,使得 Android-x86 計劃能夠在國際發聲,並使當地聽眾更了解 Android-x86。

這裡有一個短片,是由 OESF future system working group 所製作,勾畫出將來 Android 系統可能深入我們的家庭和生活。

以下是一些照片的分享: Read more »

Google 的小禮物

By cwhuang, 2010 年 03 月 03 日

一個多月前收到關於 Google Android Developer Lab 的消息。那時幾乎已經是報名的最後一天,趕緊上網填了資料寄出。過年前就收到通知,我得到參加的資格。也沒多想,直接記在行事曆當中。

今天就是這個 Developer Lab 在台北舉辦的日子。不過事情很多,加上這個會議從中午 12 點半就開始,連午飯都來不及吃。其實一開始有點不太想去。但為了有機會和 Android 開發者近距離接觸,還是決定參加。還好去了,否則可就後悔莫及。

報到時,領到一張綠色貼紙,被要求貼在胸前。我不是很喜歡在身上亂貼東西,不過還是照辦了。遇到在台北 Google 工作的朋友,他告訴我,等會將發小禮物。我問每個人都有嗎? 要是用抽獎的,我一定抽不到啦。他說是的,每個人都有。我心想 Google 給的禮物應該不會太差吧? 但了不起就是 T-恤之類的紀念品吧?

想不到,Google 的這個禮物還真不小哩! 接近中場休息時, Read more »

將 native libraries 加入 AOSP 的編譯

By cwhuang, 2010 年 02 月 15 日

上篇介紹用 Android SDK 和 NDK 來編譯含 JNI 的 Android 應用程式。但若是已有 Android (或 Android-x86)的 source tree,可能就不會再想安裝 SDK 和 NDK。因為 AOSP tree 本身就包含完整的 SDK 和 NDK。那麼是不是可以將含有 native libraries 的應用程式,加入到 AOSP 的 build system 中編譯? 這麼做還有一個更重要的理由,就是把你的應用程式和 AOSP 的源碼結合在一起,用單一步驟就可以完成所有的編譯。這樣有助於維護單一而自我包含(self-contained)的源碼。

答案當然是肯定的。經過一番嘗試後,發現只要稍微修改一下應用程式的 Android.mk 就行。具體的做法如下:

首先,將應用程式的目錄搬到 AOSP tree 的 packages/apps/ 目錄下。例如 packages/apps/hello。

再來,建立 packages/apps/hello/Android.mk,內容如下: Read more »

建立使用 JNI 的 Android 應用程式

By cwhuang, 2010 年 02 月 14 日

一般要建立 Android 的應用程式使用 Eclipse + ADT 最為方便。不過若是像我一樣慣用 command line 的人,可能會希望直接用指令完成。這可利用 Android SDKNDK 辦到。

首先,用 SDK 的 android 指令建立一個 project:

$ android create project -t android-4 -k app.hello -a HelloActivity -p apps/hello/project

其中的參數:

  • -t 指定 Android API level,android-4 代表 Android 1.6 版。
  • -k 代表 package namespace。
  • -a 代表 Activity 的名稱。
  • -p 代表 project 的放置路徑。

Read more »

Android 還是開放源碼計劃嗎?

By cwhuang, 2010 年 01 月 10 日

關注 Android 開放源碼計劃(AOSP)的朋友應該會注意到,在 Google 的嚴密掌控下,Android 已經離開放源碼社群愈來愈遠。雖然形式上 Android 的確符合開放源碼的定義。但本質上,它是不折不扣的 Google 計劃,而非一個社群的計劃。從幾件事情上可以看出這樣的傾向:

  • Android 2.0 完全沒有發展歷程(git log / history)。
  • 其實根本沒有 Android 2.0 的源碼。目前 AOSP 上的版本是介於 2.0 到 2.0.1 之間的一個 “snapshot”。更遑論即將上市的所謂 2.1 版了。
  • 絕大部分社群送上去的 patches 都被忽略。從 eclair 之後似乎僅有五個 patches 被接受而已。
  • Project roles 頁面被修改,移掉大部分讓社群參與的字眼 (剛好被人抓包,把舊的頁面 diff 呈現在此)。
  • Google 的工程師不在 android.git.kernel.org 上工作。
  • 愈來愈多衍生的開放源碼計劃(android-x86, embinux, 0xdroid, rowboat, odroid, …),代表許多社群開發者已受不了 Google 的態度。

誠心的建議,Google 應該捫心自問,當初決定開放源碼的初衷是什麼? 到底要走向開放的市集模式,擁抱社群,還是走回更封閉的教堂模式,關起門來自己搞?

如果決定擁抱社群,便應該回歸開放源碼開發模式的基本精神,「儘早釋出、儘快釋出」,讓更多人有機會檢視 Android 的最新源碼,因為「在眾人面前,所有的錯誤都是淺顯的」(Linus 定律)。同時更應重視社群的力量,儘快的 review 社群所提出的修改建議,絕不可放著幾個月都不理。這樣有心貢獻的人心早涼了! 唯有在對的方向做對的事情,才能讓開放源碼的輪子順利轉動,帶起 Android 開放社群的蓬勃進步。

明天下午有機會應邀到台灣 Google 演講,正好把這些觀點與 Google 的工程師討論討論。投影片已公開在 Google docs 上:

參考:

澄清:Androidx86 與 Android-x86.org 無關

By cwhuang, 2009 年 12 月 17 日

說實話,這個站出現得比我們的 Android-x86 計劃還早,而且先前有很長一段時間沒有更新了。不過,最近這個站又做了大幅度的改版,並加上很多取自本計劃的資料,甚至在下載區還放了我們的 iso 檔(雖然註明了出處)。這是沒關係,但他們還放了一個 Donate 的圖示,但點下去的連結,並非連到本計劃的捐款網頁。這不禁讓人懷疑,這個站的動機不單純!

在此特別澄清,這個網站 androidx86.org (以及 androidx86.com) 與 Android-x86 開放源碼計劃(Android-x86.org)沒有任何關連。

OfficeFolders theme by Themocracy