如何建立windows下基於C語言的android開發?

馮仲平


回答這個問題之前,我先來帶大家看幾個名詞概念。

  • 什麼是SDK?

SDK(software development kit),顧名思義,也就是軟件開發工具包的意思!她包括特定軟件包、軟件框架、硬件平臺、以及操作系統等開發應用軟件的開發工具集合。那麼Android SDK,就是Android開發者工具包的意思。

  • 什麼是JNI?

JNI的全稱是Java Native Interface (我們把它叫做Java本地編程接口),它的存在是方便Java代碼和其他語言寫的代碼進行交互。

  • 什麼是NDK?

NDK(native development kit),我們姑且稱之為本地或者說原生開發工具包,因為Android本身是基於Linux的,所以從誕生一開始就是支持C/C++開發的,只是早期谷歌官方不支持,開發難度極大,直到有一天NDK出現。

那麼為什麼Android需要C語言進行開發?到底windows下如何基於C語言進行Android開發?可以純C開發嗎?

apk的java代碼很容易被反編譯,但是C/C++代碼反匯難度較大,而幾乎大部分的開源庫都是C/C++,並且C/C++的執行效率是要遠超過基於虛擬機的Java代碼的,並且可移植性能非常好,所以C/C++開發就應用而生,Google很顯然也發現了這一點。

說了這麼多你大概心裡有底了,也就是說你只需要在安裝NDK就可以很好的在Windows上進行Java開發了,它提供了一系列工具,幫助開發者快速開發C/C++動態庫,並能自動將so和java應用一起打包成apk文件,還集成了交叉編譯器,可以說非常方便。

但是NDK所提供的API非常有限,C 標準庫、標準數學庫、壓縮庫、Log 庫等,這就是目前能支持的庫。

即使Google曾多次表示要進一步完善NDK生態,並且表明要加強NDK的調試能力,但是很顯然這並不是Android的主流開發方式,至少目前還是Java,但是未來會是什麼語言?Go、Python、kotlin?我們不得而知,畢竟現在很多App都用JavaScript做Web App了。

所以原生C是難度很大了,不過混合開發還是比較常見的。


分享到:


相關文章: