最近在某家公司做实习生,从事移植工作,公司要求将以前跑在linux老设备上的程序移植到android平台上。项目很大一部分是c++写的,所以需要用ndk把所有源代码编到android平台下,当然也包括所依赖的第三方库。第三方库还比较好说,因为boost,openssl,websocket这些库要么对android有很好的支持,要么有开源项目去辅助支持。所以主要工作还是编译源代码问题,代码量相当庞大。

因为在学校的时候很少做c++开发和编译工作,所以解决问题很困难,这几天就有一个很怪异的问题缠绕着我。

问题是这样的,由于保密措施,项目代码都是分离的,每个人都只有自己的一部分。所以我的同事需要用ndk编好他的代码和他依赖的第三方库,编程.a库,然后另一个同事再依赖前一个同事 的.a库和第三方库,这样一层一层..........最后我拿到这个模块的库再去编。


结果出问题了,在用jni去调这个库的时候:

cao,这是怎么回事?他说找不到这个符号,但打开.a文件,可以看到这个符号。于是就怀疑库是不是没引进来,问了下同事,同事说.a的库编译的时候其他库都会引进来。但看了看文件大小,模块的.a库只有7M,但那些第三方库却有几百M,很明显,没引进来。google了一下,是mk文件有问题。


最后一句include $(PREBUILT_STATIC_LIBRARY),预编译的模块不会出发构建过程。只是把预编译的共享库拷贝到$PROJECT/obj/local路径,静态库则是拷贝到$PROJECT/libs/并进行裁剪。

所以,如果我要编这个模块的话,要把每个同事所依赖的.a全部引进来。没错,全部。

测试通过,成功跑起。


更多相关文章

  1. Layout___模块重用之include布局整合
  2. 移动经分升级到 android4.x 版本后的一个bug与解决方案.
  3. Android(安卓)开发中踩过的坑之十一: 团队协作的坑
  4. eBook 功能模块二之设置模块
  5. 关于Android的Sensor驱动,不支持内核模块模式的驱动
  6. 【理论】【转】App工程结构搭建:几种常见Android代码架构分析
  7. Android(安卓)Library 工程实现模块复用 (代码及资源文件)
  8. Android(安卓)模块化、组件化、插件化及热修复,大集结篇。
  9. 手把手教你搭建自己的Java Web(Android)项目(SpringMVC + Mybatis

随机推荐

  1. Android开发中Android与网页(JavaScrip)t的
  2. Android开发错误——Android(安卓)Studio
  3. Android(安卓)Studio 报错小记
  4. Android(安卓)实现 选择文件对话框
  5. android SQLite
  6. 设置Android程序的默认安装位置
  7. android 获取 imei号码
  8. 2011.10.11——— android GestureDetect
  9. TabActivity的使用遇到的问题
  10. Android(安卓)手机震动 设置震动时间