如何建立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是难度很大了,不过混合开发还是比较常见的。


分享到:


相關文章: