1.第三方jar包的使用
如果在Java Build Path中使用Add External JARs這種方式,運行時會有找不到類的錯誤(我的上面有,如果你沒出現,恭喜你),上網查了幾種方式,我這邊運行通過的方式如下:
在項目中建個lib檔案夾,把需要的jar包複製進去,在 Java Build Path中使用 Add JARs ,選擇項目下的lib包中的jar檔案即可,發布apk檔案時會自動打包進去。
網上還有一種方式,在 Java Build Path 中使用 Add Library, 選擇 User Libaray -> 建立一個User Libaray的方式,這種我沒試,有通過的同志們說下。軟體開發
本人推薦項目建檔案夾的方式。
2. mina包的使用之日誌
我使用的是mina2.0.2,如果沒有特殊需求,使用mina-core-2.0.2核心包就可以了。
關鍵點在這裡:
mina中使用slf4j作為日誌架構(不知道slf4j的同志們請google下), 這個只是一個日誌架構,是沒有實現的,你需要一個具體的實現,比如說log4j(具體使用方法我就不說了,很簡單,實在不知道給我發站內信)。使用mina必須把slf4j的jar包也引入,那麼你也要引入一個實現日誌的包,在普通用戶端開發這個不是問題,但在android中,已經有了一個日誌實現,而且配合logcat,其功能是很強大的,那麼怎麼配合slf4j來使用呢?(ps:slf4j是必須的,mina要用到)
這裡就要感謝網路了,我在slf4j的官網居然發現有一個slf4j-android的jar包
http://www.slf4j.org/android/ 同志們可以去看看,(強烈推薦去看看)下載這個包,引入到項目中,注意啊,這個包是不能和slf4j-api包共存的,我的解決方式是只使用slf4j-android這個包,其餘的日誌相關的包都刪除,(其實別的日誌包也沒什麼用,我們有android提供的日誌類),這樣mina就不會報日誌類找不到的錯誤了,而且日誌都輸出到logcat,偵錯工具也方便。這方面我們要感謝slf4j,如果沒有這個實現,mina使用就麻煩了,我能想到的方式就只有更改mina原始碼,重新編譯了,當然你也可以自己提供日誌實作類別。
android的日誌類中有一個限制,tag不能超過23個字元(你不知道tag,我也不知道該怎麼說了...),slf4j也給解決了,官網上面有介紹。(再建議看下官網)
3. mina包的使用之NioSocketConnectortp-link
在android2.1中好像沒有問題,但在android2.2中會有Bad address family的異常,這個異常是由於IPv6引起的,這個bug已經在 http://code.google.com/p/android/issues/detail?id=9431 (同志們看看吧),android2.2不支援IPV6,在使用nio 時會有問題,有建議是使用io,可以解決,但我們如果一定要使用nio呢,解決方案如下:
設定系統屬性: System.setProperty("java.net.preferIPv6Addresses", "false"); 就這一行解決問題,有同志可能要問,在哪加啊?系統開始的地方加,比如說是service,在onCreate()中啟動mina前加上就行,activity中也一樣。