工作學習筆記——Alljoyn技術、初試Android開發

七八個Android門外漢用了一個月時間,做了3個wifi聯網的Android小遊戲出來,體會了久違的加班的苦與樂。


聯網使用的是高通推的AllJoyn技術(一種點對點近場wifi、藍牙通信方式)。優點我們看來有二:1.提供直接函數調用的通信方式(一端調用另一端上定義的一個函數),省的byte數組轉來轉去;2.提供成熟的session機制,功能和安全性都有保證。缺點是接口設計的不太有善,想要整套系統跑起來,要建一些bus、proxy這樣的比較抽象的東西。(第一次接觸網絡開發,這次實際編寫alljoyn通信部分代碼的也不是我,這個優缺點是大家聊天時總結出來的)。這個技術做些聯網遊戲還是不錯的。


客戶端部分就是常規的Android遊戲開發。時間比較緊,我們是把公司之前的幾個j2me遊戲移植過去的。這裏推薦一下Lgame這個引擎。如果不考慮提升視覺效果和手感的話,一個j2me遊戲要在Android手機上跑起來,使用它至多只需要半個小時。這是因爲Lgame提供了一套j2me接口,代碼完全不用改:)


即使只是移植遊戲,因爲大家都是第一次接觸Android開發,甚至第一次正式寫Java代碼、第一次正式使用eclipse,在開發環境搭建、部署程序、Android設備特性上還是遇到了不少問題。這裏記錄一下。

1.使用eclipse無法啓動應用;run configuration裏看不到程序的main類。這個有可能是AndroidManifest.xml文件裏沒有定義Activity引起的。

2.運行時出現Permission Deny。可能是AndroidManifest.xml文件裏沒有加權限,或者本該加user permission卻加成了Android:Permission。

3.使用系統接口總是不能正確得到屏幕寬高的像素值。看Android支持多屏幕機制這篇文章。在AndroidManifest.xml里加上那幾個屏幕支持就好了。

4.修改手機進程內存限制。先要root手機,然後修改/system/build.prop文件的heapsize的值。具體操作命令見這篇文章

5.查看進程內存佔用,adb shell dumpsys meminfo 包名或者進程號。stack overflow上有一篇詳細解釋

6.出現ANR(系統忙、無法響應)錯誤時檢查哪個進程出現問題。查看/data/anr/trace.txt文件


有很多不明白的問題,暫時沒有時間細究了,也記錄一下

1.Android的屏幕適配方式

2.Android一個進程可用的內存限制到底包不包括native內存。通過上面寫的內存查看命令來看,應該包括,可是網上和點心os的工程師又說不包括,要不哪些大型遊戲都沒法寫了。

3.垃圾回收貌似不太好使(我第一次正式寫java程序)。程序跑幾次就報out of memory。最後老老實實像c++那樣用完立刻釋放纔好使。


雖然開發Android遊戲的時間很短,也還是感到了Android系統的吸引力,我們幾個程序員都想繼續學習Android開發。比起BREW來,有太多新鮮的東西可以學習研究。可惜公司有安排,接下來又要整一段時間ios了。box2d、opengl es,還有好多新東西要學習啊。


發佈了56 篇原創文章 · 獲贊 26 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章