新聞中心
今天,軟件開(kāi)發(fā)中的大部分有趣工作都出現(xiàn)在兩個(gè)極端上:巨型云服務(wù)器和微型移動(dòng)設(shè)備。這些領(lǐng)域解決完全不同的問(wèn)題,相應(yīng)地,也就擁有不同的工具支 持。服務(wù)器開(kāi)發(fā)往往使用腳本語(yǔ)言將不同的組件捆綁在一起并完成復(fù)雜的自動(dòng)化任務(wù),而移動(dòng)開(kāi)發(fā)主要關(guān)注某個(gè)特殊設(shè)備和用戶(hù)的特定功能和需求。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的河曲網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
但是,這兩個(gè)極端共享一種常用語(yǔ)言:Java。無(wú)論 Android 還是 Spring 框架,當(dāng)今許多最流行的技術(shù)都采用一種全世界廣泛理解和支持的語(yǔ)言。這種常用語(yǔ)言可能會(huì)導(dǎo)致一些您原以為存在天壤之別的領(lǐng)域之間出現(xiàn)令人驚訝的交集。Java 編程打開(kāi)了許多跨平臺(tái)選項(xiàng)的大門(mén),比如將服務(wù)器代碼輕松移植到 Android 設(shè)備上,或從現(xiàn)有組件綁定原生平臺(tái)功能。
本文將探索 Ruboto 項(xiàng)目,該項(xiàng)目致力于在腳本語(yǔ)言和 Android 之間搭建一座橋梁。您將了解到 Ruby 和 Android 相關(guān)信息,它們?nèi)绾卧?Dalvik 虛擬機(jī)中協(xié)同工作,如何構(gòu)建和部署您的腳本,以及這種技術(shù)提高程序員生產(chǎn)力和應(yīng)用程序靈活性的潛力。
Ruby 背景知識(shí)
許多腳本語(yǔ)言都想獲得程序員的青睞,但 Ruby 目前處于有利位置。最著名的是,它支持 Rails web 框架,但很多開(kāi)發(fā)人員還喜歡 Ruby 的簡(jiǎn)潔性和優(yōu)雅。作為一種擁有 duck typing 和元編程(metaprogramming)等現(xiàn)代功能的面向?qū)ο竽_本語(yǔ)言,Ruby 不僅很強(qiáng)大,足以支持各種復(fù)雜架構(gòu);而且還很簡(jiǎn)單,能執(zhí)行各種特殊任務(wù)。
Ruby 有幾種衍生版本,包括流行的 JRuby。JRuby 是一個(gè)功能齊備的 Ruby 解釋器,用 Java 語(yǔ)言編寫(xiě),可以在 Java Virtual Machine (JVM) 中運(yùn)行。與官方 Ruby 不同,JRuby 支持從 Java 代碼中調(diào)用 Ruby 腳本和從 Ruby 腳本中調(diào)用 Java API。
Android 背景知識(shí)
Android 由 Open Handset Alliance 開(kāi)發(fā),但經(jīng)常被視為一個(gè) Google 項(xiàng)目。今天,Android 幾乎驅(qū)動(dòng)所有新智能手機(jī)的四分之一,它的市場(chǎng)份額持續(xù)增長(zhǎng)。
在內(nèi)部,Android 在一個(gè)經(jīng)過(guò)修改的 Linux 內(nèi)核上運(yùn)行。大多數(shù)應(yīng)用程序都在 Dalvik 虛擬機(jī)上運(yùn)行,這個(gè)虛擬機(jī)完全由 Google 設(shè)計(jì)開(kāi)發(fā),旨在優(yōu)化移動(dòng)設(shè)備上的性能。要了解更多 Dalvik 信息。
許多新 Android 開(kāi)發(fā)人員忽略的一點(diǎn)是他們編寫(xiě)的 Java 源代碼并不作為 Java 字節(jié)碼運(yùn)行。相反,Android 工具包將 Java 字節(jié)碼轉(zhuǎn)換為 Dalvik 字節(jié)碼。這些經(jīng)過(guò)轉(zhuǎn)換的文件(擴(kuò)展名為 .dex)被打包到部署到設(shè)備上的應(yīng)用程序中。等到設(shè)備運(yùn)行您的程序時(shí),將不會(huì)留下任何 Java 字節(jié)碼。
Android + Ruby = Ruboto
JRuby 團(tuán)隊(duì)成員 Charles Nutter 有一天突然意識(shí)到:既然 Android 工具包能將編譯后的 Java 代碼轉(zhuǎn)換為 Dalvik 文件,而且由于 JRuby 在編譯后的 Java 字節(jié)碼中有一個(gè) Ruby 解釋器,那么應(yīng)該能夠在 Android 上運(yùn)行 Ruby。在極短的時(shí)間內(nèi),他執(zhí)行了這個(gè)任務(wù),Ruboto 隨之誕生了。 在其他幾位開(kāi)發(fā)人員的共同努力下,Ruboto 成為了一個(gè)活躍的項(xiàng)目,Android 和 Ruby 開(kāi)發(fā)人員對(duì)該項(xiàng)目的興趣與日俱增。
今天,Ruboto 具有兩種版本:ruboto-irb 和 ruboto-core。ruboto-irb 是在 Android 上運(yùn)行的一個(gè)交互式 Ruby shell。這個(gè)項(xiàng)目允許運(yùn)行任何能訪(fǎng)問(wèn) Android API 的 Ruby 腳本。這個(gè)工具對(duì)于想在他們的設(shè)備上運(yùn)行測(cè)試或執(zhí)行任務(wù)的開(kāi)發(fā)人員而言非常有用,但可能不適合編寫(xiě)今后用于分發(fā)的應(yīng)用程序。
相比之下,ruboto-core 提供一個(gè)允許創(chuàng)建 Ruboto 項(xiàng)目的框架。使用 ruboto-core,可以向您的項(xiàng)目添加強(qiáng)大靈活的腳本支持,同時(shí)保留對(duì) Android API 的訪(fǎng)問(wèn)能力。圖 1 展示 ruboto-core 構(gòu)建過(guò)程:自動(dòng)生成的 Java 源文件和定制編寫(xiě)的 Ruby 腳本打包到一個(gè)將在設(shè)備上運(yùn)行的 Android APK 中。
圖 1. 構(gòu)造一個(gè) Ruboto 應(yīng)用程序
本文余下部分主要關(guān)注創(chuàng)建一個(gè)基于 Ruboto 的自定義項(xiàng)目。Ruboto 還是一個(gè)早期軟件,在本文撰寫(xiě)之時(shí),它的版本編號(hào)是 0.0.2。該項(xiàng)目發(fā)展很快,等到您閱讀本文之時(shí),它可能已經(jīng)發(fā)生了輕微的變化。
編寫(xiě) SMS
將 Ruby 和 Android 結(jié)合起來(lái),就能創(chuàng)建能訪(fǎng)問(wèn) Android 的強(qiáng)大功能的簡(jiǎn)單腳本。我們將編寫(xiě)一個(gè) Ruboto 腳本,允許用戶(hù)從一家快遞服務(wù)公司預(yù)訂海鮮。這個(gè)簡(jiǎn)單的應(yīng)用程序?qū)⒗妹總€(gè)平臺(tái)的優(yōu)點(diǎn)。在 Android 端,您擁有一種簡(jiǎn)單的方法來(lái)創(chuàng)建一個(gè)包含您的訂單的 SMS 消息,應(yīng)用程序甚至無(wú)需請(qǐng)求服務(wù)器就可以下訂單。在 Ruby 端,您將重用一個(gè)現(xiàn)有的語(yǔ)言處理庫(kù),該庫(kù)將您的訂單規(guī)范化為一種可閱讀格式。
開(kāi)始
要構(gòu)建 Ruby 腳本并將其部署到 Android 上,需要幾個(gè)組件。您可能已經(jīng)安裝了部分組件,如果是這樣,您可以繼續(xù)使用它們。
由于 Android 和 Ruby 是多平臺(tái)的,因此可以在 Linux、Mac OS X 或 Windows 上運(yùn)行 Ruboto。本文完全使用命令行。
如果您在 Windows 上使用 cygwin,則可能會(huì)在運(yùn)行某些 JRuby 命令時(shí)遇到問(wèn)題。為安全起見(jiàn),如果您在運(yùn)行 Windows,請(qǐng)務(wù)必嚴(yán)格遵守標(biāo)準(zhǔn) Windows CMD shell。
Java
您的開(kāi)發(fā)機(jī)器上需要一個(gè) Java Development Kit (JDK)。要檢查該工具包是否已安裝,請(qǐng)輸入以下命令:
- $ javac -version
如果此命令發(fā)現(xiàn)一個(gè) JDK 版本,那么可以繼續(xù)使用。否則,請(qǐng)參見(jiàn) 參考資料 中的鏈接安裝最新版 JDK。安裝完成后,將 JDK 的 bin 文件夾添加到您的 PATH 并重復(fù)上述命令。
Ant
Android 附帶了自己的 Ant 版本,但 Ruboto 還需要從它自己的腳本訪(fǎng)問(wèn) Ant。如果您沒(méi)有安裝獨(dú)立版 Ant。同樣,將它的 bin 文件夾添加到您的 PATH。確保能夠運(yùn)行 Ant 命令。
Android
訪(fǎng)問(wèn) Android Developer Site,安裝適用于您的操作系統(tǒng)的 Android SDK(參見(jiàn) 參考資料)。安裝完成后,運(yùn)行 Android 的 tools 文件夾中的 android 命令。這將啟動(dòng) SDK 管理器,如圖 2 所示。您可能想安裝以下包,它們列示在 Available packages 下方。
SDK Platform Android 2.2, API 8
Android SDK Tools(修訂版 8)
Android SDK Platform-tools(修訂版 1)
圖 2. Android SDK and AVD Manager
打開(kāi) Android SDK and AVD Manager 的 Virtual devices 部分,創(chuàng)建一個(gè)用于開(kāi)發(fā)的 Android 映像。如圖 3 所示,創(chuàng)建一個(gè)針對(duì) Android 2.2 - API Level 8 的虛擬設(shè)備 Froyo。如果愿意,也可以創(chuàng)建一個(gè)虛擬 SD Card。
圖 3. 創(chuàng)建一個(gè)模擬器
Ruboto 將在您的設(shè)備上運(yùn)行,但是,如果您擁有對(duì)任何文件夾的寫(xiě)權(quán)限,那么開(kāi)發(fā)工作將會(huì)輕松得多,這就需要使用模擬器或 root 設(shè)備。本文余下部分將討論如何使用模擬器。這個(gè)項(xiàng)目完成后,它在運(yùn)行軟件版本 2.2 或更高版本的 Android 設(shè)備上的效果一樣好。
將 Android 的 platform-tools 和 tools 目錄添加到您的 PATH?,F(xiàn)在,您應(yīng)該能在命令提示中運(yùn)行清單 1 中的命令。
清單 1. 從您的命令提示運(yùn)行命令
- $ aapt version
- $ adb --version
JRuby
JRuby 提供一個(gè)非常簡(jiǎn)單的安裝方法:只需訪(fǎng)問(wèn) http://jruby.org/getting-started 并遵循安裝說(shuō)明即可。通過(guò)運(yùn)行以下命令驗(yàn)證安裝是否成功:
- $ jruby -v
由于 Ruboto 被托管在一個(gè)安全服務(wù)器上,因此需要安裝 jruby-openssl gem 以下載它。為此,執(zhí)行以下命令:
- $ gem install jruby-openssl
您可能還想安裝 rake,這是 make 或 ant 的 Ruby 對(duì)等物。輸入以下命令:
- $ gem install rake
最后,是時(shí)候安裝 Ruboto 本身了。Ruboto 被打包為一個(gè) gem,因此安裝很容易。輸入以下命令:
- $ gem install ruboto-core
創(chuàng)建 Ruboto 項(xiàng)目
Ruboto 將為您從頭創(chuàng)建一個(gè) Android 項(xiàng)目,這將確保您的清單文件(manifest)正確設(shè)置,腳本被放置到正確的集合中,且您能訪(fǎng)問(wèn)必要的庫(kù)。您應(yīng)該采用這種方法,而不是試圖自己創(chuàng)建或修改一個(gè)現(xiàn)有 Android 項(xiàng)目。
要?jiǎng)?chuàng)建項(xiàng)目,切換到 project 文件夾,輸入以下命令:
- $ ruboto gen app
- --package us.cirion.ruboto.demo
- --path fishmonger
- --name Fishmonger
- --target android-8
- --activity Fishmonger
這條命令將執(zhí)行以下操作:
gen app 告知 Ruboto 從頭開(kāi)始創(chuàng)建一個(gè)新 Android 項(xiàng)目。
--package 提供唯一的 Android 包名。
--path 告知 Ruboto 將項(xiàng)目存儲(chǔ)在哪里;這必須是一個(gè)新文件夾名。
--name 定義用戶(hù)可見(jiàn)的應(yīng)用程序名;這不需要是唯一的。
--target 指定針對(duì)哪個(gè) Android 版本編譯項(xiàng)目。對(duì)于本文,您必須使用 android-8。一個(gè)可選參數(shù) --min_sdk 聲明您的應(yīng)用程序可以在較早的 Android 版本上運(yùn)行,這里省略此參數(shù)。
--activity 是一個(gè)可選參數(shù),它告知 Ruboto 生成一個(gè)新的 Android Activity 并初始化它。
您可以探索 fishmonger 目錄的內(nèi)容。Ruboto 已經(jīng)自動(dòng)生成了構(gòu)建和運(yùn)行一個(gè)基本 Activity 所需的所有 Android 文件。由于此應(yīng)用程序?qū)l(fā)送 SMS 消息,您需要在 AndroidManifest.xml 文件中進(jìn)行一個(gè)更改。在該文件中,將下面這個(gè)標(biāo)記插入為 元素的第一個(gè)子元素:
如果您省略這個(gè)權(quán)限,您仍然能夠構(gòu)建并加載您的腳本,當(dāng)您的應(yīng)用程序試圖發(fā)送一條 SMS 消息時(shí),您將遇到一個(gè)運(yùn)行時(shí)錯(cuò)誤。
運(yùn)行默認(rèn)項(xiàng)目
Ruboto 以開(kāi)箱即用的方式生成了一個(gè) Activity 和腳本,它們將在設(shè)備或模擬器上安裝和運(yùn)行。如果您的模擬器還沒(méi)有運(yùn)行,可以使用以下命令啟動(dòng)它:
- $ emulator -avd Froyo
等待模擬器啟動(dòng)到主屏幕。要確保所有 Ruboto 文件正確構(gòu)建并部署,cd 到 fishmonger 目錄并運(yùn)行以下命令:
- $ rake install
如果遇到錯(cuò)誤,嘗試再次運(yùn)行此命令;有時(shí)連接在構(gòu)建過(guò)程中會(huì)超時(shí)。最初構(gòu)建需要一些時(shí)間,但后續(xù)更新速度就快得多。安裝完成后,在您的模擬器中查找標(biāo)簽為 Fishmonger 的圖標(biāo)。啟動(dòng)它并等待一會(huì)兒。在本文撰寫(xiě)之時(shí),Ruboto 引擎加載需要一點(diǎn)時(shí)間。最終,您將看到與圖 4 類(lèi)似的屏幕。
圖 4. 模板 Ruboto 活動(dòng)
定制項(xiàng)目
現(xiàn)在我們?cè)O(shè)置 Fishmonger 應(yīng)用程序。首先,您將添加自然語(yǔ)言支持。Ruby 擁有一個(gè)名為 linguistics 的優(yōu)秀 gem,提供許多英語(yǔ)語(yǔ)言功能。在本文撰寫(xiě)之時(shí),Ruboto 還不能處理 linguistics 庫(kù)的嵌套目錄結(jié)構(gòu),因此,請(qǐng)您下載本文的 linguistics zip 文件,將其內(nèi)容解壓到 fishmonger\assets\scripts 中(參見(jiàn) 下載 部分的鏈接)。這是一個(gè)庫(kù)存 linguistics gem,被修改來(lái)扁平化目錄結(jié)構(gòu)。將來(lái),您應(yīng)該能夠只綁定這個(gè) gem 和您的 Ruboto 腳本。
編寫(xiě)腳本
現(xiàn)在您準(zhǔn)備好處理項(xiàng)目核心部分了。Ruboto 框架負(fù)責(zé)處理所有 Java 代碼和 Android 基礎(chǔ)架構(gòu),因此,您的所有工作都可以在 fishmonger.rb 中完成。清除該文件的默認(rèn)內(nèi)容。首先添加清單 2 中的文本。
清單 2. 腳本依賴(lài)項(xiàng)
- require 'ruboto.rb'
- require 'linguistics'
- include Linguistics::EN
- import "android.telephony.SmsManager"
- ruboto_import_widgets :Button, :EditText, :LinearLayout, \
- :RadioGroup, :RadioButton, :TextView
前兩行加載 ruboto 和 linguisitics 庫(kù)。include 命令將使英語(yǔ)語(yǔ)法在您的模塊中可用。
第一個(gè)導(dǎo)入對(duì)于 JRuby 用戶(hù)比較眼熟:您正在添加對(duì)另一個(gè)庫(kù)的支持。注意,在本例中,您實(shí)際上正在使用一個(gè) Android Dalvik 庫(kù),而不是標(biāo)準(zhǔn) Java 庫(kù)的一部分。Ruboto 將在運(yùn)行時(shí)使用反射(reflection)來(lái)加載這個(gè)類(lèi)并使其對(duì)您可用。
ruboto_import_widgets 的功能與 import 相似。在本例中,您正在添加一些 Android 特有 UI 小部件。這些小部件通常用于 Android 活動(dòng)中,Ruboto 添加一些方便的方法,便于您輕松配置 UI。
下面,定義腳本的 handle_create 方法,如清單 3 所示。
清單 3. 配置屏幕
- $activity.handle_create do |bundle|
- setTitle 'Freddy\'s Fresh Fish'
- setup_content do
- linear_layout :orientation => LinearLayout::VERTICAL do
- text_view :text => "What would you like to order?"
- @group = radio_group do
- radio_button :text => "Tuna", :id => 0
- radio_button :text => "Trout", :id=> 1
- radio_button :text => "Salmon", :id => 2
- radio_button :text => "Crab", :id => 3
- radio_button :text => "Lobster", :id => 4
- end
- @quantity = edit_text :hint => "Quantity"
- button :text => "Place Order"
- end
- end
handle_create 在用戶(hù)啟動(dòng)應(yīng)用程序時(shí)調(diào)用。在 Android 中,這是您處理必要設(shè)置的地方。標(biāo)準(zhǔn) Android 應(yīng)用程序通常使用 XML 定義布局,但在 Ruboto 中,需要通過(guò)腳本定義布局。
Ruboto 的功能在您的腳本和 Android 之間架起一座橋梁。無(wú)論您擁有 Ruby 背景還是 Android 背景,您都應(yīng)該能夠明白setup_content 中發(fā)生的事。您正在創(chuàng)建一個(gè)垂直布局,將幾個(gè)小部件堆疊在一起。這些小部件包括文本,幾個(gè)用于選擇要預(yù)訂的魚(yú)類(lèi)種類(lèi)的單選按鈕,一個(gè)用于輸入數(shù)量的可編輯文本字段,以及一個(gè)用于下訂單的按鈕??梢允褂?Ruby 語(yǔ)法來(lái)配置您的小部件,而不是 Android 中通常使用的更繁瑣的 Java 語(yǔ)法。
設(shè)置每個(gè) radio_button 上的 id 屬性有好處,它向您提供一種簡(jiǎn)單方法,以便稍后查看選中了哪個(gè)按鈕。
Android 將自動(dòng)處理與單選按鈕和可編輯文本字段之間的所有用戶(hù)交互。唯一剩下的工作是定義如何處理 Place Order 按鈕,如清單 4 所示。
清單 4. 下訂單
- handle_click do |view|
- if view.text == "Place Order"
- count = @quantity.text
- food = @group.child_at(@group.checked_radio_button_id).\
- text.downcase
- order = Linguistics::EN::plural(food,count)
- SmsManager.default.send_text_message("4155551234", \
- nil, "Please send #{count} #{order}", nil, nil)
- finish
- end
- end
- nd
如果您以前編寫(xiě)過(guò) Android 應(yīng)用程序,您可能會(huì)注意到,您正在使用一種不同的范式來(lái)處理選擇。Android 開(kāi)發(fā)人員傾向于為每個(gè)可選項(xiàng)目編寫(xiě)一些獨(dú)特的單擊處理程序。但是,在 Ruboto 中,更簡(jiǎn)單的方法是為您的 Activity 創(chuàng)建一個(gè)全局單擊處理程序,在那里測(cè)試用戶(hù)單擊了哪個(gè)項(xiàng)目。
您提取用戶(hù)選擇的魚(yú)的數(shù)量和種類(lèi)。如果用戶(hù)沒(méi)有選中一個(gè)單選按鈕,Ruboto 將在內(nèi)部?jī)?yōu)雅地處理這個(gè)運(yùn)行時(shí)錯(cuò)誤。否則,您將把文本傳遞到 linguistics 庫(kù)并請(qǐng)求它為您創(chuàng)建適當(dāng)?shù)拿~形式。這個(gè)庫(kù)能處理不同的復(fù)數(shù)規(guī)則,因此它將生成 1 salmon、2 salmon、1 crab、2 crabs 之類(lèi)的值。它甚至能識(shí)別手寫(xiě)的數(shù)字,因此它還將生成 one lobster 和three lobsters 之類(lèi)的詞組。對(duì)于一行代碼來(lái)說(shuō),這是令人非常印象深刻的行為,展示了它利用現(xiàn)有腳本向您的應(yīng)用程序輕松添加功能的能力。
類(lèi)似地,發(fā)送一條 SMS 消息只需一行調(diào)用,調(diào)用一個(gè)方便的 Android 方法。Ruboto 允許您使用 Ruby 式語(yǔ)法調(diào)用這個(gè)方法;對(duì)等的 Java 代碼將是 SmsManager.getDefault().sendTextMessage()。您提供接收者的電話(huà)號(hào)碼和要發(fā)送的消息,并為可選參數(shù)傳遞 nil。如果您 正在一個(gè)設(shè)備上運(yùn)行并想實(shí)際發(fā)送一條 SMS 消息,可以替換為一個(gè)實(shí)際電話(huà)號(hào)碼。如果您想在模擬器中測(cè)試,則可以替換為模擬器的端口號(hào),比如 “5554”。
運(yùn)行腳本
Ruboto 最強(qiáng)大的一個(gè)方面是允許通過(guò)簡(jiǎn)單地加載一個(gè)已更新腳本來(lái)更改功能。即使您已經(jīng)完全更改了這個(gè)應(yīng)用程序的功能,也不需要重新構(gòu)建應(yīng)用程序或重新加載 APK。相反,只需在命令行輸入以下命令:
- $ rake update_scripts
這條命令將把 linguistics 腳本和您的新 fishmonger 腳本復(fù)制到模擬器或一個(gè)已連接設(shè)備。當(dāng)您重新啟動(dòng)應(yīng)用程序時(shí),將看到您的新屏幕,如圖 5 所示。
圖 5. Android 預(yù)訂頁(yè)面
如果您正在運(yùn)行一個(gè)非根設(shè)備(non-rooted device)或正在更改 Java 文件或 Android 清單文件,可以通過(guò)再次輸入 rake 安裝命令來(lái)加載更新。注意,即使是非根設(shè)備也可以實(shí)時(shí)更新它們的腳本;例如,您可以從 Internet 下載新腳本并在運(yùn)行時(shí)生成它們。固件限制僅適用于通過(guò)您的 USB 連接推送文件。
繼續(xù)試驗(yàn)這個(gè)應(yīng)用程序。當(dāng)您進(jìn)行了一個(gè)有效選擇并按下預(yù)訂按鈕后,屏幕將自動(dòng)關(guān)閉。如果您使用一個(gè)有效的接收者地址,他們將很快收到您的消息。圖 6 顯示了一個(gè)非常繁忙的海鮮店的最新訂單列表。
圖 6. 來(lái)自 Ruboto 腳本的標(biāo)準(zhǔn)化訂單
結(jié)束語(yǔ)
Ruboto 仍然是一個(gè)早期項(xiàng)目,但即使處于現(xiàn)在的狀態(tài),它已經(jīng)能提供一種非常靈活有用的方法來(lái)編寫(xiě)和分發(fā) Android 軟件。Ruboto 的成功歸功于 JRuby 和 Android 的優(yōu)勢(shì):JRuby 已經(jīng)完成了以 Java 語(yǔ)言編寫(xiě)一個(gè)功能齊備的 Ruby 解釋器的艱巨工作,Android 的 Dalvik 工具集提供了一種令人印象深刻的從標(biāo)準(zhǔn) Java 字節(jié)碼到它的自定義 Dalvik 字節(jié)碼的轉(zhuǎn)換。
如您所見(jiàn),Ruboto 腳本可能會(huì)非常短,但提供來(lái)自 Ruby 和 Android 的強(qiáng)大功能?;旌虾推ヅ?Ruby 腳本、Ruby 和 Java 語(yǔ)法以及 Android API 的能力向您提供了許多提高生產(chǎn)力的選項(xiàng)。
Ruboto 是位于客戶(hù)端和服務(wù)器兩端的開(kāi)發(fā)人員之間的一個(gè)有用橋梁。Android 開(kāi)發(fā)人員將欣賞它的反射功能,該功能向他們提供實(shí)時(shí)大幅更新應(yīng)用程序功能的能力。Ruby 開(kāi)發(fā)人員將擁有一種相當(dāng)便捷的方法來(lái)結(jié)合他們的腳本技術(shù)和移動(dòng)平臺(tái),利用現(xiàn)有 Ruby 代碼來(lái)創(chuàng)建新應(yīng)用程序。這兩類(lèi)開(kāi)發(fā)人員都將懷著極大興趣,密切關(guān)注這個(gè)項(xiàng)目的進(jìn)展。
本文標(biāo)題:Android+Ruby=Ruboto:能訪(fǎng)問(wèn)Android的簡(jiǎn)單腳本
網(wǎng)頁(yè)路徑:http://m.jiaoqi3.com/article/djoipcc.html


咨詢(xún)
建站咨詢(xún)
