2013-02-03

Titanium sdk 如何利用 andriodvm 來加速測試開發

最近利用 Titanium studio 來開發 android app ,發現 android 模擬器真是非常的慢,上網找了一下資料發現 AndroidVM 這個好物,它利用 VirtualBox 來執行,整個速度真是快的不得了。

安裝檔案:

  1. VirtualBox
  2. AndroidVM
    vbox86p : 手機版, 預設解析度 480×800
    vbox86t : Tablet 版,預設解析度 1024×600
    vbox86tp : Tablet 版,但有電話的功能,預設解析度 1024×600
    gapps : 代表包含 Google 相關服務 (有 Google Play)
    houdini: 代表包含 Arm emulation (AndroidVM 是跑在 x86 上,所以反過來需要去模擬 Arm)
安裝步驟可參考:Android Development with AndroVM

那在 Titanium Studio 中要如何直接部署它並且在上面 Debug 呢?
首先,連結 androidVM

要修改 Titanium SDK 的 source code:
~/Library/Application Support/Titanium/mobilesdk/osx/2.1.4.GA/android/builder.py
def run_adb(self, *args):
command = [self.sdk.get_adb()]
#command.extend(self.device_args)
command.extend(args)
return run.run(command)
view raw builder.py hosted with ❤ by GitHub
將 run_adb(self, *args) 的第三行 command.extend(self.device_args) 註解掉,即可利用 Titanium Studio 的 Android Device 功能直接佈署到 device 中進行測試及除錯了。
如果要查看 AndroidVM 中 Titanium 的 log,可以在 Console 環境下執行:
adb logcat | grep -G '\(TiAPI\)\|\(TiApp\)'

2013-01-04

利用 Groovy + jsoup 來擷取網頁內容

今天一位朋有希望我幫它把某人在 yahoo 拍賣上的物品清單抓下來,剛好讓我試試利用 Groovy 及 jsoup 來處理:

@Grab('org.jsoup:jsoup:1.7.1')
def url = "http://tw.user.bid.yahoo.com/tw/show/rating";
def emptyList = ["?userID=Y6259654674&rate=seller&pg=1"];
def result = [];
for (int i = 0; i < emptyList.size(); i++) {
def param = emptyList.get(i);
def doc = org.jsoup.Jsoup.connect(url + param).get()
println param;
// 擷取名稱
doc.select(".aidpname a").each {
node->
result.add(node.text());
}
// 取得分頁資料
doc.select(".pagination a").each {
node->
if(!emptyList.contains(node.attr('href'))){
emptyList.add(node.attr('href'));
}
}
}
// 列印
result.sort().unique().each {
name->
println name;
}
參考:
http://blog.lyhdev.com/2012/12/groovy-jsoup-java-html-parser.html