在NDK中使用C++代码,编译出来的so库太大,该怎么解决呢?

情癫的搁浅 2016-03-18 09:09:40
我在eclipse中使用NDK开发so库给android工程使用

因为需要使用到C++的STL库,所以我需要在编译的时候将stl库链接进来,我参照网上的方法,我的Android.mk为:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := ComOperate_tecsun
LOCAL_SRC_FILES := ComOperate_tecsun.cpp


LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)


Application.mk为:
APP_STL := stlport_shared


我使用的是动态连接stl库的方式,但是编译生成出来库里面有libComOperate_tecsun.so(37K)和libstlport_shared.so(370K),在java使用的时候需要
System.loadLibrary("stlport_shared");
System.loadLibrary("ComOperate_tecsun");
才能使用,现在的问题老板觉得libstlport_shared.so占用空间太大了,请问有什么方法可以解决使用stl,然后编译出来的so库又不太大呢?(我发现andoird系统文件下/system/lib/libstlport.so存在这个库,不知道能不能使用这个系统库,或者说该怎么使用呢?)希望大神能提供帮助,谢谢
...全文
987 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
情癫的搁浅 2016-03-21
  • 打赏
  • 举报
回复
引用 6 楼 dalor 的回复:
的确蛮大的。给你个链接,你可以参考设置一下LOCAL_CFLAGS。 http://www.cnblogs.com/hrlnw/p/3653695.html
我试了这些编译的指令,编译出来的so库确实小了些,但是也只是小了80多K,话说NDK主流的使用C++的编译方式要怎么编译才能使so库变小呢?
  • 打赏
  • 举报
回复
引用 3 楼 littlebrain4solving 的回复:
最好不要用静态编译,有些依赖的so文件本身android就已经存在了,你用动态编译试试。
不好意思,刚才没看仔细。
  • 打赏
  • 举报
回复
最好不要用静态编译,有些依赖的so文件本身android就已经存在了,你用动态编译试试。
情癫的搁浅 2016-03-18
  • 打赏
  • 举报
回复
补充说明下用静态链接的方式APP_STL := stlport_shared生成的so库只有libComOperate_tecsun.so(301K),一样很大
情癫的搁浅 2016-03-18
  • 打赏
  • 举报
回复
没人,自己顶一下
开发者_android 2016-03-18
  • 打赏
  • 举报
回复
的确蛮大的。给你个链接,你可以参考设置一下LOCAL_CFLAGS。 http://www.cnblogs.com/hrlnw/p/3653695.html
tcmakebest 2016-03-18
  • 打赏
  • 举报
回复
几百K不算大啊,现在有些APP都几十M了.

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧