安卓下C/C++开发终结版(移植开源库,Linux交叉编译android动态库,引用第三方库)

    知其然也要知其所以然,本文纯属务虚,后面将专门开两篇总结具体的操作。

    在研发PAAS 微服务架构时,需要给移动终端写一个SDK,供开发者使用该SDK访问云服务。

    由于安卓主推java开发,如果写一套java的SDK,不仅费时费事,而且后面还得写苹果手机的SDK,这样不仅开发工作量超大,而且后面多平台SDK维护也是非常头疼的事情。由于在linux下已经有一套SDK,如果能将这套SDK移植到安卓下,可以省下大量的工作量,于是进行了可行性分析:

    首先,很多开源软件比如ffmpeg, openssl等这些开源软件,安卓里面总有人用的上吧,另外一些游戏引擎,应该也是C++开发的,于是肯定应该有办法搞定,并且我的SDK中需要用到的开源项目也不多,目前就OPENSSL一个开源项目需要移植,应该是可以搞定。

    虽说安卓也是linux内核,但是直接将centos等linux的库直接给安卓用肯定不行,因为安装为arm架构,而linux是X86架构,编译器GCC是X86架构编译器,因此首先得搞定编译器。我们在linux用GCC编译出来的库依赖的是glibc,而android下用的是Bionic Libc,如果我们的编译脚本不想做太大改动的话,就需要一套android版的glibc,经过百度后发现google的NDK还真提供一套这样的工具,叫做独立工具链(standalone-toolchain),有了这个东西,我的linux的编译脚本都基本不需要修改了。

    分析到这,就开始我的征程,本人虽然搞C++有着十几年的经验,但是安卓开发还是一个小白,就连开发环境都没有搭建过,在这过程中遇到很多的坑。经过一周的艰苦奋斗,还有些问题没有彻底搞定,目前只能使用规避的办法规避过去。

   好了,废话不多说,请看后面两篇干货。

使用NDK独立工具链移植开源项目到andriod中(以openssl为例)

android studio中使用第三方so库(终结版)

猜你喜欢

转载自blog.csdn.net/lin_cloud211/article/details/82628797