給自己的android掃盲文 - 1

來源:互聯網
上載者:User

標籤:

1. 你得知道,android開發打一開始就是java的事,沒其它語言什麼事情,就是說google提供的android sdk中的api都是java的api
2. 至於強大的跨平台語言,你懂的,非c/c++莫屬,說java是跨平台,那是扯淡,沒java虛擬機器看你能跑java不, 而c/c++語言是將程式直接編譯成本地機器碼,這與java這種語言是完全不一樣的
那麼問題來了,我開發遊戲要使用跨平台的語言比如說C++,但是android是用java開發的,我用C++寫的代碼沒法在android下面編譯,運行.  將C++程式員拒之門外, google不會做這麼蠢的事情

好,第一個問題就是,如何在android下面編譯並運行C++寫的代碼呢
答案就是:在android下面使用ndk編譯c/c++

在這裡有一些東西要我要給自己科普一下
在java的平台上有一個叫jni的東西,它的功能就是允許java代碼與其它語言寫的代碼進行互動
在NDK r5之前,你想在android下面使用c/c++進行開發,只能寫成動態連結程式庫,然後在java中以jni來調用這些庫
NDK r5之後,你就可以使用純C/C++來開發android程式了,這是2011年的事情了
到今天2015年初,有一個問題很多人都搞不懂,為什麼在android上面非要搞一個jvm呢,本來嵌入式開發cpu和記憶體都是很寶貴的資源,而在這方面的控制C/C++做的比JAVA好
至於原因,個人覺得吧,現在硬體廠商實在是太多了,你在PC上面開發程式一般都是跑在同種作業系統下面的,而作業系統屏蔽了這些硬體之間的差異,但是android並沒有在系統這一層級屏蔽硬體之間的差異,而是通過JVM來屏蔽硬體之間的差異,也就是說在android系統上面再搞一個jvm系統,也難怪它有一點點慢了
不過最新的android系統已經支援直接使用C/C++編譯成本地語言運行,而不在jvm上面運行了,我覺得android還是很有搞頭的

好了,現在回頭,說說NDK, 前面說了在android使用NDK來將C++代碼編譯成庫,然後由java通過jni來調用這些庫
那什麼是NDK呢,google官方給的解釋就是SDK前面加上Native,那麼叫NSDK咯,他想了想,還是叫NDK比較好,這隻是稱謂而已
那什麼是NDK呢,它是一套工具集,允許你用C++語言實現應用的一部分

OK, 我們來建立一個android項目
所有的本地代碼都會儲存到一個叫jni的檔案夾中,開啟它來看看吧
有一個Android.mk 檔案, 它是用來構建項目的
有一個Application.mk 檔案, 它是用來儲存編譯參數的(雖然它不是必須的)
再建立個ndk-build檔案來顯示編譯過程(同樣也不是必須的)

參考文檔
http://www.importnew.com/8038.html
http://www.importnew.com/8052.html
http://www.cnblogs.com/qq78292959/category/304331.html        <這個是android ndk翻譯系列>

給自己的android掃盲文 - 1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.