lin20080410的专栏

从站在巨人的肩上,向成为巨人迈进... 互相学习!

编译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标准的动态链接库接口。

阅读更多
版权声明:笔记记录,互相学习,不足之处,欢迎指正! https://blog.csdn.net/lin20044140410/article/details/55519026
个人分类: android开发
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭