一不小心踏進Android開發: TPMini大眼睛使用PS3藍牙手柄(三)開發環境

這是一套連載文章,用以記錄大眼睛連接藍牙手柄的全過程。謹以此文獻給那一週我缺失的睡眠。

此文的性質相當於(公開的)個人日記,未經本人允許,請勿轉載。

 

上文說到,發現了另一條出路:linmctool。看起來這個東西比hidd更靠譜一些,因爲它是針對SixAxis所做的,它肯定包含了與SixAxis之間的通訊。

好吧,我需要試試它能不能用。

我翻遍了Google,都沒有找到它的Binary。只能自己編譯了。

我花費了大量的時間,研究如何編譯成二進制文件。經搜索發現,他們把直接在命令行中運行的二進制文件叫做“本地代碼”或“原生代碼”,原名爲“Native code”。原來如此。繼續谷歌。

首先我看了這兩篇:

Android原生(Native)C開發之八:Toolchain環境搭建篇

Android C native development using the NDK under Windows

看完這篇文章我才明白,Android開發真的很麻煩。不像Windows,做好軟件,裝個運行時,就行了。Android因爲運行在各種平臺,編譯環境很複雜。要”交叉編譯“才行。唉,我按照這篇文章搞了很久沒搞定,因爲google對各種 SDK NDK之類的更新太快了,有些地方和教程不一樣了,我很迷茫,又沒有人教。

後來看了這一篇:

Android C native development – take full control!

最後決定,還是用虛擬機跑Ubuntu吧,這個更可靠一些。

很重要的參考文章: ubuntu12.10安裝交叉編譯器arm-none-linux-gnueabi-gcc

費了很大的勁,終於安裝好了arm-none-linux-gnueabi-gcc。話說這名字真長!

接下來免不了要編譯個HelloWorld.c測試一下,push到大眼睛中運行了一下,很正常。

adb push hello /data/local/tmp
adb shell chmod 777 /data/local/tmp/hello
adb shell /data/local/tmp/hello

好,至此,幹活的工具有了。開始吧,拿來linmctool的源碼,按照說明去編譯:

arm-none-linux-gnueabi-gcc --std=gnu99 -Wall -DWITHOUT_USB linmctool-20110304.c -o linmctool 

由於我的藍牙早已配對成功,所以就帶上了 -DWITHOUT_USB 參數,減少編譯錯誤的可能性。但這樣仍然是出現了一堆錯誤,各種.h文件不匹配。從網上到處查找,才得以成功編譯。編譯好了,趕緊PUSH到大眼睛裏試試吧。

adb push linmctool /data/local/tmp
adb shell chmod 777 /data/local/tmp/linmctool
adb shell /data/local/tmp/linmctool

運行成功。按了一下SixAxis上的PS鍵,奇蹟終於出現了。屏幕上出現了一行行的按鍵狀態報告。雖然手柄上的指示燈還在閃爍,但它不會停下來了,按什麼鍵都有反應了!下一篇繼續興奮吧。

題外話,在很長一段時間,我都是用的虛擬機Ubuntu下的arm-none-linux-gnueabi-gcc來編譯。由於不會用VIM,在Ubuntu下編輯文字很累。我只好用上了局域網共享。真的是太累了。

 

直到最後,我才發現了有個更好的工具,可以直接在Windows下使用,它就是 CodeSourcery CodeBench Lite,它可以直接在Windows中運行並編譯出Android的本地代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章