免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1486 | 回复: 0
打印 上一主题 下一主题

Android工程中引用第三方jar包 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览
使用eclipse创建的android project,如果需要依赖3rd-part的jar包:
1.在修改project根目录下.classpath 文件,添加<classpathentry kind="lib" path="lib/3rd-part.jar"/>
2.右键工程:Build Path->Configure Build Path, Libraries标签,Add Library,然后...

但是如果3rd-part中含有resource文件(字体,图片之类),前面提到的两种方式引入jar所生成的APK的结构是不一样的,通过修改.classpath添加的依赖,eclipse除了会把jar编译到dex中去,还会把3rd-part的jar包中的resource文件提出来,放在APK包的跟目录下,这样的apk安装后运行是没有问题的。但是如果通过Add User Libraries的方式添加的依赖,编译出来的APK就不会被单独提出来,而android的resource是不能放在jar包中的,所有如果你的3rd-part中有这样的代码:LibClass.class.getResource("xxx.png"),程序在运行的时候就会找不到资源,字体资源也类似。

还有一种方式就是:如果你有3rd-part library的源码,可以通过创建一个android的library project(http://developer.android.com/guide/developing/projects/projects-cmdline.html#SettingUpLibraryProject),然后在你的project引用这个project,在你的APK打包的时候同样会把3rd-part资源打到apk中。

如果需要将3rd-part的jar加到android 源代码的编译系统中,可以在android.mk中加上
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
...
LOCAL_STATIC_JAVA_LIBRARIES := 3rd-part
...
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=
3rd-part:lib/3rd-part.jar

                   
include $(BUILD_MULTI_PREBUILT)


但是这样同样无法将resource文件打包到apk中,目前找到的解决办法就是把第三方的源码引入使用library project来引用。

继续研究eclipse的ADT是怎么做到资源文件的分离的...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP