首頁>Club>
我問的是IDE、API說明書、開發包、除錯環境、釋出工具之類的內容,不是針對語法提問。
6
回覆列表
  • 1 # EmacserVimer

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

    什麼是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是難度很大了,不過混合開發還是比較常見的。

  • 中秋節和大豐收的關聯?
  • 沒有蚯蚓和紅蟲怎麼在急水中釣魚?