使用mono框架開發android程序,第一步當然是構建開發環境,嚴格意義上說是使用 mono for android開發android程序。
參考Mono for Android安裝配置破解 mono for android官網上有一個一鍵安裝包,但是安裝不是很方便。
整個環境涉及到很多組件,像搭建lamp環境一樣,這些都可以自己安裝完成。因為剛開始都涉及到破解版本問題,所以建議大家單個安裝。 組件的功能需要搞清楚,有些還是很容易混淆的。
mono是一個開源項目,而mono for android是一個運行時和開發堆棧。
主要是JDK,AndroidSDK相關,如果不熟悉 可以參考這篇文章 體驗phonegap3.0
windows下使用mono環境 需要一個MONO 在windows下的運行時
針對vs的mono開發工具是作為一個插件添加到vs的工具。
mono有單獨的開發工具MonoDevelop 官網,但是Xamarin提供的IDE名字叫XamarinStudio,實際上是MonoStudio4.0后改的名字。Xamarin Studio 下載地址
模擬器
在IDE中開發應用需要借助設備,設備分模擬設備和真機。使用模擬器調試的整個過程就是把程序安裝到模擬中,運行程序,在運行的過程中調試。根據我的測試,當那你的程序發生改變時, IDE會自動部署 安裝,app到設備上,如果之前存在的安裝,會先卸載。
在Android環境中, adb.exe 工具用於直接操作管理android模擬器或者真實的andriod設備(手機).全稱Android Debug Bridge
它的主要功能有:
* 運行設備的shell(命令行)
* 管理模擬器或設備的端口映射
* 計算機和設備之間上傳/下載文件
* 將本地apk軟件安裝至模擬器或android設備
需要注意的是Mono環境安裝不順利,好多問題是因為android sdk安裝有問題,比如環境變量設置不正確,版本不一致,安裝不完整等。
而對於adb,最新的SDK內部有一個調整 The adb tool has moved to platform-tools from tools directory
ADB是一個客戶端-服務器端程序, 其中客戶端是你用來操作的電腦, 服務器端是android設備..
先說安裝方法, 電腦上需要安裝客戶端. 客戶端包含在sdk里. 設備上不需要安裝, 只需要在手機上打開選項設置-應用程序-USB調試(4.0:設備-開發人員選項)
adb 有各個系統的版本的,Liunx,Mac,Windows,根據你自己的操作系統來選擇要下載的Android SDK就可以使用adb命令了.
adb工具中比較實用的幾個命令
查看設備 adb devices
在設備管理中建立虛擬設備后,通過 adb devices查看當前連接的設備, 連接到計算機的android設備或者模擬器將會列出顯示
啟動和關閉 adb
adb start-server
adb kill-server
遇到的問題:
模擬器
1 使用編譯器時遇到一個問題,對於模擬器設備,設備列表里總是沒有設備
新建並刷新也不會有。之后我安裝了BlueStacks,顯示有所變化,BlueStacks是一個很好用的模擬器調試工具,稍后我會寫一篇博文專門記錄。
其實設備列表里有沒有設備無所謂了,點開新建虛擬設備,你新建過的設備都會列在那里,直接選擇啟動即可
應用部署
應用安裝到模擬器出現錯誤
Deployment failed. FastDev directory creation failed.
解決方法:
如下圖,關閉fast deloyment
Mono架構支持設置
編譯部署提示架構不支持相關的錯誤,可以嘗試從以下幾個方面解決
Android 工程設置 支持多個平台
為什么會出現架構支持的問題,因為android需要匹配不同架構的cpu,在新建虛擬設備時,如下圖 你可以觀察到每個虛擬設備所支持的平台。
其實AndroidSdk 中提供了專門針對平台的包,可以按需求下載。
ListView 內置視圖不出現
問題:沒有顯示系統默認的ListView 內置資源視圖
對於繼承ListActivity 的Activity,使用ListView顯示數據,可以利用默認的Androidn內置資源Android.Resource.Layout.SimpleListItem1布局視圖,起初我根本找不到這個引用,最后發現是項目的命名空間是 Mono.Android,這會造成Android的命名空間沖突,默認的內置資源都不會出現
string[] items = { }; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); try { base.OnCreate (bundle); items = new string[]{ "1", "2", "3", "4" }; this.ListAdapter = new ArrayAdapter<string> (this, Android.Resource.Layout.SimpleListItem1, items); } catch (Exception ex) { Toast.MakeText (this, "發生異常:"+ex.Message,ToastLength.Long).Show (); }; }
參考
Mono for Android 4.2.5
http://www.51mono.com/
mono環境官方網站下載地址
MVVM開發模式
ADB命令詳解
Xamarin Mono For Android 4.10.01068