顯示具有 Android 標籤的文章。 顯示所有文章
顯示具有 Android 標籤的文章。 顯示所有文章

2011年12月6日 星期二

換一個自己喜歡的 Android ROM 吧!

iPhone 與 Android 的手機愛用族群不同,對兩種 App 都開發的我來說我倒是比較喜歡 iPhone 的細緻與整合性,但是我也愛 Android 的高度可掌握性。


拜 open source 的強大社群,Android 除了官方的 Rom 之外可選擇的非常多,也不乏一些效能與功能都很強大的 Rom。只是要享受這些就必須要學一下如何刷,這幾篇我打算詳解一下刷 Rom,也希望大家都可以享受到 open source 的好處。


硬體與 Rom 的規格
  • Phone : HTC Bravo (GSM) = HTC Desire
  • Rom : Cyanogenmod 7.1 (你可以選擇你喜歡的 Rom)
  • A2SD+ : 能夠將 SD card 畫出一塊磁區提供給手機使用,突破總是空間不夠的困境
安裝所需要檔案
  1. 最新的 Cyanogenmod Rom [Download]
  2. A2SDKillerV11_GB.zip, Data2SDInstallerv1.3_GB.zip, 置A2SD+ 工具 [Download]
  3. Google Apps [Download]
  4. MiniTool Partition Wizard Home Edition, 分割 Ext 磁區工具 [Download]
  5. AlphaRev, S-OFF工具, 這次不作磁區修改因此不需使用 [Download]
安裝前說明
A2SD+ 是 XDA 社群未解決總是發現 SD card 空間很多但是不斷出現空間不足的問題,使用的話需要再 SD card 上分割出 Ext2, Ext3 or Ex4 的磁區以供 Android 使用,這裡我們安裝步驟裡頭會使用 MiniTool Partition Wizard 來作。
Google  Apps 是 Google Android 套件,沒有他的話連 Market 都不能使用。Cyanogenmod 沒有將 Google Apps 放進 Android Rom 裡頭是因為版權的問題,因此在安裝完 Cyanogenmod 後還需要安裝 Google Apps。

安裝步驟
  1. 分割SD card,
    先預先切割一個 Ex4 磁區提供給 Android 使用來放置 App 與 Data,再安裝完後可以到[設定] > [儲存空間] 檢查 [內部儲存空間] 大小就可以知道是否成功。這裡我們切割 1.5G 給 Android 使用。 NOTE: SD Card 的速度會影響執行速度。
  2. 安裝 Rom Manager
    這是一個可以刷 Rom 的好用工具,可以簡單的安裝 Recovery,快速的 Root 系統與下載與安裝一些比較 Common 的 Rom
  3. 安裝 ClockworkMod Recovery
    這個工具用來刷 Rom , 安裝 Google Apps package 與製作 A2SD+
  4. 執行權限修正
    取得系統 Root 權限
  5. 將所有安裝所需檔案放到 SD  card 中
  6. 開始安裝 Rom 步驟, 先關機然後按住手機左側的條小音量鍵 + 左上方Power進行開機
  7. 使用音量按鍵調整光棒去選取 Recovery,然後點選 Power 進入 Recovery 模式
  8. 使用音量按鍵調整光棒選取 mounts and storage 然後分別執行 format /cache, format  /data, format /system
  9. 點選 back 然後點選 install zip from sdcard 安裝 Rom
  10. 選擇 install zip from sdcard 安裝 A2SDKillerV11_GB.zip
  11. 點選 reboot system now 進行重開機
  12. 進行手機設定,設定完後重開機進入 Recovery 模式
  13. 選擇 install zip from sdcard 安裝 Data2SDInstallerv1.3_GB.zip
  14. 點選 reboot system now 進行重開機
  15. 開機後進入設定 >  可以看到內部記憶體空間已經變大
  16. 重開機進入 Recovery 模式
  17. 點選 install zip from sdcard 安裝 Google Apps
  18. 點選 reboot system now
  19. 完成刷機
驗證一下
Add caption



這些步驟通用於所有的 Rom,不過有些 Rom 基本上不需要安裝 A2SD+ 的Script,只要把 SD card 切割出一塊 Ext 2, 3 or 4 的磁區就會自動的進行 A2SD+ 的安裝部屬。所以再安裝不同的 Rom 時還是看一下作者的詳細說明。

補充
若是使用 A2SD+ 或是 Data++ 的話 SD card 的效能很重要,因為東西放在 SD card 跟放在內建記憶體的速度有很大的差異。如果速度太慢的話會導致再使用 App 的時候嚴重的 Delay。

2011年12月5日 星期一

Android S-OFF (HTC Desire)

alpharev.iso幾乎大部分的程式開發人員都很喜歡可以控制在自己手上的手機,我也是!
Android於是就成為我的手機,當然喜歡可以控制就難免會刷來刷去的,試驗一下這個Rom試驗一下那個Rom。


iPhone的一體成型讓使用者在安裝App的時候完全不需要care記憶體的問題,16G就是16G的作法非常的方便,但是在Android上頭就區分了兩塊主要的記儲存空間,一是Rom一是SD Card。
Android將所有作業系統所需要的檔案全部放在Rom上,再Froyo 2.2之前所有的App只能安裝再Rom上頭,所以常常裝沒幾個App就沒空間了。


幸好! Google 也算是很快的看到了這個嚴重的問題(有時候我覺得工程師思維真的是有很多缺點的),因此在2.3之後使用者可以選擇將App安裝到SD上去了。


不過問題依然沒有解決,App to SD的模式只是簡單的將程式搬移到SD上,而App的資料依然在Rom上頭,所以當使用了太多的App之後還是會出現空間不足而SD還剩下10幾G的情形發生。


那有沒有辦法讓Android跟iPhone一樣可以讓使用者不需要老是去被空間不足給干擾嗎! 答案是可以。客製化的Rom提供幾個更好的解決方案: A2SD+, Data++。


  • A2SD+ 的技術會將 /data/app與/data/dalvik-cache 這兩個路徑儲存到SD卡上,這兩個路徑分別是軟體安裝路徑與程式碼優化的目錄
  • Data++ 的技術則選擇將dalvik-cache保留在Rom上頭以保持效率
不過如果要使用A2SD+ 或是Data++的話就必須要s-off (這裡指的是HTC的手機)。而s-ff的步驟很簡單,幾個步驟:
  1. 到(http://alpharev.nl/)下載最新的alpharev.iso
  2. 將iso燒錄成cd
  3. 使用alpharev.iso開機
  4. 依照著螢幕步驟作就可以搞定了
注意事項
執行過程中需要注意閱讀題是訊息,步驟三的時候會提醒切勿隨意關機。請遵守否則變磚就不好了

2011年11月30日 星期三

UML - Extension point in Usecase diagram 說明

甚麼是 Extension point
定義一個使用者案例的例外事件,可以將看它看成一到多個 exception path。以「使用者登入」這個使用這案例來舉例的話,這個使用者案例會有下面幾個extension point:
  1. Invalid Username
  2. Invalid Password
  3. Account has been blocked
而這幾個extension point需要被對應到相對處理的使用者案例
  1. handle invalid username
  2. handle invalid password
  3. handle account block
下面是完整的使用者案例圖,說明了使用者使用「login」這個使用者案例,而這個案例會有三個extension points,而這三個extension points分別有各自的使用者案例處理。


2011年11月24日 星期四

Android aapt 指令應用

Android asset packaging tool 是 aapt 的全名,就像名字一樣這個工具是用來進行 apk (Android package )檔案的管理,最常用到的是當程式開發完成後就會使用它來將所有的 application asset 打包成最後能夠安裝的程式。

除了這個功能之外也可使用來進行 apk 檔案的管理,例如:檔案刪除, 新增, 更新, 取出。
這個工具在進行 reengineering 的時候更是不可或缺的工具,不過現在也有很多開發好的 open source 工具可以使用,像是 apktool。

指令位置
{android-sdk location}/tools/aapt
簡單的使用指令說明

查看使用方式很簡單,只要不帶參數執行便會顯示詳細的使用說明
aapt 

下面來說一下怎樣使用這個程式來進行 apk 的管理,下面只介紹基本的操作其餘參數請自行參照說明,文件執行環境:
  • MAC OSX 10.7.2
  • Android Asset Packaging Tool, v0.2
打包安裝檔

aapt p -v -z -x -u -M {AndroidManifest.xml 檔案位置} -A {asset 目錄位置} -S {res 目錄位置} -F {產生的 apk 儲存路徑包含路徑}

查看檔案內容清單

aapt l -v {apk 檔案完整路徑}
可搭配 grep 快速地查找自己所要的結果


刪除檔案

aapt r -v {apk 檔案完整路徑} {刪除的檔案所在 apk 內的完整路徑,若多檔則使用逗號分隔}

新增檔案
aapt a -v {apk 檔案完整路徑} {所要新增的檔案,若多檔則使用逗號分隔}

更新檔案
aapt r -f -v {apk 檔案完整路徑} {所要新增的檔案,若多檔則使用逗號分隔}


相關聯結
Android developer guide - Building and Running (http://developer.android.com/guide/developing/building/index.html#detailed-build)
Android-apktool (http://code.google.com/p/android-apktool/)


2011年11月15日 星期二

Android APK 逆向工程

前言


最近接到了一個神奇的Android App開發專案,也就是沒有原始碼的使用者介面修改專案。
這也看出了現在台灣Mobile專案開發的火熱程度{企業竟然接受了不包含SOURCE CODE}的開發條件,一點點的心得感想。


甚麼是APK
APK (全名Android Package)是利用ZIP的壓縮技術將所有軟體執行所需要的檔案打包成一個安裝包裹,如果解開的話會看到這幾個主要的部分:
    1. XML File:Android 的View與Global軟體設定檔
    2. Classes.dex:編譯過的原始碼,若使用apktools作解壓縮的話產生的所有的原始碼會被解開成smali,smali檔案是dalvik的assemble檔案。
逆向工程的開始
我們透過幾個簡單的方式記型逆向工程
  1. 使用ZIP解壓縮APK檔案,以取出classes.dex
  2. 使用APKTOOL解壓縮APK取出XML File
  3. 使用JD-GUI反解譯class assemble
  4. 建立新的Android Project將XML File與classes放進新的專案
  5. 完成逆向

Content Reference