android -------- NDK 入门指南
NDK介紹
?
原生開發工具包 (NDK) 是一組可讓您在 Android 應用中利用 C 和 C++ 代碼的工具。 可用以從您自己的源代碼構建,或者利用現有的預構建庫。
?
NDK 不適用于大多數初學的 Android 編程者,對許多類型的 Android 應用沒什么價值。 因為它不可避免地會增加開發過程的復雜性,所以通常不值得使用。 但如果您需要執行以下操作,它可能很有用:
- 從設備獲取卓越性能以用于計算密集型應用,例如游戲或物理模擬。
- 重復使用您自己或其他開發者的 C 或 C++ 庫。
?
?
NDK 的工作方式
Android NDK 是一組允許您將 C 或 C++(“原生代碼”)嵌入到 Android 應用中的工具。 能夠在 Android 應用中使用原生代碼對于想執行以下一項或多項操作的開發者特別有用:
- 在平臺之間移植其應用。
- 重復使用現有庫,或者提供其自己的庫供重復使用。
- 在某些情況下提高性能,特別是像游戲這種計算密集型應用。
?
?
特點
?
?
JNI與NDK的關系
NDK可以為我們生成了C/C++的動態鏈接庫,JNI是java和C/C++溝通的接口,兩者與android沒有半毛錢關系,只因為安卓是java程序語言開發,然后通過JNI又能與C/C++溝通,所以我們可以使用NDK+JNI來實現“Java+C”的開發方式。
為什么要NDK開發
1. 項目需要調用底層的一些C/C++的一些東西(java無法直接訪問到操作系統底層(如系統硬件等)),或者已經在C/C++環境下實現了功能代碼(大部分現存的開源庫都是用C/C++代碼編寫的。),直接使用即可。NDK開發常用于驅動開發、無線熱點共享、數學運算、實時渲染的游戲、音視頻處理、文件壓縮、人臉識別、圖片處理等。
2. 為了效率更加高效些。將要求高性能的應用邏輯使用C/C++開發,從而提高應用程序的執行效率。但是C/C++代碼雖然是高效的,在java與C/C++相互調用時卻增大了開銷;
3. 基于安全性的考慮。防止代碼被反編譯,為了安全起見,使用C/C++語言來編寫重要的部分以增大系統的安全性,最后生成so庫(用過第三方庫的應該都不陌生)便于給人提供方便。(任何有效的代碼混淆對于會smail語法反編譯你apk是分分鐘的事,即使你加殼也不能幸免高手的攻擊)
4. 便于移植。用C/C++寫得庫可以方便在其他的嵌入式平臺上再次使用。
?
?
?
?
NDK下載地址:
https://developer.android.google.cn/ndk/downloads/index.html
?
?
?
Android 谷歌官方文檔
?
https://developer.android.google.cn/ndk/guides/index.html
?
總結
以上是生活随笔為你收集整理的android -------- NDK 入门指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传2020年苹果Mac将用自制芯片
- 下一篇: 两个简单的动态规划问题,0-1背包和最大