编译java静态库,java共享库

把这段复制到app下的Android.mk的最后,可以编译出java共享库,这个.jar除了生成在\out\target\common\obj\JAVA_LIBRARIES这里,还会copy\out\target\product\***\system\framework下,

如果只是使用java静态库,可以include$(BUILD_STATIC_JAVA_LIBRARY),这样只会生成在\out\target\common\obj\JAVA_LIBRARIES

-------------------------- 

include $(CLEAR_VARS)

LOCAL_MODULE :=gallery2Camera

 

LOCAL_MODULE_TAGS :=optional

LOCAL_STATIC_JAVA_LIBRARIES:= android-support-v13

LOCAL_STATIC_JAVA_LIBRARIES+= com.android.gallery3d.common2

LOCAL_STATIC_JAVA_LIBRARIES+= xmp_toolkit

LOCAL_STATIC_JAVA_LIBRARIES+= mp4parser

 

prev_compiled_rs_files:= $(call all-renderscript-files-under, src)

LOCAL_RENDERSCRIPT_SKIP_INSTALL:= $(prev_compiled_rs_files)

LOCAL_SRC_FILES :=$(call all-java-files-under, src) $(prev_compiled_rs_files)

LOCAL_SRC_FILES +=$(call all-java-files-under, src_pd)

LOCAL_MULTILIB :=both

LOCAL_CERTIFICATE :=platform

LOCAL_SDK_VERSION :=current

LOCAL_JNI_SHARED_LIBRARIES:= libjni_eglfence libjni_filtershow_filters librsjni libjni_jpegstream

LOCAL_JAVA_LIBRARIES+= org.apache.http.legacy

include$(BUILD_JAVA_LIBRARY)


静态连接库的特点是会在程序的编译链接阶段就完成函数和变量的地址解析工作,并使之成为可执行程序中不可分割的一部分。这种处理手段在某种程度上可以有效地实现代码的重复利用,使得编写程序不需要每次都从零开始。但是它的缺点也是明显的,即可执行程序的体积会随着静态链接库的增加而不断增大。如果系统中有多个可执行程序都用到了同一个静态库A,按照静态链接的做法需要把A分别打包到所有程序中,这显然是一种资源浪费。

动态链接库有2个特点:

动态链接库不需要在编译时就打包到可执行程序中,而是等到后者在运行时再实现动态的加载和 重定位。

动态链接库在被加载到内存之后,操作系统需要为他执行动态连接操作,这里也可以称为“动态链接”,前面编译阶段的链接叫“静态链接”。静态链接中也会有重定位Relocation,只是跟动态链接中的重定位有差异。只要涉及多个文件之间的链接,通常都需要重定位,只是静态链接发生在编译阶段,而动态链接发生在运行阶段。

动态链接库的核心优势就是代码共享,不单是进程内的代码共享,还包括进程间的代码共享。


动态链接库显示调用的方法:

Java层,使用System.loadLibrary(String libName)和System.load(String pathName),前者只需要支出动态链接库的名称,系统负责在预先设置的路径中去查找并加载正确的so库;后者允许将动态链接库存储到任何程序有权限访问的地方,由pathName给出完整的加载路径。这两个函数的实现主题在libjavacore.so库中,这个库是Runtime在启动过程中通过LoadNativeLibrary来加载的。

Native层,使用dlopen,dlsym等linux标准的动态链接库接口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值